Search code examples
pythonpython-3.xamazon-web-servicesamazon-ec2boto3

Displaying EC2 Instance name using Boto 3


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?


Solution

  • 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