Є , як правило , 4 кроки до того , що ви шукаєте:
Припиніть випадки використання AMI (рекомендую практикувати особливо для AMI, підтримуваних S3) [Не потрібно до видалення 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)