Опция запроса 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