使用Python boto3将S3存储桶内容复制到其他存储桶
可直接运行的S3跨桶复制Python实现
不少公开的S3跨桶复制示例代码都存在必要配置缺失的问题,实际运行时容易触发参数、权限类报错。以下是经过多轮调试验证、补全了所有必填配置的稳定版本,替换对应参数后即可直接运行:
- 将代码中的
bucketab替换为你的源存储桶名称 - 将代码中的
bucketbc1替换为你的目标存储桶名称 - 运行前请确保执行环境已经配置好对应权限的AWS凭证:需要拥有源存储桶的读权限、目标存储桶的写权限
import boto3 # 拉取源存储桶下所有对象的Key s3_client = boto3.client('s3') object_keys = [] for obj in s3_client.list_objects_v2(Bucket='bucketab')['Contents']: object_keys.append(obj['Key']) # 逐对象执行跨桶复制 s3_resource = boto3.resource('s3') target_bucket = s3_resource.Bucket('bucketbc1') for key in object_keys: copy_source = { 'Bucket': 'bucketab', 'Key': key } target_bucket.copy(copy_source, key)
实用提示:
list_objects_v2接口单次最多返回1000个对象,如果你的源桶内对象总数超过1000,需要额外加分页逻辑拉取全量对象,否则会出现复制不全的问题。
内容的提问来源于stack exchange,提问作者Mohammad Jaleel Ahmed
相关产品推荐
相关产品推荐

