Jak usunąć EC2 AMI

43

Wiem, że polecenie ec2-create-image instance-idutworzy obraz instancji ec2, utworzy plik migawek i zarejestruje się jako AMI. Ale jakie jest równoważne polecenie usunięcia obrazu, który usunie powiązane pliki migawek i wyrejestruje AMI?

James W.
źródło
Sprawdź, jak usunąć prywatny EC2 AMI z AWS
Aniket Thakur

Odpowiedzi:

55

Zaktualizowana odpowiedź z dokumentów aws:

  1. Otwórz konsolę Amazon EC2 na stronie https://console.aws.amazon.com/ec2/ .
  2. Na pasku nawigacyjnym sprawdź swój region.
  3. W panelu nawigacyjnym kliknij opcję AMI.
  4. Wybierz AMI, kliknij Działania, a następnie Wyrejestruj. Po wyświetleniu monitu o potwierdzenie kliknij Kontynuuj.
  5. W okienku nawigacji kliknij Migawki.
  6. Wybierz migawkę, kliknij opcję Działania, a następnie kliknij przycisk Usuń. Po wyświetleniu monitu o potwierdzenie kliknij przycisk Tak, Usuń.

Mam nadzieję, że pomoże to każdemu jak ja! :RE

Benjamin Smith Max
źródło
2
Wystarczy dodać kilka centów do odpowiedzi Benjamina Smitha Maxa na usunięcie migawek. Musisz najpierw wyrejestrować AMI w konsoli, zanim będzie można usunąć migawkę.
tarvinder91
3
Jeśli Twój rekord AMI nadal się zawiesi, po prostu przeładuj z pominięciem pamięci podręcznej: Windows: Ctrl + Shft + R lub na macOS: ⌘ + ⌥ + R.
André Hauptfleisch
UWAGA: Może upłynąć kilka minut, zanim konsola usunie AMI z listy. Wybierz Odśwież, aby odświeżyć status.
Aniket Thakur
7

Zazwyczaj są 4 kroki do tego, czego szukasz:

  1. Zakończ instancje za pomocą AMI (zalecane ćwiczenie szczególnie dla AMI wspieranych przez S3) [Nie wymagane przed usunięciem AMI dowolnego typu]
  2. Wyrejestruj za pomocą AMI ec2-deregister
  3. Usuń pakiety / migawki wspierające AMI za pomocą ec2-delete-bundle(dla S3) lub ec2-delete-snapshot(dla EBS).
  4. Usuń woluminy EBS (chyba że są ustawione na usuwanie po zakończeniu, w takim przypadku zostaną usunięte w kroku 1). Nie jest to konieczne w przypadku instancji wspieranych przez S3. [Ponownie, nie trzeba kończyć instancji ani usuwać woluminów, jeśli chcesz tylko usunąć AMI.]

Pamiętaj, że migawki i obrazy są niezależne. Możesz utworzyć wolumin EBS z migawki i używać go jako dysku dodatkowego zamiast napędu rozruchowego. Ponadto (w przypadku instancji Linuksa) możliwe jest utworzenie nowego obrazu z istniejącej migawki - co uzasadnia pomysł, że nie każdy, kto chce usunąć obraz, chce również usunąć skojarzone migawki. (Chociaż można zarejestrować migawkę, aby utworzyć interfejs Windows AMI, AMI nie można uruchomić).

Warto zauważyć, że AWS nie pozwoli ci usunąć migawki związanej z AMI przed wyrejestrowaniem AMI.

Koncentrując się na krokach 2 i 3 powyżej, musisz najpierw znaleźć identyfikatory migawek powiązane z AMI. To powinno być wymienione jako część mapowań urządzeń blokowych. Zazwyczaj główny wolumin EBS ma punkt montowania / dev / sda1. Możesz wyrejestrować AMI z wiersza poleceń (lub użyć konsoli AWS), a następnie usunąć migawkę (ponownie, albo z wiersza poleceń, albo z konsoli AWS).

Jeśli chcesz częściej wykonywać to zadanie, zechcesz napisać skrypt. Niektóre biblioteki, takie jak Python Boto, zawierają funkcję wykonującą dokładnie to:

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

Na przykład przykładowy skrypt (całkowicie nieprzetestowany i po prostu złożony - użyj na własne ryzyko!) Oparty na powyższym może wyglądać następująco:

#!/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)
cyberx86
źródło
1
Nie ma potrzeby kończenia wystąpień AMI przed usunięciem AMI. Interfejs AMI służy wyłącznie do uruchamiania instancji i bez niego mogą one dalej działać poprawnie. Jeśli jednak usuniesz AMI, a instancje się nie powiodą, rozpoczęcie instancji zastępczych bez AMI może być trudne, więc bądź ostrożny.
Eric Hammond,
1
AWS zwykło zalecać kończenie instancji w celu „całkowitego wyczyszczenia”, jednak w zasadzie nie powinno to być potrzebne do usunięcia AMI. Zastanawiam się, czy może to mieć znaczenie w niektórych przypadkach brzegowych, ponieważ woluminy EBS ładują się „leniwie”, jeśli migawka zostanie usunięta wkrótce po uruchomieniu instancji, ale przed pełnym załadowaniem woluminu EBS może to być problematyczne.
cyberx86,
@ cyberx86: Jeśli usunięcie migawki wpłynęłoby na tworzenie nowego wolumenu, byłby to większy problem niż tylko usunięcie AMI. Biorąc pod uwagę, ile czasu zajmuje całkowite wypełnienie woluminu z migawki, testowanie przy użyciu migawki pełnej danych powinno być łatwe.
Eric Hammond,
2
@EricHammond: szybkie wyszukiwanie pokazuje, że AWS najwyraźniej nie usunie migawki, dopóki dane nie zostaną załadowane, ale nadal pozwoli ci wykonać usuwanie (prawdopodobnie po prostu trzymając migawkę, dopóki nie będzie potrzebna).
cyberx86,
@ cyberx86: Tak jak podejrzewałem, ale miło wiedzieć na pewno. Dzięki za sprawdzenie.
Eric Hammond
1

Awscli może to zrobić.

Najpierw pobierz identyfikator shapshot, używając describe-images:

aws ec2 describe-images --image-ids ami-0123456789

Następnie wyrejestruj obraz i usuń migawkę:

aws ec2 deregister-image --image-id ami-0123456789
aws ec2 delete-snapshot --snapshot-id snap-9876543210
Kristi
źródło