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

标签 amazon-web-services amazon-ec2 aws-cli

考虑我想查询 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"
            ]
        ]
    ]
]

最佳答案

您的命令中唯一缺少的部分是确保标签 myId存在并且具有非空值。该过滤器必须应用于选定的实例 ( Instances[*] )。 another answer on Stack Overflow 中介绍了如何对此进行过滤。并将其集成到您的命令中非常简单:

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

关于amazon-web-services - aws-cli - 使用 --query 和 --filter 过滤输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46160592/

相关文章:

amazon-web-services - 在Amazon Container Service上定义任务时出错

python - awscli 工具由 pip 安装并在 pip 中显示,但在访问时 - 找不到命令

amazon-web-services - ECS 上的 awslogs 的方式和原因(fargate)

amazon-web-services - 增加 EC2 磁盘存储而不丢失任何数据

python - 由于模块 colorama 而无法使用 aws CLI

amazon-web-services - Cloudformation EC2 实例在初始化时将外部 DNS 和 IP 添加到 .conf 文件

amazon-web-services - 为什么我的 EC2 实例没有注册到 ECS 集群

amazon-web-services - DynamoDB - 每个帐户的表数量限制

amazon-web-services - Terraform 上的 AWS - 如何避免 'forces new resource'

amazon-ec2 - 如何为弹性beanstalk实例添加多个键?