我正在尝试使用 python boto3 重命名我的 s3 存储桶中的文件,但我无法清楚地理解这些参数。有人可以帮我吗?
我的计划是将对象复制到新对象,然后删除实际对象。
我在这里发现了类似的问题,但我需要使用 boto3 的解决方案。
我正在尝试使用 python boto3 重命名我的 s3 存储桶中的文件,但我无法清楚地理解这些参数。有人可以帮我吗?
我的计划是将对象复制到新对象,然后删除实际对象。
我在这里发现了类似的问题,但我需要使用 boto3 的解决方案。
我找到了另一个解决方案
s3 = boto3.resource('s3')
s3.Object('my_bucket','new_file_key').copy_from(CopySource='my_bucket/old_file_key')
s3.Object('my_bucket','old_file_key').delete()
您无法在 S3 中重命名对象,因此如您所指出的,您需要将其复制为新名称,然后删除旧名称:
client.copy_object(Bucket="BucketName", CopySource="BucketName/OriginalName", Key="NewName")
client.delete_object(Bucket="BucketName", Key="OriginalName")
以下示例来自更新的 Boto3 文档中的copy()方法,该方法也适用于 copy_object() 并且现在似乎是必需的语法:
copy_source = {'Bucket': 'source__bucket', 'Key': 'my_folder/my_file'}
s3.copy_object(CopySource = copy_source, Bucket = 'dest_bucket', Key = 'new_folder/my_file')
s3.delete_object(Bucket = 'source_bucket', Key = 'my_folder/my_file')
上面链接的文档中的注释:
CopySource (dict) -- 源存储桶的名称、源对象的键名和源对象的可选版本 ID。字典格式为:{'Bucket': 'bucket', 'Key': 'key', 'VersionId': 'id'}。请注意,VersionId 键是可选的,可以省略。