moheb
moheb

Reputation: 33

AWS CLI list-objects by specific date

I'm trying to make a groovy script that list the objects on the AWS S3 that have been uploaded in the past three days. I installed the AWS CLI on the agent that the script runs on. The command I found that lists the objects by date is the following:

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

When I run this command on the agent directly from a putty session, it runs fine and lists the objects correctly. But when I try to execute the same command from the groovy script, I get the following error:

Bad value for --query "Contents[?LastModified: Bad jmespath expression: Unclosed " delimiter: "Contents[?LastModified ^

I tried to replace the first and last quotation marks with single quotes but did not work. I tried to do the same thing with the quotation marks before contents and after LastModified but did not work as well. I tried passing Contents[?LastModified>= '2018-10-16'].{Key: Key, LastModified: LastModified } to a string variable and pass its value in the command after --query but that didn't work as well.

Upvotes: 3

Views: 3891

Answers (1)

Opal
Opal

Reputation: 84756

Please try:

Then try:

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

Remember to always pass the command as a list, not string.

Upvotes: 1

Related Questions