鉴于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/ ,并没有看到如何执行多个filterexpression式。
都
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`]'
工作,但我试图一次得到这两个查询。
II能够解决我的逻辑问题(filterdescribe-instances的VPC中,但不是 Windows的实例)在这个问题的帮助下: https : //stackoverflow.com/questions/26789915/aws-ec2- cli-jq-exclude-results 。
我的结果查询(其中我正在寻找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)'
然而,我问的关于filter的实际问题仍然没有得到答复,所以我将把这个问题留给希望吸引这个问题的答案。
我把你的命令,并删除了1个字符 – 第二? 标记。 我添加了选项来将输出格式化为文本。 我也意识到,awscli可能已经改变,以支持多个查询,因为你原来的发布,所以你会想确保你达到最新版本。 这个查询适用于我: aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" --query 'Reservations[*].Instances[?Platform== null && VpcId!= null ]' --output text