如何使用Python下载S3存储桶中所有文件,而不考虑文件键?

3

我正在开发一个自动化程序,需要从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从S3 Bucket下载所有文件

1个回答

3

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

最简单的方法是使用AWS命令行界面(CLI),它具有aws s3 cp --recursiveaws s3 sync命令。它会为您完成所有操作。

如果您选择自己编程,则使用Boto3从S3 Bucket下载所有文件是一个不错的选择。这是因为您需要完成以下几个步骤:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接