web-dev-qa-db-fra.com

Comment supprimer EC2 AMI

Je sais que la commande ec2-create-image instance-id créera une image de l'instance ec2, créera un fichier d'instantanés et s'enregistrera en tant qu'AMI. Mais quelle est la commande équivalente pour supprimer l'image qui supprimera les fichiers instantanés associés et désenregistrera l'AMI?

45
James W.

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

  1. Ouvrez la console Amazon EC2 à 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 Désenregistrer. 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É

61
Benjamin Smith Max

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

  1. Mettre fin aux instances à l'aide de l'AMI (recommander la pratique en particulier pour les AMI soutenues S3)  [Non requis avant de supprimer une AMI de tout type]
  2. Désenregistrer les AMI à l'aide de ec2-deregister
  3. Supprimez les ensembles/instantanés sauvegardant l'AMI à l'aide de ec2-delete-bundle (pour S3) ou ec2-delete-snapshot (pour EBS).
  4. Supprimez les volumes EBS (sauf s'ils sont définis pour être supprimés à la fin, auquel cas ils seront supprimés à l'étape 1). Cela n'est pas nécessaire pour les instances soutenues par 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 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 comme lecteur secondaire plutôt que comme lecteur de démarrage. De plus (dans le cas des instances Linux), il est possible de créer une nouvelle image à partir d'un instantané existant - ce qui donne raison à l'idée que tous ceux qui souhaitent supprimer une image ne veulent 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 désenregistrer l'AMI.

En vous concentrant sur les étapes 2 et 3 ci-dessus, vous devez d'abord trouver les ID de capture instantanée associés à une AMI. Cela doit être répertorié dans le cadre des mappages de périphérique de bloc. En règle générale, 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, soit à partir de la ligne de commande ou de la console AWS).

Si vous aviez besoin d'exécuter cette tâche plus souvent, vous voudriez créer un script pour le processus. Certaines bibliothèques telles que Python Boto incluent une fonction pour 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 à:

#!/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)
7
cyberx86

Le aws cli peut également le faire.

Obtenez d'abord l'ID de l'instantané en utilisant describe-images:

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

Désenregistrez ensuite l'image et supprimez l'instantané:

aws ec2 deregister-image --image-id AMI-0123456789
aws ec2 delete-snapshot --snapshot-id snap-9876543210
2
kristi
#!/bin/bash

#put your AMI's in AMI.txt

for i in `cat AMI.txt`;
do

#put the regions in regions.txt

for r in `cat regions.txt`;do echo $r >>/dev/null;
for e in `cat regions.txt`;do aws ec2 describe-images --image-ids $i --region $r | grep "ImageId\|SnapshotId" | awk -F':' '{print $2}' | tr -d '"',',' | grep "snap" > snapshot.txt;
for s in `cat snapshot.txt`;do aws ec2 deregister-image --image-id $i --region $r;
aws ec2 delete-snapshot --snapshot-id $s --region $r;echo $i $s >> amidel.txt;done;done;
done;
done

#you can check the AMI/snapshots which has been de-registered/deleted
0
arun kumar