如何在s3api中传递变量以使用lastmodified过滤对象?

时间:2018-12-24 13:54:51

标签: amazon-s3

我试图使用以下命令基于lastmodified过滤S3对象-

LastModified>=2018-12-20中像这样--query手动提供日期后,效果很好。

aws s3api list-objects --bucket $bucketNameToUse --query 'Contents[?LastModified>=`2018-12-20`].{Key: Key, LastModified: LastModified}' --output text

但是当我尝试使用Date变量代替2018-12-20时,如下所示-

echo $DATEVARIABLE
2018-12-20

aws s3api list-objects --bucket $bucketNameToUse --query 'Contents[?LastModified > `$(DATEVARIABLE)`].{Key: Key, LastModified: LastModified}' --output text

它打印了存储桶中的每个对象,我尝试了所有可能的方法来使用bash变量,但是没有用。不知道我在这里想念的是什么。任何建议。

2 个答案:

答案 0 :(得分:1)

AWS CLI使用JMESPath作为--query选项。在以双引号作为字符串传递查询之后,以下对我有用。

--query "Contents[?LastModified>='${DATEVARIABLE}'].[Key, LastModified]"

答案 1 :(得分:0)

我通过反引号(`)获得了解决方案-

aws s3api list-objects --bucket $bucketNameToUse --query 'Contents[?LastModified > `'$DATEVARIABLE'`].{Key: Key, LastModified: LastModified}' --output text