如何使用 AWS CLI 根据给定日期范围(例如 8 月 8 日至 8 月 15 日)从 S3 存储桶下载选择性日期范围文件?

him*_*shi 3 amazon-s3 amazon-web-services aws-cli s3-bucket

我可以过滤特定日期的数据,但不能过滤日期范围的数据。例如,使用 AWS CLI 从 2019 年 9 月 12 日到 2019 年 9 月 15 日

例如。要过滤 2019 年的数据,我使用 --recursive --exclude "*" --include " 2019 "

Wal*_*tDe 5

您将需要使用 s3api 来处理使用JMESPath语法的查询

aws s3api list-objects-v2 --bucket BUCKET --query "Contents[?(LastModified>='2019-09-12' && LastModified<='2019-09-15')].Key"
Run Code Online (Sandbox Code Playgroud)

您也可以指定时间

aws s3api list-objects-v2 --bucket BUCKET --query "Contents[?(LastModified>='2019-09-12T12:00:00.00Z' && LastModified<='2019-09-15T12:00:00.00Z')].Key"
Run Code Online (Sandbox Code Playgroud)

这种方法的缺点是它必须列出每个对象并执行查询。对于大存储桶,如果您可以限制前缀,它将加快您的搜索速度。

aws s3api list-objects-v2 --bucket BUCKET --prefix PREFIX --query "Contents[?(LastModified>='2019-09-12T12:00:00.00Z' && LastModified<='2019-09-15T12:00:00.00Z')].Key"
Run Code Online (Sandbox Code Playgroud)

如果您的主要查找是按日期进行的,那么请按照日期/时间排序顺序存储对象,因为您可以使用前缀选项来加快搜索速度。举几个例子。

prefix/20190615T041019Z.json.gz
2019/06/15/T041019Z.json.gz
Run Code Online (Sandbox Code Playgroud)

这会