如何将对象从一个存储桶复制到另一个存储桶

时间:2021-06-21 07:04:05

标签: python amazon-web-services amazon-s3 boto3

我一直在尝试将对象从一个存储桶复制到另一个存储桶

e.g. bucket1/sample.jpgbucket2/some_dynamic_folder/copied_sample.jpg

这里的some_dynamic_folder是,如果它已经存在,它应该复制它下面的对象,如果没有它应该创建然后复制

我尝试过如下:

def copy_to_bucket(bucket_from_name, img_url, conventional_folder_name):
    try:
        file_name = img_url.split('/')[-1]  # to get name of image
        response = S3.copy_object(      # S3 has s3 client config
            Bucket= 'sample_bucket1' ,
            CopySource='/' + sample_bucket2 + '/' + file_name,
            Key= conventional_folder_name + '/' + file_name ,  # create a folder and copy there 
        )
        return response
    except Exception as error:
        return None

我的错误是:Boto3 copy_object "No Such Key".................

很少有图片有空格,阅读它可能会导致问题,因此使用 urlparsehere in the GIT hub issue mentioned this is not possible 替换空格

非常感谢任何指导链接或任何其他解决方法或替代方法来完成这项工作...... TIA

1 个答案:

答案 0 :(得分:1)

CopySource 前面不应有斜线 (/)。

格式为:bucket-name/path/object-name

此外,BucketKey目的地。源存储桶和密钥在 CopySource 中提供。