Cómo eliminar EC2 AMI

43

Sé que el comando ec2-create-image instance-idcreará una imagen de la instancia ec2, creará un archivo de instantáneas y se registrará como AMI. Pero, ¿cuál es el comando equivalente para eliminar la imagen que eliminará los archivos de instantáneas asociados y anulará el registro de AMI?

James W.
fuente
Consulte Cómo eliminar la AMI EC2 privada de AWS
Aniket Thakur

Respuestas:

56

Respuesta actualizada de los documentos de aws:

  1. Abra la consola Amazon EC2 en https://console.aws.amazon.com/ec2/ .
  2. En la barra de navegación, verifique su región.
  3. En el panel de navegación, haga clic en AMI.
  4. Seleccione el AMI, haga clic en Acciones y luego haga clic en Cancelar registro. Cuando se le solicite confirmación, haga clic en Continuar.
  5. En el panel de navegación, haga clic en Instantáneas.
  6. Seleccione la instantánea, haga clic en Acciones y luego haga clic en Eliminar. Cuando se le solicite confirmación, haga clic en Sí, Eliminar.

Espero que esto ayude a alguien como yo! :RE

Benjamin Smith Max
fuente
2
Solo para agregar algunos centavos a la respuesta de Benjamin Smith Max para eliminar instantáneas. Primero debe cancelar el registro de la AMI en la consola antes de que se pueda eliminar la instantánea.
tarvinder91
3
Si su registro de AMI todavía se cuelga, solo vuelva a cargarlo sin pasar por el caché: Windows: Ctrl + Shft + R o en macOS: ⌘ + ⌥ + R.
André Hauptfleisch
NOTA: Pueden pasar unos minutos antes de que la consola elimine la AMI de la lista. Elija Actualizar para actualizar el estado.
Aniket Thakur
7

Por lo general, hay 4 pasos para lo que está buscando:

  1. 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]
  2. Dar de baja las AMI usando ec2-deregister
  3. Elimine los paquetes / instantáneas que respaldan la AMI usando ec2-delete-bundle(para S3) o ec2-delete-snapshot(para EBS).
  4. 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)
cyberx86
fuente
1
No es necesario finalizar las instancias de una AMI antes de eliminarla. El AMI solo se usa para iniciar las instancias y pueden continuar funcionando bien sin él. Sin embargo, si elimina la AMI y las instancias fallan, puede ser difícil iniciar instancias de reemplazo sin la AMI, así que tenga cuidado.
Eric Hammond
1
AWS solía recomendar la finalización de instancias para una 'limpieza completa', sin embargo, en principio, no debería ser necesario para eliminar una AMI. Sin embargo, me pregunto si podría importar en algunos casos extremos, ya que los volúmenes de EBS se cargan 'perezosamente', si una instantánea se elimina poco después de que se inicie una instancia, pero antes de que el volumen de EBS se haya cargado completamente, podría ser problemático.
cyberx86
@ cyberx86: Si la eliminación de una instantánea afectara la creación de un nuevo volumen, sería un problema mayor que simplemente eliminar las AMI. Dado el tiempo que lleva completar un volumen completamente desde una instantánea, debería ser fácil probar con una instantánea llena de datos.
Eric Hammond
2
@EricHammond: una búsqueda rápida muestra que AWS aparentemente no eliminará la instantánea hasta que se hayan cargado los datos, pero aún así le permitirá realizar la eliminación (presumiblemente simplemente manteniendo la instantánea hasta que no sea necesaria).
cyberx86
@ cyberx86: Como sospechaba, pero es bueno saberlo con certeza. Gracias por buscarlo.
Eric Hammond el
1

El awscli también puede hacer esto.

Primero obtenga la identificación de la instantánea usando describe-images:

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

Luego, anule el registro de la imagen y elimine la instantánea:

aws ec2 deregister-image --image-id ami-0123456789
aws ec2 delete-snapshot --snapshot-id snap-9876543210
kristi
fuente