Boto3:获取我拥有的EC2图像

时间:2016-10-24 07:38:08

标签: amazon-web-services amazon-ec2 boto3 ami

我想获得我拥有的所有ami图像。我尝试过类似下面的内容:

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

但是我需要将owner_id explicid放在代码中。是从aws凭证自动执行此操作的任何解决方案吗?

3 个答案:

答案 0 :(得分:5)

您应该能够为所有者使用self。这就是我使用的。

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

答案 1 :(得分:2)

您可以使用STS API获取此信息。

我发现这篇文章谈论它:getting the current user account-id in 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()

确保将区域名称更改为正确的名称,或者如果您已在环境中的其他位置将其保留,请将其保留。

答案 2 :(得分:0)

这将有所帮助,它将向您显示AMIowned的全部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'])