我一直在尝试将对象从一个存储桶复制到另一个存储桶
e.g. bucket1/sample.jpg
到 bucket2/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".................
很少有图片有空格,阅读它可能会导致问题,因此使用 urlparse
和 here in the GIT hub issue mentioned this is not possible 替换空格
非常感谢任何指导链接或任何其他解决方法或替代方法来完成这项工作...... TIA
答案 0 :(得分:1)
CopySource
前面不应有斜线 (/
)。
格式为:bucket-name/path/object-name
此外,Bucket
和 Key
是目的地。源存储桶和密钥在 CopySource
中提供。