6

我使用 CLI 工具,我只想列出实例的实例 ID 和相关标签。我使用的命令是 ec2-describe 实例。我尝试了某些过滤器,但没有任何效果。

有人可以帮忙吗??

错误 :

./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'
4

4 回答 4

4

使用 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']

您正在寻找这些格式中的任何一种吗?

于 2014-04-07T15:41:16.387 回答
3

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:012345678901: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:012345678901:stack/test10-test10-foobarfoobar/a6e545a0-af52-11e4-a0be-50d5020578e0
aws:cloudformation:stack-name   test10-test10-foobarfoobar

如果这不是您正在寻找的格式,您能否提供一个您期望的格式示例?

于 2015-02-08T18:58:03.353 回答
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

于 2014-03-26T14:19:50.273 回答
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')
于 2017-08-23T12:40:11.693 回答