我知道命令ec2-create-image instance-id
将创buildec2实例的映像,创build快照文件并注册为AMI。 但删除相关的快照文件和取消注册AMI的图像等效命令是什么?
更新了aws文档的答案:
希望这能帮助像我这样的人! :d
通常有 4个步骤,您正在寻找:
ec2-deregister
注销AMI ec2-delete-bundle
(用于S3)或ec2-delete-snapshot
(用于EBS) ec2-delete-snapshot
支持AMI的捆绑包/快照。 请记住,快照和图像是独立的。 您可以从快照创buildEBS卷,并将其用作辅助驱动器而不是引导驱动器。 此外(就Linux实例而言),可以从现有的快照创build新的映像 – 这有助于理解不是每个想要删除映像的人都想删除关联的快照。 (尽pipe您可以注册快照以创buildWindows AMI,但AMI不可启动。)
值得注意的是,在注销AMI之前,AWS不会让您删除与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
例如,一个示例脚本(完全未经testing,只是拼凑在一起 – 使用风险自负!)基于上述可能看起来像:
#!/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)