2017-02-22 77 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)。這向更廣泛的社區表明,您已經找到了解決方案,併爲答覆者和您自己提供了一些聲譽。沒有義務這樣做。 –