以下是使用AWS S3预签名URL来共享zip切片的解决方案的代码示例。
import boto3
import zipfile
# 创建S3客户端
s3 = boto3.client('s3')
# 定义S3存储桶名称和zip文件名称
bucket_name = 'your_bucket_name'
zip_file_key = 'your_zip_file_key.zip'
# 创建zip切片
def create_zip_slices():
# 创建一个新的zip文件
with zipfile.ZipFile('slices.zip', 'w') as zip_file:
# 添加切片到zip文件
for i in range(10):
zip_file.write(f'slice{i}.txt')
# 上传zip切片到S3存储桶
def upload_slices_to_s3():
# 创建预签名URL的过期时间(单位:秒)
expiration = 3600
# 上传每个切片到S3存储桶
for i in range(10):
# 生成用于上传的预签名URL
presigned_url = s3.generate_presigned_url(
ClientMethod='put_object',
Params={
'Bucket': bucket_name,
'Key': f'slices/slice{i}.txt',
'ContentType': 'application/octet-stream'
},
ExpiresIn=expiration
)
# 使用生成的预签名URL上传切片到S3存储桶
with open(f'slice{i}.txt', 'rb') as file:
requests.put(presigned_url, data=file)
print(f'Slice {i} uploaded successfully')
# 生成用于下载zip切片的预签名URL
def generate_download_url():
# 生成用于下载zip切片的预签名URL
presigned_url = s3.generate_presigned_url(
ClientMethod='get_object',
Params={
'Bucket': bucket_name,
'Key': zip_file_key
},
ExpiresIn=expiration
)
print('Download URL:', presigned_url)
# 创建zip切片
create_zip_slices()
# 上传zip切片到S3存储桶
upload_slices_to_s3()
# 生成用于下载zip切片的预签名URL
generate_download_url()
请确保在运行此代码之前已安装boto3
和requests
库,并将your_bucket_name
和your_zip_file_key.zip
替换为实际的存储桶名称和zip文件键。