Il y a généralement 4 étapes pour ce que vous cherchez:
Terminer les instances en utilisant l'AMI (pratique recommandée surtout pour les AMI sauvegardées dans S3) [Non requis avant de supprimer une AMI de n'importe quel type]
- Désenregistrer les AMIs en utilisant
ec2-deregister
- Supprimer les bundles/snapshots soutenant l'AMI en utilisant
ec2-delete-bundle
(pour S3) ou ec2-delete-snapshot
(pour EBS).
Supprimer les volumes EBS (sauf s'ils sont configurés pour être supprimés lors de la terminaison, auquel cas, ils seraient supprimés à l'étape n°1). Ceci n'est pas nécessaire pour les instances sauvegardées dans S3. [Encore une fois, il n'est pas nécessaire de terminer les instances ou de supprimer les volumes si vous voulez simplement supprimer une AMI.]
Gardez à l'esprit que les snapshots et images sont indépendants. Vous pouvez créer un volume EBS à partir d'un snapshot et l'utiliser comme disque secondaire au lieu de disque de démarrage. De plus (dans le cas d'instances Linux) il est possible de créer une nouvelle image à partir d'un snapshot existant - ce qui explique pourquoi tout le monde ne souhaite pas supprimer une image veut également supprimer les snapshots associés. (Bien qu'il soit possible d'enregistrer un snapshot pour créer une AMI Windows, l'AMI n'est pas lancée.)
Il convient de noter que AWS ne vous permettra pas de supprimer un snapshot associé à une AMI avant de désenregistrer l'AMI.
En se concentrant sur les étapes 2 et 3 ci-dessus, vous devez d'abord trouver l'ID du snapshot(s) associé(s) à une AMI. Cela devrait être répertorié dans le cadre des mappings des périphériques de blocs. Généralement, le volume EBS racine a le point de montage /dev/sda1. Vous pouvez désenregistrer l'AMI en ligne de commande (ou utiliser la console AWS) puis supprimer le snapshot (encore une fois, soit en ligne de commande soit dans la console AWS).
Si vous deviez effectuer cette tâche plus souvent, vous voudriez scripter le processus. Certaines bibliothèques comme Python Boto incluent une fonction pour faire exactement cela:
deregister_image(image_id, delete_snapshot=False)
Désenregistrer une AMI.
Paramètres:
image_id (chaîne) – l'ID de l'image à désenregistrer
delete_snapshot (booleen) – Définir sur True si nous devons supprimer le snapshot associé à un volume EBS monté sur /dev/sda1
Par exemple, un script type (complètement non testé, et simplement bricolé ensemble - à utiliser à vos propres risques!) 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("Suppression de %s et des snapshots\n" % str(args))
ec2delete(args)
0 votes
Consultez Comment supprimer une AMI EC2 privée d'AWS