首页 > 解决方案 > 使用 Python 和 Boto 3 在同一存储桶中复制 S3 对象

问题描述

我正在尝试将同一存储桶一个目录中的对象复制到另一个子目录。

方法一:

 s3 = boto3.resource('s3')
copy_source = {
    'Bucket': 'MY BUCKET NAME',
    'Key': str(source)
}
extra_args = {
    'ACL': 'public-read'
}
s3.meta.client.copy(copy_source, 'MY BUCKET NAME', str(destination), extra_args)

上面的代码引发访问被拒绝错误。

方法二:

"""
S3 delete objects
"""
s3_client = boto3.client('s3')
BUCKET = 'MY BUCKET NAME'
PREFIX = str(object)
response = s3_client.list_objects_v2(Bucket=BUCKET, Prefix=PREFIX)
for object in response['Contents']:
    print('Deleting', object['Key'])
    s3_client.delete_object(Bucket=BUCKET, Key=object['Key'])

这个用于删除 s3 对象。我决定先实现复制功能,然后是第二个成功的删除方法。如何复制 S3 Same Bucket 中的对象?

标签: python-3.xamazon-s3boto3

解决方案


推荐阅读