我正在尝试制作一个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
之后的命令中传递其值,但是效果不佳。
答案 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}"]
请记住始终将命令作为列表而不是字符串传递。