将文件从一个存储桶移动到另一个存储桶中的文件夹

时间:2020-02-26 06:09:00

标签: python-3.x amazon-web-services amazon-s3 pyspark boto3

我是boto3的新手,能够将文件从一个存储桶移动到另一个存储桶,但是,我需要将文件移动到另一个存储桶的文件夹内

2 个答案:

答案 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()