user3086014
user3086014

Reputation: 4511

How to list only the instance id and related tags

I using the CLI tools and I want to list only the instance ID and related tags of an instance. The command that I am using is ec2-describe instances. I have tried certain filters but nothing is working out.

Can anybody help ??

error :

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

Upvotes: 7

Views: 9553

Answers (4)

Yordan Georgiev
Yordan Georgiev

Reputation: 5460

simple answer:

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

not so simple answer .. the same principle could be applied to both instances and vpc's

# 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')

Upvotes: 0

chris
chris

Reputation: 37480

Using the aws cli, I can produce a few different alternatives of the tag output:

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

Is any of those formats what you're looking for?

Upvotes: 5

DrStrangepork
DrStrangepork

Reputation: 3144

The AWS CLI command

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

produces these results:

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

If that is not in the format you are looking for, can you provide an example of they format you are expecting?

Upvotes: 4

S&#233;bastien Stormacq
S&#233;bastien Stormacq

Reputation: 14905

If you want to only display the instance id and the tags associated to that instance, you can use something like :

$ 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" } ] ]

I could not find a way to do that with only one AWS CLI call. Should someone come up with a shorter solution, I would love to hear from you.

If you want to filter to certain tag key/value only, you can edit the aws ec2 describe-instances to add a --filter option.

For example :

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

--Seb

Upvotes: 0

Related Questions