描述 EC2 实例 使用 AWS cli 过滤实例名称
Posted
技术标签:
【中文标题】描述 EC2 实例 使用 AWS cli 过滤实例名称【英文标题】:Describe EC2 instances Filter instance name using 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。
我尝试了多种组合,仍然无法输出实例名称。
【问题讨论】:
【参考方案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。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。 将检查有关标签的更好选择,感谢您的解决方案!欣赏它。以上是关于描述 EC2 实例 使用 AWS cli 过滤实例名称的主要内容,如果未能解决你的问题,请参考以下文章
AWS SDK/CLI 访问错误,AWS Redshift create-cluster 的 EC2 实例凭证