Wiem, że polecenie ec2-create-image instance-id
utworzy 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?
Wiem, że polecenie ec2-create-image instance-id
utworzy 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?
Odpowiedzi:
Zaktualizowana odpowiedź z dokumentów aws:
Mam nadzieję, że pomoże to każdemu jak ja! :RE
Zazwyczaj są 4 kroki do tego, czego szukasz:
ec2-deregister
ec2-delete-bundle
(dla S3) lub ec2-delete-snapshot
(dla EBS).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)
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