如何使用python不管文件密钥如何从S3存储桶下载所有文件

时间:2018-10-30 14:12:58

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

我正在做一个自动化工作,我需要从S3存储桶中的文件夹下载所有文件,而不管文件名如何。我了解在python中使用boto3可以下载以下文件:

s3BucketObj = boto3.client('s3', region_name=awsRegion, aws_access_key_id=s3AccessKey, aws_secret_access_key=s3SecretKey)
s3BucketObj.download_file(bucketName, "abc.json", "/tmp/abc.json")

但是我当时试图下载所有文件,而不管以这种方式指定什么文件名:

s3BucketObj.download_file(bucketName, "test/*.json", "/test/")

我知道上面的语法可能是完全错误的,但是有一种简单的方法吗?

我确实找到了一个有助于解决问题的线程,但看起来有点复杂:Boto3 to download all files from a S3 Bucket

1 个答案:

答案 0 :(得分:0)

没有对Amazon S3的API调用,可以下载多个文件。

最简单的方法是使用AWS Command-Line Interface (CLI),它具有aws s3 cp --recursiveaws s3 sync命令。它将为您做任何事情。

如果您选择自己编程,那么Boto3 to download all files from a S3 Bucket是一种不错的选择。这是因为您需要做几件事:

  • 遍历每个对象(没有S3 API可以复制多个文件)
  • 创建本地目录(如果不存在)
  • 将对象下载到适当的本地目录

如果您不希望重现目录结构(例如,如果所有对象都在同一路径中),则可以简化该任务。在这种情况下,您可以简单地遍历对象并将每个对象下载到同一目录。