Boto3: Get EC2 images owned by me

10,143

Solution 1

You should be able to use self for the owner. This is what I use.

boto3conn = boto3.resource("ec2", region_name="us-west-2")
images = boto3conn.images.filter(Owners=['self']) 

Solution 2

This will help, It will show you ALL AMI thats owned by your aws account

import boto3

client = boto3.client('ec2', region_name='us-east-1')

response = client.describe_images(Owners=['self'])
for ami in response['Images']:
  print (ami['ImageId'])

Solution 3

You can use the STS API to get this information.

I found this post talking about it: getting the current user account-id in boto3

So the code you need is:

ec2 = boto3.resource('ec2', region_name='us-east-1')
owner_id = boto3.client('sts').get_caller_identity().get('Account')
filters = [{'Name': 'owner-id', 'Values': [owner_id]}]
images = ec2.images.filter(Filters=filters).all()

Make sure to change the region name to the correct one, or leave it out if you've set it elsewhere in your environment.

Share:
10,143
drootnar
Author by

drootnar

Aspiring full stack developer (Python, servers, aws, databases). Interested in REST Web Services.

Updated on June 07, 2022

Comments

  • drootnar
    drootnar almost 2 years

    I would like to get all ami images owned by me. I tried something like below:

    ec2 = boto3.resource('ec2')
    owner_id = 'owner_id'
    filters = [{'Name': 'owner-id', 'Values': [owner_id]}]
    images = ec2.images.filter(Filters=filters).all()
    

    But I need to put owner_id explicid in the code. Is it any solution to do that automatically from aws credentials?