将嵌套的Amazon S3文件夹复制到扁平文件夹中



长话短说,我们有文档存储像这样的/accounts/account-abc/docs/uuid.pdf,这是相当多余的。我们想要的是docs/uuid.pdf。还有很多其他关于抄袭的帖子,但它们都是单一的。我需要这样的东西(这显然是错误的):

aws s3 cp s3://accounts/*/docs s3://docs/  --recursive ---include "*"

我是否需要编写自定义脚本来完成上述操作?

这是一个Python脚本,将文件从给定的SOURCE_PATH复制到TARGET_PATH,删除所有子文件夹:

import boto3
SOURCE_BUCKET = 'source-bucket'
SOURCE_PATH = 'accounts/'
TARGET_BUCKET = 'target-bucket'
TARGET_PATH = 'docs/'
s3_resource = boto3.resource('s3')
bucket = s3_resource.Bucket(SOURCE_BUCKET)
for object in bucket.objects.filter(Prefix=SOURCE_PATH):
target_key = object.key[object.key.rfind('/')+1:]
print('Copying', target_key)
s3_resource.Object(TARGET_BUCKET, TARGET_PATH + target_key).copy({'Bucket':SOURCE_BUCKET, 'Key': object.key})
# Optional, to delete source object:
# object.delete()

如果您只希望从包含docs子目录的SOURCE_PATH复制(基于您的示例),则可能需要修改它。

相关内容

  • 没有找到相关文章

最新更新