【问题标题】:Describe EC2 instances Filter instance name using AWS cli描述 EC2 实例 使用 AWS cli 过滤实例名称
【发布时间】:2017-07-12 19:59:01
【问题描述】:

每次运行 Jenkins 作业时,我都想使用 CLI 命令过滤具有特定标签的实例并将其存储在本地文件中。

aws ec2 describe-instances --filters "Name=tag:Hello,Values=exclude"  --output table --query Reservations[*].Instances[*].{Id.InstanceId, State:State.name,Contact:tag:OwnerContact, InstanceProfileName:InstanceProfileName} > Book.txt 

我成功地获得了文本文件中的输出,但是对于我的两个参数 InstanceProfileName 和 OwnerContact ,我得到的输出为 None。

我尝试了多种组合,仍然无法输出实例名称。

【问题讨论】:

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


    【解决方案1】:

    这是一个可以输出各种参数的例子,包括标签值:

    aws ec2 describe-instances --query "Reservations[*].Instances[*].{Id:InstanceId,State:State.Name,Profile:IamInstanceProfile.Arn,Name:Tags[?Key=='Name'].Value}"
    

    要获得正确的语法,只需一次尝试一个元素。开始:

    aws ec2 describe-instances --query "Reservations[*].Instances[*]"
    

    然后添加参数,例如:

    aws ec2 describe-instances --query "Reservations[*].Instances[*].Tags"
    

    然后尝试您想要的每个值。最后,在一个大命令中将它们串在一起。

    要了解--query 选项,请查看:JMESPath Tutorial

    【讨论】:

    • 干杯,干得好,约翰!还有一个问题,在上述场景中,当我将其作为表格形式输出到文件时,我得到了所有值,例如实例 ID、状态名称和所有值都在一个表中。但是,在下面的另一个表中获取标签,而不是在同一个表中的另一个列中。有什么不同的需要做的吗?
    • 标签是一对多的输出,所以除了JSON(支持子对象)以外的任何格式都不容易输出。您可能想要运行两个查询——一个用于标记,一个用于其余查询。
    • 嗨@Sriram,如果这个或任何答案解决了您的问题,请点击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。
    • 将检查有关标签的更好选择,感谢您的解决方案!欣赏它。
    猜你喜欢
    • 2017-03-16
    • 2018-06-18
    • 2018-09-26
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多