Фильтровать результаты списка объектов 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')]. Ключ"