2014-03-26 41 views
4

我使用CLI工具,並且只想列出實例的實例ID和相關標籤。我正在使用的命令是ec2-describe實例。我嘗試了某些過濾器,但沒有任何工作。如何僅列出實例ID和相關標籤

任何人都可以幫忙嗎?

錯誤:

./Instance_Audit.sh: line 24: $: command not found 
./Instance_Audit.sh: line 25: syntax error near unexpected token `do' 
./Instance_Audit.sh: line 25: ` do echo $ID ; echo $(aws ec2 describe-instances --query "Reservations[].Instances[?InstanceId==\`$ID\`].Tags[]") done' 

回答

0

如果你想只顯示關聯到該實例的實例ID和標籤,你可以使用類似:

$ for ID in $(aws ec2 describe-instances --region eu-west-1 --query "Reservations[].Instances[].InstanceId" --output text); do echo $ID ; echo $(aws ec2 describe-instances --region eu-west-1 --query "Reservations[].Instances[?InstanceId==\`$ID\`].Tags[]") done

i-60****2a [ [ { "Value": "SB", "Key": "Name" } ] ] i-1a****56 [ [ { "Value": "Course and Schedule on Apache 2.4", "Key": "Name" } ] ] i-88eff3cb [ [ { "Value": "secret.com", "Key": "Name" } ] ] i-e7****a5 [ [ { "Value": "2014.03 + Docker", "Key": "Name" } ] ]

我找不到只通過一次AWS CLI調用完成此操作的方法。如果有人想出一個較短的解決方案,我很樂意聽取您的意見。

如果您只想篩選某個標籤鍵/值,則可以編輯aws ec2 describe-instances以添加--filter選項。

例如:

aws ec2 describe-instances --region eu-west-1 --filter "Name=tag:Name,Values=SB"

--Seb

+0

'EC2-描述,實例| awk的「/(名稱|所有者)/ &&/TAG/{if(!(c中$ 3)){c [$ 3]; b [++ i] = $ 3;} a [$ 3,$ 4] = $ 5 OFS $ 6} END {for(k = 1; k <= i; k ++)打印「TAG實例」,b [i],「Name」,a [b [i],「Name」],「Owner」,a [b [i] ]}''這是一個命令,但它不適合 – user3086014

+0

你的答案是給我很多錯誤 – user3086014

+0

請使用新的c ommand線,而不是舊的。您可以從http://aws.amazon.com/cli/下載AWS CLI默認情況下,此工具安裝在Amazon Linux分發版上 –

3

使用AWS CLI,我可以生產標籤輸出幾個不同的選擇:

aws ec2 describe-instances --output text --query 'Reservations[*].Instances[*].[InstanceId,Tags[]]' 
Result: i-xxxxx [{u'Value': 'key1value', u'Key': 'key1name'}, {u'Value': 'key2value', u'Key': 'key2name'}] 

aws ec2 describe-instances --output text --query 'Reservations[*].Instances[*].[InstanceId,Tags[].*]' 
Result: i-xxxxx [['key1value', 'key1name'], ['key2value', 'key2name']] 

aws ec2 describe-instances --output text --query 'Reservations[*].Instances[*].[InstanceId,Tags[].Key,Tags[].Value]' 
Result: i-xxxx ['key1name', 'key2name'] ['key1value' 'key2value'] 

是任何的這些格式你在找什麼?

+0

命令不起作用,例如第一個返回:'--query Reservations [*]的值不正確* InstanceId,Tags []]:意外的標記:,:解析第39列的錯誤,標記「,」(COMMA),表達式: 「Reservations [*]。Instances [*]。InstanceId,Tags []]」'。 – kenorb

2

的AWS CLI命令

aws ec2 describe-instances --region us-west-2 --query 'Reservations[].Instances[].[InstanceId,Tags[]]' --output text 

產生這些結果:

i-789c55c3 
Name Instance1 
aws:cloudformation:logical-id Instance1 
aws:cloudformation:stack-id  arn:aws:cloudformation:us-west-2::stack/test10-test10-foobarfoobar/a6e545a0-af52-11e4-a0be-50d5020578e0 
aws:cloudformation:stack-name test10-test10-foobarfoobar 
i-77c108cc 
Name Instance2 
aws:cloudformation:logical-id Instance2 
aws:cloudformation:stack-id  arn:aws:cloudformation:us-west-2::stack/test10-test10-foobarfoobar/a6e545a0-af52-11e4-a0be-50d5020578e0 
aws:cloudformation:stack-name test10-test10-foobarfoobar 

如果不是你正在尋找的格式,可以提供他們的一個例子格式化你期待?

0

簡單的答案:

aws ec2 describe-instances \ 
--query 'Reservations[*].Instances[*].[InstanceId,Tags[*]]' 

不是那麼簡單的答案..同樣的原則也適用於這兩個實例和VPC的

# how-to get all the tags per instance-id with aws ec2 for prd env 
while read -r i ; do \ 
aws ec2 describe-tags --filters "Name=resource-id,Values=$i" \ 
--profile prd; done < <(aws ec2 describe-instances \ 
--query 'Reservations[*].Instances[*].InstanceId' --profile prd) 

# how-to get all the tags per virtual-private-cloud-id 
while read -r v; do aws ec2 describe-tags \ 
--filters "Name=resource-id,Values=$v" ; \ 
done < <(aws ec2 describe-vpcs \ 
--query 'Vpcs[*].VpcId'|perl -ne 's/\t/\n/g;print')