我正在做一个自动化工作,我需要从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
答案 0 :(得分:0)
没有对Amazon S3的API调用,可以下载多个文件。
最简单的方法是使用AWS Command-Line Interface (CLI),它具有aws s3 cp --recursive
和aws s3 sync
命令。它将为您做任何事情。
如果您选择自己编程,那么Boto3 to download all files from a S3 Bucket是一种不错的选择。这是因为您需要做几件事:
如果您不希望重现目录结构(例如,如果所有对象都在同一路径中),则可以简化该任务。在这种情况下,您可以简单地遍历对象并将每个对象下载到同一目录。