Boto3: получить изображения EC2, принадлежащие мне

Я хотел бы получить все изображения AMI, принадлежащие мне. Я попробовал что-то вроде ниже:

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

Но мне нужно поставить в код explicid owner_id. Есть ли какое-либо решение сделать это автоматически из учетных данных aws?

2 ответа

Вы должны быть в состоянии использовать себя для владельца. Это то, что я использую.

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

Это поможет, покажет вам ВСЕ AMI это owned от 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'])

Вы можете использовать API STS для получения этой информации.

Я нашел этот пост, говорящий об этом: получение текущего идентификатора учетной записи пользователя в boto3

Итак, код, который вам нужен:

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()

Обязательно измените имя региона на правильное или не указывайте его, если вы указали его в другом месте вашей среды.

Другие вопросы по тегам