Answers:
来自AWS文档的更新答案:
希望这对像我这样的人有所帮助!:D
有典型的 4个步骤,你在找什么:
ec2-deregister
ec2-delete-bundle
(对于S3)或ec2-delete-snapshot
(对于EBS)删除支持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)