特定日期的AWS CLI列表对象

时间:2018-10-18 20:41:57

标签: amazon-web-services amazon-s3 groovy command-line-interface

我正在尝试制作一个Groovy脚本,该脚本列出过去三天内上载的AWS S3上的对象。我在运行脚本的代理上安装了AWS CLI。我发现按日期列出对象的命令如下:

def cmd = "aws s3api list-objects --bucket (name of bucket) --query \"Contents[?LastModified>= '2018-10-16'].{Key: Key, LastModified: LastModified }\""

当我直接从腻子会话在代理上运行此命令时,它运行良好并正确列出了对象。但是,当我尝试从groovy脚本执行相同的命令时,出现以下错误:

  

-query“ Contents [?LastModified:Bad jmespath expression:Unclosed” delimiter的错误值:   “内容[?LastModified   ^

我试图用单引号替换第一个和最后一个引号,但是没有用。我尝试用LastModified之前和之后的引号做同样的事情,但是效果不佳。我尝试将Contents[?LastModified>= '2018-10-16'].{Key: Key, LastModified: LastModified }传递给字符串变量,并在--query之后的命令中传递其值,但是效果不佳。

1 个答案:

答案 0 :(得分:0)

请尝试:

然后尝试:

def date = new Date().format('yyyy-MM-dd') 
def cmd = ['aws', 's3api', 'list-objects', '--bucket', 'Bucket-Name', '--query', "Contents[?LastModified>='${date}'].{Key: Key , LastModified: LastModified}"]

请记住始终将命令作为列表而不是字符串传递。