opção de consulta awcli para várias expressões de filtro

3

Dada a saída de aws ec2 describe instances , estou tentando exibir objetos que não têm Platform e DO VpcId . Até agora eu vim com isto:

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

Mas erros com:

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

Eu tenho procurado pelo link e não vejo como executar várias expressões de filtro.

Ambos

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

e

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

funciona, mas estou tentando obter essas duas consultas de uma só vez.

    
por Roderick Day 09.03.2016 / 01:04

2 respostas

1

Consegui resolver meu problema lógico (filtrar describe-instances para instâncias que são em um VPC, mas que não são windows) com a ajuda de esta questão .

Minha consulta resultante (em que estou procurando PrivateIPAddress ) foi:

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)'

No entanto, a pergunta que fiz sobre a combinação de filtros continua sem resposta, então deixarei isso em aberto, na esperança de atrair uma resposta para essa questão.

    
por 10.03.2016 / 16:05
1

Eu tomei seu comando e removi 1 caractere - a segunda marca ? . Eu adicionei a opção para formatar a saída como texto. Eu também percebo que o awscli pode ter mudado para suportar múltiplas consultas desde sua postagem original, então você vai querer garantir que você está com a última versão. Esta consulta funciona para mim:

aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" --query 'Reservations[*].Instances[?Platform=='null' && VpcId!='null']' --output text
    
por 03.02.2017 / 18:09