In der Regel sind es 4 Schritte, nach denen Sie suchen:
Instanzen mit dem AMI beenden (empfohlene Vorgehensweise speziell für S3-unterstützte AMIs) [Nicht erforderlich, bevor ein AMI eines beliebigen Typs gelöscht wird]
- Deregistrieren Sie AMIs mit
ec2-deregister
- Löschen Sie die Bundles / Snapshots, die das AMI sichern, mit
ec2-delete-bundle
(für S3) oder ec2-delete-snapshot
(für EBS).
Löschen Sie EBS-Volumes (es sei denn, sie werden beim Beenden gelöscht. In diesem Fall werden sie in Schritt 1 entfernt). Dies ist für von S3 unterstützte Instanzen nicht erforderlich. [Auch hier ist es nicht erforderlich, Instanzen zu beenden oder Volumes zu löschen, wenn Sie nur eine AMI löschen möchten.]
Denken Sie daran, dass Schnappschüsse und Bilder unabhängig voneinander sind. Sie können ein EBS-Volume aus einem Snapshot erstellen und es als sekundäres Laufwerk anstatt als Startlaufwerk verwenden. Darüber hinaus ist es (bei Linux-Instanzen) möglich, ein neues Image aus einem vorhandenen Snapshot zu erstellen. Dies gibt Anlass zu der Annahme, dass nicht jeder, der ein Image löschen möchte, auch die zugehörigen Snapshots löschen möchte. (Obwohl Sie einen Snapshot registrieren können, um ein Windows-AMI zu erstellen, kann das AMI nicht gestartet werden.)
Beachten Sie, dass Sie in AWS einen mit einem AMI verknüpften Snapshot nicht löschen können, bevor Sie das AMI abmelden.
Wenn Sie sich auf die obigen Schritte 2 und 3 konzentrieren, müssen Sie zunächst die Schnappschuss-IDs ermitteln, die einem AMI zugeordnet sind. Dies sollte als Teil der Blockgerätezuordnungen aufgeführt werden. Normalerweise hat das Root-EBS-Volume den Mount-Punkt / dev / sda1. Sie können die AMI über die Befehlszeile abmelden (oder die AWS-Konsole verwenden) und anschließend den Snapshot löschen (erneut über die Befehlszeile oder die AWS-Konsole).
Wenn Sie diese Aufgabe häufiger ausführen müssen, möchten Sie den Prozess skripten. Einige Bibliotheken wie Python Boto enthalten eine Funktion, um genau dies zu tun:
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
Zum Beispiel könnte ein Beispielskript (völlig ungetestet und nur zusammengeschustert - Verwendung auf eigenes Risiko!) Auf der Grundlage des oben Gesagten folgendermaßen aussehen:
#!/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)