запрос jmespath в aws-оболочке - PullRequest
1 голос
/ 19 марта 2019

Мне нужно извлечь из AWS CLOUDFORMATION все стеки, которые содержат в имени определенную строку. Я использую следующую команду из aws-shell

aws cloudformation describe-stacks --query "Stacks[?contains(StackName, 'STRING_A')][StackName,StackId]" --output text | tr '\t' ';'

и я могу извлечь всю необходимую информацию.

Проблема в том, что мне нужно искать еще одну строку (предположим, STRING_B) ... Какая команда правильная? Как я могу вставить условие ИЛИ в «? Содержит»?

Я сделал несколько попыток, но ни одна из них не увенчалась успехом.

1010 *, например *

aws cloudformation describe-stacks --query "Stacks[?contains(StackName, 'STRING_A'||'STRING_B')][StackName,StackId]" --output text | tr '\t' ';'

но это решение извлекает только те записи, которые удовлетворяют первому условию (STRING_A)

Для моего приложения вместо «содержать» я также могу использовать «конец_с» ..... проблема / вопрос тот же :-)

Я ценю вашу помощь, заранее спасибо

1 Ответ

1 голос
/ 23 марта 2019

Контекст

  • Запрос Jmespath в оболочке AWS

Проблема

  • Как указать or-expression для запроса, содержащего строку

Решение

  • изменить ДО ДО ПОСЛЕ

До

 Stacks[?contains(StackName, 'STRING_A'||'STRING_B')]

После

 Stacks[? (contains(StackName, 'STRING_A') || contains(StackName, 'STRING_B')) ]
...