Опция запроса awcli для нескольких выражений фильтра

Учитывая выход aws ec2 describe instances Я пытаюсь отобразить объекты, которые не имеют Platform ценность и действительно есть VpcId значение. До сих пор я придумал это:

aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" --query 'Reservations[*].Instances[?Platform==`null` && ?VpcId!=`null`]'

Но это ошибки с:

Bad value for --query Reservations[*].Instances[?Platform==`null` && ?VpcId!=`null`]: Bad jmespath expression: Unknown token ?:
Reservations[*].Instances[?Platform==`null` && ?VpcId!=`null`]

Я просматривал http://jmespath.org/ и не вижу, как выполнить несколько выражений фильтра.

И то и другое

aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" --query 'Reservations[*].Instances[?Platform==`null`]'

а также

aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" --query 'Reservations[*].Instances[?VpcId!=`null`]'

работать, но я пытаюсь получить оба этих запроса одновременно.

2 ответа

Решение

Я смог решить мою логическую проблему (фильтр describe-instances для случаев, которые находятся в VPC, но не являются окнами) с помощью этого вопроса.

Мой результирующий запрос (где я ищу PrivateIPAddress) было:

aws --output json ec2 describe-instances \
--filters "Name=instance-state-name,Values=running" |\
jq '.Reservations[].Instances | \
map(select(.VpcId != null)) |  map(select(.Platform != "windows") | .PrivateIpAddress)'

Однако фактический вопрос, который я задал о комбинировании фильтров, остается без ответа, поэтому я оставлю этот вопрос открытым в надежде получить ответ на этот вопрос.

Я взял вашу команду и удалил 1 символ - 2-й ? отметка. Я добавил опцию для форматирования вывода в виде текста. Я также понимаю, что awscli, возможно, изменился для поддержки нескольких запросов с момента вашей первоначальной публикации, поэтому вы захотите убедиться, что вы используете последнюю версию. Этот запрос работает для меня:

aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" --query 'Reservations[*].Instances[?Platform==`null` && VpcId!=`null`]' --output text
Другие вопросы по тегам