代码之家  ›  专栏  ›  技术社区  ›  mitechniq

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

  •  2
  • mitechniq  · 技术社区  · 7 年前

    我试图以列格式输出“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

    我不太清楚为什么我的前两个专栏现在变成了 没有一个 以及 sg-id 介绍了。

    1 回复  |  直到 7 年前
        1
  •  3
  •   John Rotenstein    7 年前

    区别在于 VpcSecurityGroups[*] :

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

    在第二个中,您将收到 none 因为 DBInstanceIdentifier PubliclyAccessible 不是的属性 VpcSecurityGroups .

    以下是显示层次结构的部分输出:

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

    请尝试以下操作:

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

    如果有多个安全组,看起来就不太好看了,因为这是一对多的关系。