Come eliminare EC2 AMI


Risposte:


56

Risposta aggiornata dai documenti aws:

  1. Apri la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/ .
  2. Nella barra di navigazione, verifica la tua regione.
  3. Nel pannello di navigazione, fai clic su AMI.
  4. Selezionare l'AMI, fare clic su Azioni, quindi su Annulla registrazione. Quando viene richiesta la conferma, fare clic su Continua.
  5. Nel riquadro di navigazione, fai clic su Istantanee.
  6. Seleziona l'istantanea, fai clic su Azioni, quindi fai clic su Elimina. Quando viene richiesta la conferma, fare clic su Sì, Elimina.

Spero che questo aiuti chiunque come me! : D


2
Solo per aggiungere qualche centesimo alla risposta di Benjamin Smith Max per eliminare le istantanee. È necessario prima annullare la registrazione dell'AMI nella console prima di poter eliminare lo snapshot.
tarvinder91,

3
Se il tuo record AMI si blocca ancora, esegui una ricarica con bypass della cache: Windows: Ctrl + Shft + R o su macOS: ⌘ + ⌥ + R.
André Hauptfleisch

NOTA: potrebbero essere necessari alcuni minuti prima che la console rimuova l'AMI dall'elenco. Scegli Aggiorna per aggiornare lo stato.
Aniket Thakur,

7

Di solito ci sono 4 passaggi per quello che stai cercando:

  1. 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]
  2. Annullare la registrazione delle AMI utilizzando ec2-deregister
  3. Elimina i bundle / le istantanee che supportano l'AMI usando ec2-delete-bundle(per S3) o ec2-delete-snapshot(per EBS).
  4. 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)

1
Non è necessario terminare le istanze di un'AMI prima di eliminare l'AMI. L'AMI viene utilizzato solo per avviare le istanze e possono continuare a funzionare bene anche senza di essa. Tuttavia, se si elimina l'AMI e le istanze falliscono, potrebbe essere difficile avviare istanze di sostituzione senza l'AMI, quindi fare attenzione.
Eric Hammond,

1
AWS raccomandava di terminare le istanze per una "pulizia completa", tuttavia, in linea di principio non dovrebbe essere necessario per eliminare un AMI. Mi chiedo se in alcuni casi limite potrebbe importare, dal momento che i volumi EBS si caricano "pigramente", se un'istantanea viene eliminata poco dopo l'avvio di un'istanza, ma prima che il volume EBS si sia caricato completamente, potrebbe essere problematico.
cyberx86,

@ cyberx86: se l'eliminazione di un'istantanea influisce sulla creazione di un nuovo volume, sarebbe un problema maggiore rispetto alla sola eliminazione di AMI. Dato il tempo necessario per popolare completamente un volume da un'istantanea, dovrebbe essere facile testare con un'istantanea piena di dati.
Eric Hammond,

2
@EricHammond: una rapida ricerca mostra che AWS apparentemente non eliminerà l'istantanea fino a quando i dati non saranno caricati, ma ti consentirà comunque di eseguire l'eliminazione (presumibilmente semplicemente trattenendo l'istantanea fino a quando non è necessaria).
cyberx86,

@ cyberx86: Come sospettavo, ma è bello sapere con certezza. Grazie per averlo cercato.
Eric Hammond,

1

Anche awscli può farlo.

Per prima cosa ottieni l'id shapshot usando describe-images:

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

Quindi annullare la registrazione dell'immagine ed eliminare l'istantanea:

aws ec2 deregister-image --image-id ami-0123456789
aws ec2 delete-snapshot --snapshot-id snap-9876543210
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.