Есть , как правило , 4 шага к тому , что вы ищете:
Завершите работу экземпляров с помощью AMI (рекомендуется практиковаться, особенно для поддерживаемых S3 AMI) [Не требуется перед удалением AMI любого типа]
- Отменить регистрацию AMI, использующих
ec2-deregister
- Удалите пакеты / снимки, поддерживающие AMI, используя
ec2-delete-bundle
(для S3) или ec2-delete-snapshot
(для EBS).
Удалите тома EBS (если только они не настроены на удаление по завершении, в этом случае они будут удалены на шаге № 1). Это не обязательно для экземпляров с поддержкой S3. [Опять же, нет необходимости завершать экземпляры или удалять тома, если вы просто хотите удалить AMI.]
Имейте в виду, что снимки и изображения независимы. Вы можете создать том EBS из моментального снимка и использовать его как дополнительный диск, а не как загрузочный диск. Кроме того (в случае экземпляров Linux) можно создать новый образ из существующего снимка, что дает основание полагать, что не каждый, кто хочет удалить изображение, также хочет удалить связанный снимок (и). (Хотя вы можете зарегистрировать снимок для создания Windows AMI, AMI не запускается.)
Стоит отметить, что AWS не позволит вам удалить моментальный снимок, связанный с AMI, до отмены регистрации AMI.
Сосредоточив внимание на шагах 2 и 3 выше, вам сначала нужно найти идентификаторы снимков, связанные с AMI. Это должно быть указано как часть отображений блочных устройств. Как правило, корневой том 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)