Di solito ci sono 4 passaggi per quello che stai cercando:
Terminare le istanze utilizzando l'AMI (si consiglia di utilizzare soprattutto le AMI supportate da S3) [Non richiesto prima di eliminare un'AMI di qualsiasi tipo]
- Annullare la registrazione delle AMI utilizzando
ec2-deregister
- Elimina i bundle / le istantanee che supportano l'AMI usando
ec2-delete-bundle
(per S3) o ec2-delete-snapshot
(per EBS).
Elimina i volumi EBS (a meno che non siano impostati per l'eliminazione al termine, nel qual caso verranno rimossi al passaggio n. 1). Questo non è necessario per le istanze supportate da S3. [Ancora una volta, non è necessario terminare le istanze o eliminare i volumi se si desidera semplicemente eliminare un AMI.]
Tieni presente che le istantanee e le immagini sono indipendenti. È possibile creare un volume EBS da un'istantanea e utilizzarlo come unità secondaria anziché come unità di avvio. Inoltre (nel caso di istanze Linux) è possibile creare una nuova immagine da un'istantanea esistente - il che rende ragione all'idea che non tutti coloro che vogliono eliminare un'immagine vogliono eliminare anche le istantanee associate. (Sebbene sia possibile registrare un'istantanea per creare un'AMI di Windows, l'AMI non è avviabile.)
Vale la pena notare che AWS non consente di eliminare un'istantanea associata a un'AMI prima di annullare la registrazione dell'AMI.
Concentrandosi sui passaggi 2 e 3 di cui sopra, è innanzitutto necessario trovare gli ID di istantanea associati a un AMI. Questo dovrebbe essere elencato come parte delle mappature dei dispositivi a blocchi. In genere, il volume EBS di root ha il punto di montaggio / dev / sda1. Puoi annullare la registrazione dell'AMI dalla riga di comando (o utilizzare la console AWS) e quindi eliminare l'istantanea (di nuovo, dalla riga di comando o dalla console AWS).
Se è necessario eseguire questa attività più spesso, è consigliabile eseguire lo script del processo. Alcune librerie come Python Boto includono una funzione per fare esattamente questo:
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
Ad esempio uno script di esempio (completamente non testato e messo insieme insieme - utilizzare a proprio rischio e pericolo!) Basato su quanto sopra potrebbe apparire come:
#!/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)