首页 > 解决方案 > AWS CLI 按特定日期列出对象

问题描述

我正在尝试制作一个 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: "Contents[?LastModified ^

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

标签: amazon-web-servicesamazon-s3groovycommand-line-interface

解决方案


请试试:

然后尝试:

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}"]

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


推荐阅读