2017-02-22 76 views
1

我希望使用CLI命令过滤具有特定标记的那些实例,并在我每次运行Jenkins作业时将其存储在本地文件中。描述EC2实例使用AWS的过滤器实例名称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的,我得到的输出为无。

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

回答

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

+0

干杯,做工精细约翰!还有一个问题,在上面的场景中,当我以表格形式将其输出到文件时,我将所有值(例如实例ID,状态名称和所有值)都放在一个表中。但是,在下面的另一个表中获取标签而不是同一个表中的另一个列。有什么不同的事情需要完成? – Sriram

+0

标签是一对多的输出,所以用JSON(支持子对象)以外的任何格式都不容易输出。您可能想要运行两个查询 - 一个用于标签,另一个用于其他查询。 –

+0

嗨@Sriram,如果这个或任何答案已解决您的问题,请点击复选标记,考虑[接受它](http://meta.stackexchange.com/q/5234/179419)。这向更广泛的社区表明,您已经找到了解决方案,并为答复者和您自己提供了一些声誉。没有义务这样做。 –