Ada biasanya 4 langkah untuk apa yang Anda cari:
Hentikan instans menggunakan AMI (merekomendasikan praktik terutama untuk AMI yang didukung S3) [Tidak diperlukan sebelum menghapus AMI dari jenis apa pun]
- AMI Deregister menggunakan
ec2-deregister
- Hapus bundel / foto yang mendukung AMI menggunakan
ec2-delete-bundle
(untuk S3) atau ec2-delete-snapshot
(untuk EBS).
Hapus volume EBS (kecuali jika diatur untuk dihapus pada penghentian, dalam hal ini, mereka akan dihapus pada langkah # 1). Ini tidak perlu untuk instance yang didukung S3. [Sekali lagi, tidak perlu mengakhiri instance atau menghapus volume jika Anda hanya ingin menghapus AMI.]
Perlu diingat bahwa foto dan gambar adalah independen. Anda dapat membuat volume EBS dari snapshot dan menggunakannya sebagai drive sekunder alih-alih sebagai boot drive. Lebih lanjut (dalam kasus Linux misalnya) dimungkinkan untuk membuat gambar baru dari snapshot yang ada - yang memberikan alasan pada gagasan bahwa tidak semua orang yang ingin menghapus gambar juga ingin menghapus snapshot terkait. (Meskipun Anda dapat mendaftarkan snapshot untuk membuat AMI Windows, AMI tidak dapat diluncurkan.)
Perlu dicatat bahwa AWS tidak akan membiarkan Anda menghapus snapshot yang terkait dengan AMI sebelum Anda membatalkan registrasi AMI.
Berfokus pada langkah 2 dan 3 di atas, Anda harus terlebih dahulu menemukan ID snapshot yang terkait dengan AMI. Ini harus terdaftar sebagai bagian dari pemetaan perangkat blok. Biasanya, volume EBS root memiliki titik mount / dev / sda1. Anda dapat membatalkan registrasi AMI dari baris perintah (atau menggunakan konsol AWS) dan kemudian menghapus snapshot (lagi, baik dari baris perintah atau konsol AWS).
Jika Anda perlu melakukan tugas ini lebih sering, Anda ingin membuat skrip proses. Beberapa perpustakaan seperti Python Boto menyertakan fungsi untuk melakukan hal ini:
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
Misalnya skrip sampel (benar-benar belum diuji, dan hanya dirakit - gunakan dengan risiko Anda sendiri!) Berdasarkan pada contoh di atas mungkin terlihat seperti:
#!/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)