Назад | Перейти на главную страницу

Параметр запроса aws cli для нескольких выражений фильтра

Учитывая выход 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`]'

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

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

Мой результирующий запрос (в котором я ищу 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