我想從命令ec2-describe-instances的結果中提取實例ID和標籤,並希望將結果存儲在文本文件中。結果集給出了:如何在shell腳本中獲取ec2-describe-instances的標籤
但我想的標籤所有者和cost.centre也被拿來 請指導我該怎麼做
我想從命令ec2-describe-instances的結果中提取實例ID和標籤,並希望將結果存儲在文本文件中。結果集給出了:如何在shell腳本中獲取ec2-describe-instances的標籤
但我想的標籤所有者和cost.centre也被拿來 請指導我該怎麼做
如果我理解正確的問題,我想你只需要添加表情你的第二個grep的:
ec2-describe-instances | grep -i "tag" | grep -i -e "name" -e "owner" -e "cost.centre"
這將是不必要的複雜的shell腳本來完成。以下是一些建議:
ec2cli
。不要使用它。改爲使用AWS-CLI
。因爲解析ec2cli
中的輸出是一種痛苦。 AWS-CLI
在JSON
中提供輸出,而解析則更容易。此外,AWS今後將僅支持AWS-CLI
。AWs-CLI
命令,然後在散列中捕獲輸出。 Perl
對於處理這樣的數據結構非常強大。底線是,您需要在散列中捕獲標記以使您的生活更輕鬆。當你有多個標籤時,這變得越來越突出。
如何使用AWS cli? – user3086014
閱讀文檔:http://aws.amazon.com/cli/。花點時間仔細閱讀。你以後會感謝我。自從我開始使用它以來,我無法活下去。 – slayedbylucifer
但它需要時間。你能幫助我解決這個問題嗎? – user3086014
用awk
ec2-describe-instances |awk 'BEGIN{IGNORECASE=1}/(name|owner|cost.center)/&&/tag/'
TAG instance i-c4 Name Rii_Win_SAML
TAG instance i-c42 Owner Rii Pandey
我想在單行中與單個實例相關的標籤。 – user3086014
你能否更新你的示例文件,目前的一個讓我困惑如何得到結果。例如,我沒有在源文件中看到'Naveen',但是你在輸出中請求它。 – BMW
實際上這個文件太長了,我只提取了一部分 – user3086014
這將有助於找到實例ID
$ AWS EC2描述,實例--filters名稱= VPC-ID,值= VPC-XXX | awk'{print $ 8}'| sort -n | grep的 「異」
I-4115d38c
I-5d534697
I-6e679a45
I-7a659851
I-8d6bae40
I-cd6f9000
I-d264ad1e
I-d5888618
I-e2332e2e
PS考慮到你已經配置/運行 「AWS配置」
這應該工作:
aws ec2 describe-instances | jq '.Reservations[].Instances[] | select(contains({Tags: [{Key: "owner"},{Key: "costcenter"}]}))|"Instance ID: \(.InstanceId) Owner: \(.Tags[]|select(.Key=="owner")|.Value), Cost Center: \(.Tags[]|select(.Key=="costcenter")|.Value)"'
TL; DR:方式AWS確實標籤是一個活生生的噩夢,即使jq
此外,使用AWS CLI,不老,unsuppor特德工具。
這裏是另一種方式,而無需使用JQ和其他分析工具做。
ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId,Tags[?Key==`Name`].Value | [0],Tags[?Key==`cost.centre`].Value | [0]]' --output text
你能舉一個預期產出的例子嗎?你試過什麼了? –
的EC2-描述,實例給出了一個沒有屬性的,我只是想實例ID和名字一樣,成本中心和業主的標籤從結果中獲取。 – user3086014