Displaying EC2 Instance name using Boto 3

39,659

Solution 1

There may be other ways. But from your code point of view, the following should work.

>>> for i in vpc.instances.all():
...   for tag in i.tags:
...     if tag['Key'] == 'Name':
...       print tag['Value']

One liner solution if you want to use Python's powerful list comprehension:

inst_names = [tag['Value'] for i in vpc.instances.all() for tag in i.tags if tag['Key'] == 'Name']
print inst_names

Solution 2

In AWS EC2 an instance is tagged with a Name tag.

In order to get the value of the Name tag for a given instance, you need to query the instance for that tag:

See Obtaining tags from AWS instances with boto

Share:
39,659
Liondancer
Author by

Liondancer

Just trying to get better at programming! Any helpful tips are much appreciated! =D

Updated on October 03, 2020

Comments

  • Liondancer
    Liondancer over 3 years

    I'm not sure how to display the name of my instance in AWS EC2 using boto3

    This is some of the code I have:

    import boto3
    
    ec2 = boto3.resource('ec2', region_name='us-west-2')
    vpc = ec2.Vpc("vpc-21c15555")
    for i in vpc.instances.all():
        print(i)
    

    What I get in return is

    ...
    ...
    ...
    ec2.Instance(id='i-d77ed20c')
    

    enter image description here

    I can change i to be i.id or i.instance_type but when I try name I get:

    AttributeError: 'ec2.Instance' object has no attribute 'name'

    What is the correct way to get the instance name?