首页 > 解决方案 > 试图获取 ec2 图像列表,包括 blockDeviceMappings.snpshotID

问题描述

我需要获取包括bloak 设备快照 ID在内的 ec2 图像列表,该列表应仅包含属于我的图像。到现在为止,我已经设法在没有额外信息的情况下获得图像 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)

标签: amazon-ec2boto3amazon-iam

解决方案


我认为以下应该做:

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']}

推荐阅读