aws-cli - 使用 --query 和 --filter 过滤输出

问题描述 投票:0回答:1

考虑我想查询 aws cli 以获得具有标签的实例列表:

角色=迈罗尔

我只想要 InstanceId 和特定标签,所以我发出:

~ aws ec2 describe-instances \
    --filter "Name=tag:role,Values=myrole" \
    --query "Reservations[*].Instances[*].[InstanceId,Tags[?Key=='myId'].Value]"

回复将是:

[
    [
        [
            "i-111111111111111111",
            []
        ]
    ],
    [
        [
            "i-222222222222222222",
            [
                "091117"
            ]
        ]
    ],
    [
        [
            "i-333333333333333333",
            []
        ]
    ]
]

我如何修改查询以仅获取此标签值是非空字符串的对象,即:

[
    [
        [
            "i-222222222222222222",
            [
                "091117"
            ]
        ]
    ]
]
amazon-web-services amazon-ec2 aws-cli
1个回答
9
投票

命令中唯一缺少的部分是确保标签

myId
存在并且具有非空值。该过滤器必须应用于所选实例 (
Instances[*]
)。 Stack Overflow 上的另一个答案介绍了如何过滤它,并将其集成到您的命令中相当简单:

aws ec2 describe-instances \
  --filter "Name=tag:role,Values=myrole" \
  --query "Reservations[*].Instances[?Tags[?Key=='myId' && Value!='']].[InstanceId,Tags[?Key=='myId'].Value]"
© www.soinside.com 2019 - 2024. All rights reserved.