描述 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 CLI 删除 OpsWorks EC2 实例

AWS SDK/CLI 访问错误,AWS Redshift create-cluster 的 EC2 实例凭证

如何在 AWS EC2 实例上激活 GPU 的使用?

用于并行运行 AWS Cli 命令以减少时间的 Bash 脚本

AWS CLI EMR 获取主节点实例 ID 并标记它

AWS EB CLI Django