Normalmente, existem 4 etapas para o que você está procurando:
Finalize instâncias usando a AMI (recomende a prática especialmente para AMIs suportadas pelo S3) [Não é necessário antes de excluir uma AMI de qualquer tipo]
- Cancele o registro de AMIs usando
ec2-deregister
- Exclua os pacotes configuráveis / instantâneos que fazem backup da AMI usando
ec2-delete-bundle
(para S3) ou ec2-delete-snapshot
(para EBS).
Exclua os volumes EBS (a menos que estejam definidos para serem excluídos na finalização, nesse caso, eles seriam removidos na etapa 1). Isso não é necessário para instâncias suportadas pelo S3. [Novamente, não é necessário encerrar instâncias ou excluir volumes se você quiser excluir uma AMI.]
Lembre-se de que instantâneos e imagens são independentes. Você pode criar um volume EBS a partir de um instantâneo e usá-lo como uma unidade secundária em vez de uma unidade de inicialização. Além disso (no caso de instâncias do Linux), é possível criar uma nova imagem a partir de um instantâneo existente - o que justifica a idéia de que nem todo mundo que deseja excluir uma imagem também deseja excluir o (s) instantâneo (s) associado (s). (Embora você possa registrar um instantâneo para criar uma AMI do Windows, a AMI não pode ser iniciada.)
É importante observar que a AWS não permitirá que você exclua um instantâneo associado a uma AMI antes de cancelar o registro da AMI.
Focando nas etapas 2 e 3 acima, primeiro você precisa encontrar os IDs de snapshots associados a uma AMI. Isso deve ser listado como parte dos mapeamentos do dispositivo de bloco. Normalmente, o volume EBS raiz tem o ponto de montagem / dev / sda1. Você pode cancelar o registro da AMI na linha de comando (ou usar o console da AWS) e excluir o instantâneo (novamente, da linha de comando ou do console da AWS).
Se você precisou executar essa tarefa com mais frequência, desejaria criar um script do processo. Algumas bibliotecas como o Python Boto incluem uma função para fazer exatamente isso:
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 exemplo, um script de amostra (completamente não testado e apenas remendado - use por seu próprio risco!) Com base no exposto acima:
#!/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)