如何删除EC2 AMI


Answers:


55

来自AWS文档的更新答案:

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

希望这对像我这样的人有所帮助!:D


2
只是为了向本杰明·史密斯·马克斯(Benjamin Smith Max)删除快照的答案增加几分钱。您需要先在控制台中注销AMI,然后才能删除快照。
tarvinder91

3
如果您的AMI记录仍然存在,只需绕过缓存重新加载:Windows:Ctrl + Shft + R或在macOS上:⌘+⌥+R。
AndréHauptfleisch,

注意:控制台从列表中删除AMI可能要花费几分钟。选择刷新以刷新状态。
Aniket Thakur

7

典型的 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。您可以从命令行注销AMI(或使用AWS控制台),然后删除快照(再次从命令行或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

例如,基于上面的示例脚本(完全未经测试,并且拼凑在一起-使用后果自负!)可能类似于:

#!/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)

1
删除AMI之前无需终止AMI实例。AMI仅用于启动实例,没有它们,它们可以继续正常运行。但是,如果删除AMI且实例失败,则可能很难在没有AMI的情况下启动替换实例,因此请当心。
埃里克·哈蒙德

1
AWS过去曾建议终止实例以进行“彻底清理”,但是原则上不需要删除AMI。我确实想知道在某些情况下这是否重要,因为EBS卷“延迟”加载,如果快照在实例启动后不久但在EBS卷完全加载之前被删除,则可能会出现问题。
cyberx86

@ cyberx86:如果快照删除影响了新卷的创建,那将是一个更大的问题,不仅仅是删除AMI。考虑到从快照完全填充卷需要花费多长时间,因此使用充满数据的快照进行测试应该很容易。
埃里克·哈蒙德

2
@EricHammond:快速搜索显示,在数据加载之前,AWS显然不会删除快照,但是仍然可以让您执行删除操作(大概只是保留快照,直到不需要它为止)。
cyberx86

@ cyberx86:就像我怀疑的那样,但是很高兴知道。感谢您的查询。
埃里克·哈蒙德

1

awscli也可以做到这一点。

首先使用describe-images以下命令获取快照ID :

aws ec2 describe-images --image-ids ami-0123456789

然后注销图像并删除快照:

aws ec2 deregister-image --image-id ami-0123456789
aws ec2 delete-snapshot --snapshot-id snap-9876543210
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.