如何通过AWS查询输出多个元素?

时间:2018-01-03 14:42:17

标签: amazon-web-services amazon-rds aws-cli aws-security-group

我尝试以列格式输出来自'rds'的三个键。如果我从这句话开始:

aws rds describe-db-instances --region us-east-1 --query 'DBInstances[*].[DBInstanceIdentifier, PubliclyAccessible, VpcSecurityGroupId]' --output text

......我明白了:

  

DBId true none

但是,如果我包含另一个元素来提取安全组:

aws rds describe-db-instances --region us-east-1 --query 'DBInstances[*].VpcSecurityGroups[*].[DBInstanceIdentifier, PubliclyAccessible, VpcSecurityGroupId]' --output text

......我明白了:

  

none none sg-id

我不太清楚为什么我的前两列现在变为 none 并且显示sg-id

1 个答案:

答案 0 :(得分:2)

区别在于VpcSecurityGroups[*]

'DBInstances[*].[DBInstanceIdentifier, PubliclyAccessible, VpcSecurityGroupId]'
vs
'DBInstances[*].VpcSecurityGroups[*].[DBInstanceIdentifier, PubliclyAccessible, VpcSecurityGroupId]'

在第二个中,您收到none,因为DBInstanceIdentifierPubliclyAccessible不是VpcSecurityGroups的属性。

这是显示层次结构的输出的一部分:

{
    "DBInstances": [
        {
            "PubliclyAccessible": false,
            "VpcSecurityGroups": [
                {
                    "Status": "active",
                    "VpcSecurityGroupId": "sg-1203dc23"
                }
            ],
            "DBInstanceIdentifier": "mydbinstance-1"
        }
    ]
}

请改为尝试:

'DBInstances[*].[DBInstanceIdentifier, PubliclyAccessible, VpcSecurityGroups[*].VpcSecurityGroupId]'

如果有多个安全组,它看起来会非常漂亮,因为它是一对多的关系。