I created a boto3 script

  1 import boto3
  2 
  3 #STATUSES = ( 'available', 'pending' )
  4 REGIONS = ('us-west-1', 'us-east-1', 'us-west-2')
  5 REGIONS_H = ('N. California', 'N. Virginia', 'Oregon')
  6 
  7 for i in range(len(REGIONS)):
  8     region = REGIONS[i]
  9     region_h = REGIONS_H[i]
 10     print()
 11     print("Images in {}".format(region_h))
 12     print("-----------------------")
 13     rds = boto3.setup_default_session(region_name=region)
 14     rds = boto3.client('rds')
 15 
 16     ec2 = boto3.resource('ec2')
 17     images = ec2.images.filter(Owners=['self'])
 18     for image in images:
 19         print("[{}] ( {} {} {} {} )".format(image.state, image.id, image.image_type, image.architecture, image.description, image.platform))

that gives me the following output (trancated for bravity):

Images in N. California
-----------------------
[available] ( ami-02efeb026dba996f8 machine x86_64 Base system for testing Progressive install )
[available] ( ami-046bd9fc47f29a58f machine x86_64 bb-rhel7-install-5 )
[available] ( ami-04c2959b96500208c machine x86_64 bb-ubuntu-install-3 )

Is there a way to add to line 19, so I could display who created the AMI?

2 Answers

2
Shilpa On

image.owner_id will return the AWS account ID of the image owner. Refer this link.

0
Manoj Rana On

there are multiple ways to access AMI metadata and in this case AMI metadata are being accessed using ec2 resources so you need to referEC2 resources

and the call to get owner id should be image.owner-id