Por lo general, hay 4 pasos para lo que está buscando:
Termine las instancias con la AMI (se recomienda practicar especialmente para las AMI respaldadas por S3) [No es necesario antes de eliminar una AMI de cualquier tipo]
- Dar de baja las AMI usando
ec2-deregister
- Elimine los paquetes / instantáneas que respaldan la AMI usando
ec2-delete-bundle
(para S3) o ec2-delete-snapshot
(para EBS).
Elimine los volúmenes de EBS (a menos que estén configurados para eliminarse al finalizar, en cuyo caso, se eliminarán en el paso 1). Esto no es necesario para las instancias respaldadas por S3. [Nuevamente, no es necesario finalizar instancias o eliminar volúmenes si solo desea eliminar una AMI.]
Tenga en cuenta que las instantáneas y las imágenes son independientes. Puede crear un volumen EBS a partir de una instantánea y utilizarlo como unidad secundaria en lugar de como unidad de arranque. Además (en el caso de instancias de Linux) es posible crear una nueva imagen a partir de una instantánea existente, lo que da razón a la idea de que no todos los que desean eliminar una imagen también desean eliminar la (s) instantánea (s) asociada (s). (Aunque puede registrar una instantánea para crear un AMI de Windows, el AMI no se puede iniciar).
Vale la pena señalar que AWS no le permitirá eliminar una instantánea asociada con un AMI antes de cancelar el registro del AMI.
Centrándose en los pasos 2 y 3 anteriores, primero debe encontrar la (s) ID (s) de la instantánea asociadas con un AMI. Esto debería aparecer como parte de las asignaciones de dispositivos de bloque. Normalmente, el volumen EBS raíz tiene el punto de montaje / dev / sda1. Puede cancelar el registro de la AMI desde la línea de comandos (o usar la consola de AWS) y luego eliminar la instantánea (nuevamente, ya sea desde la línea de comandos o desde la consola de AWS).
Si necesita realizar esta tarea con más frecuencia, desearía realizar una secuencia de comandos del proceso. Algunas bibliotecas como Python Boto incluyen una función para hacer exactamente esto:
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
Por ejemplo, un script de muestra (completamente no probado y simplemente improvisado, ¡uso bajo su propio riesgo!) Basado en lo anterior podría verse así:
#!/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)