SaltyCrane Blog — Notes on JavaScript and web development

How to list attributes of an EC2 instance with Python and boto

Here's how to find out information about your Amazon EC2 instances using the Python boto library.

Install boto


from pprint import pprint
from boto import ec2


ec2conn = ec2.connection.EC2Connection(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
reservations = ec2conn.get_all_instances()
instances = [i for r in reservations for i in r.instances]
for i in instances:
    break # remove this to list all instances


{'_in_monitoring_element': False,
 'ami_launch_index': u'0',
 'architecture': u'x86_64',
 'block_device_mapping': {},
 'dns_name': u'',
 'id': u'i-xxxxxxxx',
 'image_id': u'ami-xxxxxxxx',
 'instanceState': u'\n                    ',
 'instance_class': None,
 'instance_type': u'm1.large',
 'ip_address': u'',
 'item': u'\n                ',
 'kernel': None,
 'key_name': u'FARM-xxxx',
 'launch_time': u'2009-10-27T17:10:22.000Z',
 'monitored': False,
 'monitoring': u'\n                    ',
 'persistent': False,
 'placement': u'us-east-1d',
 'previous_state': None,
 'private_dns_name': u'ip-10-xxx-xxx-xxx.ec2.internal',
 'private_ip_address': u'',
 'product_codes': [],
 'public_dns_name': u'',
 'ramdisk': None,
 'reason': '',
 'region': RegionInfo:us-east-1,
 'requester_id': None,
 'rootDeviceType': u'instance-store',
 'root_device_name': None,
 'shutdown_state': None,
 'spot_instance_request_id': None,
 'state': u'running',
 'state_code': 16,
 'subnet_id': None,
 'vpc_id': None}

For more information


#1 Dirk Krause commented on :

It took me some time to notice the 'break' statement :-), but thanks for the code! very useful.

#2 Eliot commented on :

Dirk: sorry, I added a comment to better highlight the break statement. :) Glad it was useful for you!

#3 Mayank commented on :

Thanks for the example. I was struggling for past 24 hrs to figure out how to get instance details from Reservation object returned by get_all_instances().

#4 Eliot commented on :

Mayank: yeah this wasn't very clear to me either. I think I remember looking at the source code in order to figure it out. Glad this was helpful.

#5 shirlei commented on :

thank you, just what I was looking for!

#6 Dirk Krause commented on :

just for info: boto now support the EC2 tags, i.e. you can name your instances. The result looks like this these days:

'state': u'running',
'state_code': 16,
'state_reason': None,
'subnet_id': None,
'tags': {u'Name': u'opensimxyz'},
'virtualizationType': u'paravirtual',
'vpc_id': None}

which is great!

#7 Eliot commented on :

Dirk: thanks for the update! yeah tags are a great feature. we are making use of them at work.

#8 Carl Smith commented on :

Nice one, thanks.

#9 iongion commented on :

This doesn't work anymore or at least it became incomplete, i have a single instance in europe west 1 region, but this call above gives me an empty list, probably you have to specify the zone also.

#10 mike commented on :

your posts are always a delight (and relief!) in reading-- thanks!

#11 Matt commented on :

Is it possible to use get_all_instances as a model in Django? If so, how would you do that?

#12 vikas commented on :

How to find total number of reserved instances under particular tag?
Eg. We have two tags group and name. Then I want to show total number of reserved instances of particular type (Eg. i2.xlarge) under group tag. How to do this, I did not find this in AWS console also ?
One idea that i have is to find all ec2 instances by get_all_instances()
and all reserved instances by get_all_reserved_instances(), But i didn’t find any strong matching criteria for find reserved instances by matching these two lists.
Any other way to find reserved instance under particular tag ?


#13 Naveen commented on :

Hi, I want to check whether particular instance is running or not through python script. Can you help me. I completed almost, but i'm getting erro. Can anyone help me?