You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AMI(镜像)ID筛选Amazon EBS快照?

获取特定AMI关联的EBS快照方法

可以实现,但无法直接用ImageId作为describe_snapshots的筛选条件(该API的过滤器里没有image-id这个选项),不过你可以通过describe_images直接提取指定AMI关联的所有EBS快照ID,这是最直接高效的方式。

方法一:通过describe_images提取关联快照

指定目标AMI ID调用describe_images,从返回的镜像信息中解析BlockDeviceMappings字段,里面的Ebs.SnapshotId就是创建该AMI时使用的EBS快照ID。示例代码如下:

import boto3

# 初始化EC2客户端
ec2 = boto3.client('ec2')

# 替换为你要查询的目标AMI ID
target_ami_id = 'ami-xxxxxxxxx'

# 获取指定AMI的详细信息
response = ec2.describe_images(ImageIds=[target_ami_id])
images = response['Images']

# 提取所有关联的EBS快照ID
associated_snapshot_ids = []
for image in images:
    # 遍历镜像的块设备映射
    for block_device in image.get('BlockDeviceMappings', []):
        ebs_details = block_device.get('Ebs')
        # 只提取有快照关联的EBS卷
        if ebs_details and 'SnapshotId' in ebs_details:
            associated_snapshot_ids.append(ebs_details['SnapshotId'])

# 输出结果
print(f"与AMI {target_ami_id}关联的EBS快照ID:")
for snap_id in associated_snapshot_ids:
    print(snap_id)

# 如果要删除这些快照,直接遍历列表操作即可
for snap_id in associated_snapshot_ids:
    print(f"Deleting snapshot {snap_id}")
    ec2.delete_snapshot(SnapshotId=snap_id)

关于describe_snapshots的补充说明

describe_snapshots的过滤器支持标签、所有者、状态等条件,但不支持按ImageId筛选。如果非要用这个API,只能先通过上述方法拿到快照ID列表,再用SnapshotIds参数批量查询,比如:

# 用已获取的快照ID列表查询快照详情
snapshots = ec2.describe_snapshots(SnapshotIds=associated_snapshot_ids)['Snapshots']

但这种方式多了一步,不如直接从describe_images提取高效。

内容的提问来源于stack exchange,提问作者Tommy B.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:10:03