【问题标题】:Getting A List of Snapshot IDs From Their Associated AMI从关联的 AMI 获取快照 ID 列表
【发布时间】:2022-12-16 15:42:43
【问题描述】:

我正在使用 boto3 来尝试获取与其 AMI 关联的快照的快照 ID。

到目前为止我有这个:

#!/usr/bin/env python
import boto3
ec2_client = boto3.client('ec2', region_name='REGION')
owner_id = 'ACCOUNT_ID'
all_images = {}
all_used_images = []

# Pull all AMIs owned by the account
amis_response = ec2_client.describe_images(
            Filters=[
                {
                    'Name': 'root-device-type',
                    'Values': [ 'ebs']
                },
            ],
            Owners=[ owner_id ]
            )

# Get list of snapshots associated with AMIs
for image_info in amis_response['Images']:
    image_id = image_info['ImageId']
    print (image_id)
    snapshot_ids = []
    for device_map in image_info['BlockDeviceMappings']:
        snapshot_ids.append(device_map['Ebs']['SnapshotId'])
    all_images[image_id] = snapshot_ids

amis_response 提取帐户中的所有 ami 信息,但是当我尝试获取快照列表时,我不断得到:

snapshot_ids.append(device_map['Ebs']['SnapshotId'])
KeyError: 'Ebs'

我错过了什么?

当我打印 amis_response 的输出时,我看到:

u'BlockDeviceMappings': [{u'DeviceName': '/dev/sda1', u'Ebs': {u'SnapshotId': 'snap-0f5b70d9ddaa7b2e1'

【问题讨论】:

  • 您至少有一个元素看起来不像您的示例。尝试在循环的每次迭代中打印device_map
  • 进展如何?仍然不清楚你能做什么?
  • 对不起。下面的答案似乎有效。每个输出中都不存在 Ebs,因此它会引发关键错误。一旦你清除了那些,脚本的其余部分就可以正常运行。

标签: amazon-web-services boto3 snapshot


【解决方案1】:

Ebs 可能不会出现在每个输出中。您可以检查一下:

    for device_map in image_info['BlockDeviceMappings']:
        if 'Ebs' in device_map:
           snapshot_ids.append(device_map['Ebs']['SnapshotId'])
        else:
           print('No Ebs info for', image_id) 
    all_images[image_id] = snapshot_ids

【讨论】:

    【解决方案2】:

    您可以获得如下所示的 snapshot_id

    for image_info in amis_response['Images']: 
        for device_map in image_info['BlockDeviceMappings']:
            if 'Ebs' in device_map:
                snap_id = device_map.get('Ebs').get('SnapshotId')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-16
      • 1970-01-01
      相关资源
      最近更新 更多