如何找到某个 AMI 的 EC2 实例 运行 以便同时删除 AMI 和 EC2 实例?

How to find EC2 instances running a certain AMI in order to delete both AMI and EC2 instances?

我已经使用我的自定义 AMI 启动了多个 EC2 实例。现在我想完全删除 AMI,因此首先我需要终止该 AMI 的所有实例 运行。 是否可以使用 AWS 的 API?

对于反对者:AWS 推荐的清理过程指示我终止所有实例 运行 AMI http://aws.amazon.com/articles/637。参考文献可能已过时,但无需对问题投反对票。

您可以删除 AMI,而不删除使用该 AMI 创建的任何实例。你的问题听起来像是不可能的。

您可以在 AWS Web 控制台中轻松浏览 EC2 实例,并查看使用什么 AMI 创建它们。或者您可以使用 aws ec2 describe-instances 命令列出所有实例。该命令的输出将包括用于创建实例的 AMI 的 ID。

无需终止 AMI 的所有实例 运行,根据 Amazon EC2 文档,您可以保留这些实例 运行 注销 AMI 不会影响这些实例的功能。

当您注销 AMI 时,它不会影响您已经从 AMI 启动的任何实例,也不会影响在创建 AMI 期间为实例的根卷创建的快照过程。您将继续为 snapshot.After 注销 AMI 产生存储费用,您不能使用它来启动新实例。

清理您的 Amazon EBS 支持的 AMI

清理您的 Amazon EBS 支持的 AMI

  1. https://console.aws.amazon.com/ec2/ 打开 Amazon EC2 控制台。
  2. 在导航窗格中,选择 AMI。 Select AMI,并记下它的 ID — 这可以帮助您在下一步中找到正确的快照。选择操作,然后取消注册。当提示确认时,选择继续。 AMI 状态现在不可用。 备注 可能需要几分钟时间,控制台才能将状态从可用更改为不可用,或者从列表中完全删除 AMI。选择 Refresh 刷新状态。
  3. 在导航窗格中,选择快照,然后 select 快照(在描述列中查找 AMI ID)。选择操作,然后选择删除快照。当提示确认时,选择是,删除。
  4. (可选)如果您已完成从 AMI 启动的实例,请终止它。在导航窗格中,选择实例。 Select 实例,依次选择操作、实例状态和终止。当提示确认时,选择是,终止。

供您参考:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/deregister-ami.html 或 EC2 文档页 no-107

另外值得注意的是,AMI 构成了自动扩展组 (ASG) 使用的启动配置的一部分。假设: 1. 您已将 ASG 的 'desired size' 设置为零(例如将 Elastic Beanstalk 下线而不删除它);没有 运行 个实例与您感兴趣的 AMI 2. 您注销 AMI 3. 将所需的 ASG 大小设置为 >0 4. 自动缩放器无法启动实例,因为 AMI 现已消失

取消注册时,AWS EC2 不会对启动配置中使用的 AMI 发出警告。

您可能需要编写 Python/Boto3 脚本来在两个实例和启动配置中查找 AMI ID,以便在注销之前获取 'where-used' 依赖项。