如何删除 EC2 AMI

Jam*_* W. 52 amazon-ec2 amazon-web-services

我知道该命令ec2-create-image instance-id将创建 ec2 实例的映像、创建快照文件并注册为 AMI。但是删除将删除关联快照文件和取消注册 AMI 的映像的等效命令是什么?

小智 68

来自 aws 文档的更新答案:

  1. 通过https://console.aws.amazon.com/ec2/打开 Amazon EC2 控制台。
  2. 在导航栏中,验证您所在的地区。
  3. 在导航面板中,单击 AMI。
  4. 选择 AMI,单击操作,然后单击取消注册。当提示确认时,单击继续。
  5. 在导航窗格中,单击快照。
  6. 选择快照,单击操作,然后单击删除。当提示确认时,单击是,删除。

希望这能帮助像我这样的人!:D

  • 只是为了给本杰明史密斯马克斯删除快照的答案添加几美分。您需要先在控制台中取消注册 AMI,然后才能删除快照。 (3认同)
  • 如果您的 AMI 记录仍然存在,只需使用绕过缓存重新加载:Windows:Ctrl + Shft +R 或在 macOS 上:⌘ + ⌥ + R。 (3认同)

cyb*_*x86 8

典型的4个步骤,你在找什么:

  1. 使用 AMI 终止实例(推荐做法,特别是对于 S3 支持的 AMI) [在删除任何类型的 AMI 之前不需要]
  2. 取消注册 AMI 使用 ec2-deregister
  3. 使用ec2-delete-bundle(对于 S3)或ec2-delete-snapshot(对于 EBS)删除支持 AMI 的包/快照。
  4. 删除 EBS 卷(除非将它们设置为在终止时删除,在这种情况下,它们将在步骤 1 中删除)。对于 S3 支持的实例,这不是必需的。 [同样,如果您只想删除 AMI,则没有必要终止实例或删除卷。]

请记住,快照和图像是独立的。您可以从快照创建 EBS 卷并将其用作辅助驱动器而不是引导驱动器。此外(在 Linux 实例的情况下)可以从现有快照创建新映像 - 这说明并非每个想要删除映像的人也想删除关联的快照。(虽然您可以注册快照来创建 Windows AMI,但 AMI 无法启动。)

值得注意的是,AWS 不会让您在取消注册 AMI 之前删除与 AMI 关联的快照。

重点关注上面的第 2 步和第 3 步,您首先需要找到与 AMI 关联的快照 ID。这应该作为块设备映射的一部分列出。通常,根 EBS 卷具有挂载点 /dev/sda1。您可以从命令行(或使用 AWS 控制台)取消注册 AMI,然后删除快照(同样,从命令行或 AWS 控制台)。

如果您需要更频繁地执行此任务,则需要编写该过程的脚本。一些库(例如 Python Boto)包含一个函数来执行此操作:

deregister_image(image_id, delete_snapshot=False)
    Unregister an AMI.

    Parameters: 
        image_id (string) – the ID of the Image to unregister
        delete_snapshot (bool) – Set to True if we should delete the snapshot associated with an EBS volume mounted at /dev/sda1
Run Code Online (Sandbox Code Playgroud)

例如,基于上述的示例脚本(完全未经测试,只是拼凑在一起 - 使用风险自负!)可能如下所示:

#!/usr/bin/env python

import os
import sys

def ec2delete(imageid=None):
    conn = boto.ec2.connect_to_region('your_region', aws_access_key_id='your_key', aws_secret_access_key='your_secret') 
    conn.deregister_image(imageid, delete_snapshot=True)

if __name__ == '__main__':
    from optparse import OptionParser
    parser = OptionParser()

    options, args = parser.parse_args()
    sys.stderr.write("Deleting %s and snapshots\n" %  str(args))
    ec2delete(args)
Run Code Online (Sandbox Code Playgroud)

  • @EricHammond:[快速搜索](https://forums.aws.amazon.com/message.jspa?messageID=112307) 显示 AWS 在数据加载之前显然不会删除快照,但仍会让您执行删除(大概只是保持快照直到不需要它为止)。 (2认同)

kri*_*sti 8

awscli也可以做到这一点。

首先使用describe-images以下方法获取 shapshot id :

aws ec2 describe-images --image-ids ami-0123456789
Run Code Online (Sandbox Code Playgroud)

然后取消注册图像并删除快照:

aws ec2 deregister-image --image-id ami-0123456789
aws ec2 delete-snapshot --snapshot-id snap-9876543210
Run Code Online (Sandbox Code Playgroud)