如何解决尝试获取包含blockDeviceMappings.snpshotID的ec2图像列表
我需要获取ec2映像的列表,其中包括设备快照快照ID ,该列表应仅包含属于我的映像。 到目前为止,我已经设法在没有额外信息的情况下获得了图像iD的列表
此外,是否可以获取我拥有的列表而不是添加我的ID?
import boto3
ec2 = boto3.resource('ec2',aws_access_key_id = "ID",aws_secret_access_key = "ID",region_name = "eu-west-1")
filter=[{'Name':'owner-id','Values':['MY-ID']}]
count_aim = 1
for each_aim in ec2.images.filter(Filters=filter):
print (each_aim)
count_aim = count_aim + 1
print (count_aim)
解决方法
我认为以下应该做:
from collections import defaultdict
from pprint import pprint
import boto3
ec2 = boto3.resource('ec2',aws_access_key_id = 'dddddd',aws_secret_access_key="ggggfffff",region_name = "eu-west-1")
filter=[{'Name':'owner-id','Values':['123455']}]
block_ids = defaultdict(list)
for each_aim in ec2.images.filter(Filters=filter):
for block_map in each_aim.block_device_mappings:
block_ids[each_aim.id].append(block_map['Ebs']['SnapshotId'])
pprint(dict(block_ids))
示例输出:
{'ami-02b8a850c975bb610': ['snap-02f277ce5b3b670fc'],'ami-06422cd44a94bab38': ['snap-0b0c9048f46992ee1']}