Boto3 S3 cp从一个区域递归到另一个区域



我正在寻找一种通过python脚本从一个区域的S3桶复制到另一个不同区域的S3桶的方法。

我可以使用AWS CLI使用:

aws s3 cp source-bucket  target-bucket --recursive --source-region region1 --region region2 

然而,我想看看是否有可能在python脚本中使用boto3。

我所研究的似乎适用于使用boto3.resourceresource.meta.cleint.copy的同一区域

Amazon S3一次只能"复制"一个对象。

当您使用AWS CLI命令时,它首先获取源桶中的对象列表,然后为每个要复制的对象调用copy_object()一次(它使用多线程同时进行多个复制)。

您可以编写自己的python脚本做同样的事情。(实际上,AWS CLI就是一个Python程序!)您的代码还需要调用list_objects_v2(),然后为每个要复制的对象调用copy_object()

如果桶位于不同的区域,则将命令发送到目标区域,引用源区域,例如:

s3_client = boto3.client('s3', region_name='destination-region-id)
response = s3_client.copy_object(Bucket=..., Key=..., CopySource={'Bucket': 'source-bucket', 'Key': 'source-key'})

相关内容

最新更新