最近,我们清理了 Amazon Web Services 账户中的驱动器。我们删除了 200 多个 AMI。因为这些 AMI 的快照不会在删除 AMI 时被删除。
如何找到由 AMI 创建的快照列表,其中创建快照的 AMI 已被删除?
我无法从 AWS 管理控制台或 AWS CLI 找到任何东西。
答案1
如果您仅在创建 AMI 时创建快照,则您可能能够使用 CLI 或 powershell 工具可靠地执行此操作:
- 获取由您的 AWS 账户创建的所有 EC2 快照(OwnerID = 您的 AWS 账户)
- 获取与仍在运行的卷相关的快照
- 在这些快照中,尝试将其 VolumeID 与仍在运行的卷的 VolumeID 进行匹配。输出匹配的 SnapshotID。
- 获取孤立的快照/卷
- 在这些快照中,尝试将其 VolumeID 与仍在运行的卷的 VolumeID 进行匹配。输出与仍在运行的卷不匹配的快照的 SnapshotID。
你需要:
但这无法确定这些卷是否与您要删除的 AMI 一起生成……只能确定它们已被孤立。考虑一下,这可以为您节省很多未来的麻烦和标记您的 EC2 卷在创建时,会提供一些简单的元数据,说明谁负责创建它们,以及创建它们的目的。
答案2
如果您尝试删除与现有 AMI 绑定的快照,它将出现错误并询问您是否确定。
我所做的就是选择所有快照并点击删除,然后当系统提示某些 AMI 仍与现有 AMI 绑定时,我按下了取消。这可能是解决这个问题最快但最可怕的方法。
答案3
我编写了一个小型 Python 脚本,它可以生成包含有关快照使用情况的所有信息的 csv 报告。它包括有关链接卷、实例和 amis 的信息。
https://gist.github.com/Eyjafjallajokull/4e917414cfb191391f9e51f6a8c3e46a
答案4
使用今天的工具对问题的最新回答:我遇到了同样的问题,对这里介绍的选项感到失望。幸运的是,您现在可以登录 Amazon Cloudtrail 并按时间、事件名称:DeregisterImage、
资源类型:EC2 Ami 进行筛选。
这将为您提供一个 AMI ID 列表(如果愿意,可以下载 CSV),您可以使用它在快照中进行搜索。