Frage So löschen Sie EC2 AMI


Ich kenne das Kommando ec2-create-image instance-id erstellt ein Image der ec2-Instanz, erstellt eine Snapshot-Datei und registriert sich als AMI. Aber was ist der äquivalente Befehl, um das Bild zu löschen, das zugehörige Snapshot-Dateien löscht und AMI abmeldet?


35
2017-10-10 02:45


Ursprung


Schau dir an wie es geht Löschen Sie private EC2 AMI von AWS - Aniket Thakur


Antworten:


Aktualisierte Antwort von der aws-Dokumentation:

  1. Öffnen Sie die Amazon EC2-Konsole unter https://console.aws.amazon.com/ec2/.
  2. Überprüfen Sie Ihre Region in der Navigationsleiste.
  3. Klicken Sie im Navigationsbereich auf AMIs.
  4. Wählen Sie das AMI aus, klicken Sie auf Aktionen, und klicken Sie dann auf Abmelden. Wenn Sie zur Bestätigung aufgefordert werden, klicken Sie auf Weiter.
  5. Klicken Sie im Navigationsbereich auf Snapshots.
  6. Wählen Sie den Snapshot aus, klicken Sie auf Aktionen und dann auf Löschen. Wenn Sie zur Bestätigung aufgefordert werden, klicken Sie auf Ja, Löschen.

Hoffe, das hilft jedem wie mir! : D


43
2017-08-14 20:24



Nur um ein paar Cent zu Benjamin Smith Max 'Antwort hinzuzufügen, um Schnappschüsse zu löschen. Sie müssen zuerst die AMI in der Konsole löschen, bevor der Snapshot gelöscht werden kann. - tarvinder91
Wenn Ihr AMI-Datensatz immer noch nicht verfügbar ist, führen Sie einfach einen Neuladevorgang unter Umgehung des Caches durch: Windows: Strg + Shft + R oder auf MacOS: ⌘ + ⌥ + R - André Hauptfleisch
HINWEIS: Es kann einige Minuten dauern, bis die Konsole das AMI aus der Liste entfernt. Wählen Sie Aktualisieren, um den Status zu aktualisieren. - Aniket Thakur


Es gibt typisch 4 Schritte zu dem, was Sie suchen:

  1. Beenden Sie Instanzen mit dem AMI (empfehlen Sie vor allem für S3-unterstützte AMIs)  [Nicht erforderlich, bevor ein AMI eines beliebigen Typs gelöscht wird]
  2. Melden Sie AMIs ab ec2-deregister
  3. Löschen Sie die Bundles / Snapshots, die den AMI unterstützen, mithilfe von ec2-delete-bundle (für S3) oder ec2-delete-snapshot (für EBS).
  4. Löschen Sie EBS-Volumes (es sei denn, sie sind beim Beenden auf Löschen festgelegt, in diesem Fall würden sie in Schritt 1 entfernt). Dies ist für S3-unterstützte Instanzen nicht erforderlich.  [Wiederum ist es nicht notwendig, Instanzen zu beenden oder Volumes zu löschen, wenn Sie nur ein AMI löschen möchten.]

Denken Sie daran, dass Schnappschüsse und Bilder unabhängig sind. Sie können ein EBS-Volume aus einem Snapshot erstellen und es als sekundäres Laufwerk anstelle eines Startlaufwerks verwenden. Darüber hinaus ist es (im Fall von Linux-Instanzen) möglich, ein neues Bild aus einem vorhandenen Snapshot zu erstellen. Dies gibt Anlass zur Annahme, dass nicht jeder, der ein Bild 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 AWS den Snapshot eines AMI vor dem Abmelden des AMI nicht löschen kann.

Konzentrieren Sie sich auf die Schritte 2 und 3 oben, müssen Sie zuerst die Snapshot-ID (s) finden, die mit einem AMI verknüpft sind. Dies sollte als Teil der Blockgerätezuordnungen aufgelistet werden. Normalerweise hat das Root-EBS-Volume den Einhängepunkt / dev / sda1. Sie können die Registrierung des AMI über die Befehlszeile aufheben (oder die AWS-Konsole verwenden) und anschließend den Snapshot löschen (entweder über die Befehlszeile oder die AWS-Konsole).

Wenn Sie diese Aufgabe öfter ausführen müssen, sollten Sie den Prozess als Skript verwenden. 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 (vollständig ungetestet, und nur zusammengeschustert - auf eigenes Risiko verwenden!) Basierend auf dem obigen aussehen wie folgt 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)

6
2017-10-10 05:39



Es ist nicht notwendig, Instanzen eines AMI vor dem Löschen des AMI zu beenden. Das AMI wird nur verwendet, um die Instanzen zu starten, und sie können problemlos weiter ohne es funktionieren. Wenn Sie jedoch das AMI löschen und die Instanzen fehlschlagen, kann es schwierig sein, Ersatzinstanzen ohne AMI zu starten. Seien Sie also vorsichtig. - Eric Hammond
AWS hat das Beenden von Instanzen empfohlen für eine "vollständige Bereinigung" sollte es jedoch grundsätzlich nicht zum Löschen eines AMI benötigt werden. Ich frage mich, ob es in einigen Edge-Fällen von Bedeutung sein könnte, da EBS-Volumes "träge" geladen werden, wenn ein Snapshot kurz nach dem Start einer Instanz gelöscht wird, aber bevor das EBS-Volume vollständig geladen wurde, könnte dies problematisch sein. - cyberx86
@ cyberx86: Wenn eine Löschung eines Snapshots die Erstellung eines neuen Volumes beeinflusst, wäre dies ein größeres Problem als nur das Löschen von AMIs. Wenn man bedenkt, wie lange es dauert, ein Volume vollständig aus einem Snapshot zu bestücken, sollte es einfach sein, mit einem Snapshot voller Daten zu testen. - Eric Hammond
@EricHammond: eine schnelle Suche zeigt an, dass AWS den Snapshot scheinbar nicht löscht, bis die Daten geladen sind, aber Sie können den Löschvorgang dennoch durchführen (vermutlich einfach den Snapshot beibehalten, bis er nicht mehr benötigt wird). - cyberx86
@ cyberx86: Wie ich vermutet habe, aber nett um sicher zu sein. Danke fürs Nachschlagen. - Eric Hammond