要使用AWS S3预签名URL来批量保存JSON文件,您可以按照以下步骤进行操作:
安装AWS SDK for Python(Boto3):
pip install boto3
导入所需的模块:
import boto3
import json
import datetime
import os
配置AWS密钥和存储桶名称:
access_key = 'your_access_key'
secret_key = 'your_secret_key'
bucket_name = 'your_bucket_name'
创建S3客户端:
s3_client = boto3.client('s3', aws_access_key_id=access_key, aws_secret_access_key=secret_key)
定义一个函数来生成预签名URL:
def generate_presigned_url(bucket, key):
url = s3_client.generate_presigned_url(
ClientMethod='put_object',
Params={
'Bucket': bucket,
'Key': key,
'ContentType': 'application/json'
},
ExpiresIn=3600 # URL的有效期限,单位为秒
)
return url
读取JSON文件并批量保存到S3:
def save_json_to_s3(file_path, bucket_name):
with open(file_path, 'r') as f:
data = json.load(f)
for item in data:
# 生成唯一的文件名
file_name = f"{datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.json"
# 生成预签名URL
url = generate_presigned_url(bucket_name, file_name)
# 将JSON文件上传到S3
s3_client.upload_fileobj(f, bucket_name, file_name)
print(f"File {file_name} saved to S3 with URL: {url}")
调用函数保存JSON文件到S3:
save_json_to_s3('your_json_file_path.json', bucket_name)
请确保替换代码中的your_access_key、your_secret_key和your_bucket_name为您的AWS访问密钥和存储桶名称。