我是boto3的新手,能够将文件从一个存储桶移动到另一个存储桶,但是,我需要将文件移动到另一个存储桶的文件夹内
答案 0 :(得分:2)
Amazon S3中没有“ move”命令。相反,您将需要:
copy_object()
将对象复制到新的Key
(包括对象的完整路径)delete_object()
副本的目的地可以是相同的存储桶,也可以是不同的存储桶。
文件夹实际上并不存在,因此您可以将对象复制到任何路径,而无需先创建文件夹。
如果您不需要使用boto3,则更简单的方法是使用AWS Command-Line Interface (CLI):
aws s3 mv s3://bucket1/foo/object.txt s3://bucket2/bar/object.txt
您甚至可以移动整个“文件夹”:
aws s3 mv s3://bucket1/foo s3://bucket2/ --recursive
答案 1 :(得分:1)
使用boto3,这非常简单。如docs中所述:
import boto3
s3 = boto3.resource('s3')
copy_source = {
'Bucket': 'mybucket',
'Key': 'mykey'
}
s3.meta.client.copy(copy_source, 'otherbucket', 'otherkey')
将文件从一个存储桶复制到另一个存储桶之后,可以将其删除:
obj = s3.Object('bucket_name', 'key')
obj.delete()