Фильтровать результаты списка объектов S3, чтобы найти ключ, соответствующий шаблону

Я хотел бы использовать AWS CLI для запроса содержимого ведра и посмотреть, существует ли конкретный файл, но в ведре содержится тысячи файлов. Как я могу отфильтровать результаты только для отображения имен ключей, соответствующих шаблону? Например:

aws s3api list-objects --bucket myBucketName --query "Contents[?Key==*mySearchPattern*]"

Ответы

Ответ 1

--query использует выражения JMESPath. JMESPath имеет внутренняя функция contains, что позволяет искать строки шаблона.

Это должно дать желаемые результаты:

aws s3api list-objects --bucket myBucketName --query "Contents[?contains(Key, 'mySearchPattern')]"

(С Linux мне нужно использовать одинарные кавычки ' а не назад клещ ' вокруг mySearchPattern.)

Если вы хотите искать ключи, начиная с определенных символов, вы также можете использовать аргумент --prefix:

aws s3api list-objects --bucket myBucketName --prefix "myPrefixToSearchFor"

Ответ 2

Я пробовал на Ubuntu 14, awscli 1.2 --query "Содержание [? Содержит (ключ, 'stati')]. Ключ" --query "Содержание [? Содержит (ключ,\'stati \')]. Ключ" [CN00 ] "Содержание [? содержит (Key, stati)]. Ключ"

Недопустимое значение токена "? Содержит (ключ," данные ")]. Ключ"

После обновления версии aws до 1.16 работал с

--query "Содержание [? Содержит (ключ, 'stati')]. Ключ"