Comment supprimer EC2 AMI

43

Je sais que la commande ec2-create-image instance-idva créer une image de l'instance ec2, créer un fichier d'instantanés et s'enregistrer en tant qu'AMI. Mais quelle est la commande équivalente pour supprimer l’image qui supprime les fichiers de capture instantanée associés et supprime l’AMI?

James W.
la source
Check-out Comment supprimer les AMI EC2 privés d'AWS
Aniket Thakur

Réponses:

56

Réponse mise à jour à partir des documents aws:

  1. Ouvrez la console Amazon EC2 à l' adresse https://console.aws.amazon.com/ec2/ .
  2. Dans la barre de navigation, vérifiez votre région.
  3. Dans le panneau de navigation, cliquez sur AMI.
  4. Sélectionnez l'AMI, cliquez sur Actions, puis sur Deregister. Lorsque vous êtes invité à confirmer, cliquez sur Continuer.
  5. Dans le volet de navigation, cliquez sur Instantanés.
  6. Sélectionnez l'instantané, cliquez sur Actions, puis sur Supprimer. Lorsque vous êtes invité à confirmer, cliquez sur Oui, Supprimer.

J'espère que cela aidera quelqu'un comme moi! :RÉ

Benjamin Smith Max
la source
2
Juste pour ajouter quelques centimes à la réponse de Benjamin Smith Max pour supprimer des instantanés. Vous devez d'abord désenregistrer l'AMI dans la console avant de pouvoir supprimer l'instantané.
tarvinder91
3
Si votre enregistrement AMI est toujours affiché, effectuez un rechargement avec contournement du cache: Windows: Ctrl + Shft + R ou sous Mac OS: + ⌥ + R.
André Hauptfleisch
REMARQUE: Il peut s'écouler quelques minutes avant que la console supprime l'AMI de la liste. Choisissez Actualiser pour actualiser le statut.
Aniket Thakur
7

Il y a généralement 4 étapes à ce que vous recherchez:

  1. Mettez fin aux instances à l'aide de l'AMI (recommandation recommandée, en particulier pour les AMI sauvegardées S3) [Non requis avant de supprimer un AMI de tout type]
  2. Annuler l'enregistrement des AMI en utilisant ec2-deregister
  3. Supprimez les ensembles / instantanés sauvegardant l’AMI en utilisant ec2-delete-bundle(pour S3) ou ec2-delete-snapshot(pour EBS).
  4. Supprimez les volumes EBS (sauf s’ils sont configurés pour être supprimés à la fin, auquel cas ils seraient supprimés à l’étape 1). Ce n'est pas nécessaire pour les instances S3. [Encore une fois, il n'est pas nécessaire de mettre fin aux instances ou de supprimer des volumes si vous souhaitez simplement supprimer une image AMI.]

Gardez à l'esprit que les instantanés et les images sont indépendants. Vous pouvez créer un volume EBS à partir d’un instantané et l’utiliser en tant que lecteur secondaire au lieu d’un lecteur de démarrage. En outre (dans le cas d'instances Linux), il est possible de créer une nouvelle image à partir d'un instantané existant - ce qui donne à penser que tous ceux qui souhaitent supprimer une image ne souhaitent pas également supprimer le ou les instantanés associés. (Bien que vous puissiez enregistrer un instantané pour créer une AMI Windows, l'AMI n'est pas lancable.)

Il convient de noter qu'AWS ne vous laissera pas supprimer un instantané associé à une AMI avant de vous désenregistrer de l'AMI.

En vous concentrant sur les étapes 2 et 3 ci-dessus, vous devez d'abord rechercher le ou les ID d'instantané associés à une AMI. Cela devrait être répertorié comme faisant partie des mappages de périphériques de bloc. Généralement, le volume EBS racine a le point de montage / dev / sda1. Vous pouvez annuler l'enregistrement de l'AMI à partir de la ligne de commande (ou utiliser la console AWS), puis supprimer l'instantané (à nouveau, à partir de la ligne de commande ou de la console AWS).

Si vous avez besoin d'effectuer cette tâche plus souvent, vous voudrez scripter le processus. Certaines bibliothèques telles que Python Boto incluent une fonction permettant de faire exactement cela:

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

Par exemple, un exemple de script (complètement non testé et simplement bricolé - à vos risques et périls!) Basé sur ce qui précède pourrait ressembler à ceci:

#!/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
la source
1
Il n'est pas nécessaire de mettre fin aux instances d'une AMI avant de supprimer cette dernière. L’AMI n’est utilisée que pour démarrer les instances et celles-ci peuvent continuer à bien fonctionner sans elle. Toutefois, si vous supprimez l'AMI et que les instances échouent, il peut s'avérer difficile de démarrer des instances de remplacement sans l'AMI. Soyez donc prudent.
Eric Hammond
1
AWS recommandait de mettre fin aux instances pour un «nettoyage complet». Toutefois, en principe, cela ne devrait pas être nécessaire pour supprimer une AMI. Je me demande toutefois si cela peut avoir de l'importance dans certains cas, puisque les volumes EBS se chargent "paresseusement", si un instantané est supprimé peu de temps après le lancement d'une instance, mais avant que le volume EBS ne soit complètement chargé, cela pourrait poser problème.
cyberx86
@ cyberx86: Si la suppression d'un instantané affectait une nouvelle création de volume, le problème serait plus grave que celui de supprimer uniquement les AMI. Étant donné le temps nécessaire au remplissage complet d'un volume à partir d'un instantané, il devrait être facile de tester avec un instantané plein de données.
Eric Hammond
2
@EricHammond: une recherche rapide montre qu'AWS ne supprimera apparemment pas l'instantané tant que les données ne sont pas chargées, mais vous laissera tout de même effectuer la suppression (probablement en maintenant simplement l'instantané jusqu'à ce que vous n'en ayez plus besoin).
cyberx86
@ cyberx86: Comme je le soupçonnais, mais bon à savoir avec certitude. Merci d'avoir consulté.
Eric Hammond
1

L' awscli peut également le faire.

D'abord, obtenez l'id shapshot en utilisant describe-images:

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

Puis annulez l'enregistrement de l'image et supprimez l'instantané:

aws ec2 deregister-image --image-id ami-0123456789
aws ec2 delete-snapshot --snapshot-id snap-9876543210
Kristi
la source