Kita berakhir dengan sejumlah besar snapshot AWS EC2 di mana AMI telah dihapus, tetapi snapshot tersebut ditinggalkan untuk membusuk. Saya ingin cara non-manual mengidentifikasi dan menghapus anak-anak yatim ini untuk menghemat uang dan ruang.
Idealnya saya sedang memikirkan skrip bash yang meningkatkan CLI , tetapi AWS-fu saya lemah. Saya berasumsi seseorang telah melakukan ini sebelumnya tetapi saya tidak dapat menemukan skrip yang benar-benar berfungsi.
Dalam skenario terbaik, ini juga akan memeriksa volume dan membersihkannya juga, tetapi itu mungkin lebih cocok untuk pertanyaan kedua.
Jawaban:
Sebagian besar terinspirasi oleh posting blog dan intisari sudah ditautkan dalam jawaban lain, di sini adalah saya mengambil masalah.
Saya memang menggunakan beberapa fungsi JMESpath yang berbelit-belit untuk mendapatkan daftar foto dan tidak perlu
tr
.Penafian : Gunakan dengan risiko Anda sendiri , saya melakukan yang terbaik untuk menghindari masalah dan tetap waras, tetapi saya tidak akan bertanggung jawab jika itu menyebabkan masalah bagi Anda.
Saya harap skrip itu sendiri cukup dikomentari.
Penggunaan default (tanpa-params) akan mencantumkan perintah penghapusan snapshot yatim untuk akun saat ini dan wilayah eu-west-1, ekstrak:
Anda dapat mengarahkan output ini ke file untuk ditinjau sebelum mengambilnya untuk menjalankan semua perintah.
Jika Anda ingin skrip mengeksekusi perintah alih-alih mencetaknya, ganti
print(cmd)
dengansystem(cmd)
.Penggunaan adalah sebagai ikuti dengan skrip bernama
snap_cleaner
:untuk perintah dry-run di wilayah us-west-1
untuk perintah yang dapat digunakan di eu-central-1
Parameter ketiga dapat digunakan untuk mengakses akun lain (saya lebih suka untuk beralih peran ke akun lain sebelumnya).
Lepaskan versi skrip dengan skrip awk sebagai oneliner:
sumber
Saya menggunakan skrip berikut di GitHub oleh Rodrigue Koffi (bonclay7) dan ini bekerja dengan sangat baik.
https://github.com/bonclay7/aws-amicleaner
Perintah:
Dari posting blog dokumentasi itu melakukan beberapa hal lagi:
sumber
Berikut ini adalah satu skrip yang dapat membantu Anda menemukan foto-foto yatim
(dari sini )
Anda juga dapat memeriksa artikel ini dari serverfault
PS Tentu saja Anda dapat mengubah wilayah untuk mencerminkan Anda
PPS Berikut adalah kode yang diperbarui:
Contoh exaplanations yang dilakukan oleh kode:
kirim ke STDOUT daftar foto. konstruksi ini:
buat filehandler sementara virtual untuk membuat
comm
perintah membaca dari dua "file" dan membandingkannyasumber
Berikut ini cuplikan kode GitHub Gist dari apa yang Anda minta oleh Daniil Yaroslavtsev.
Ini menggunakan daftar semua gambar dan snapshot mereka dan membandingkan ID untuk daftar semua ID snapshot. Apa pun yang tersisa adalah yang yatim piatu. Kode ini bekerja dengan prinsip yang sama dengan jawaban di atas, tetapi lebih baik diformat dan sedikit lebih mudah dibaca.
Kode mengambil keuntungan dari opsi JMESPath dengan
--query Snapshots[*].SnapshotId
(Anda juga dapat menggunakan utilitas baris perintah jp untuk itu, jika sudah dalam distribusi Anda. Format output sebagai teks dengan--output text
. Berikut adalah tautan ke referensi API dan beberapa contoh. Ini sedikit lebih elegan dari rantai panjang pipa grep / awk / sort / uniq / tr.Peringatan oleh Todd Walton : Jangan salah dengan utilitas 'jq' yang menggunakan bahasa kueri yang berbeda untuk mem-parsing dokumen json.
sumber
Saya telah menulis skrip snapshots.py yang mengulang semua snapshot (dalam daftar wilayah yang ditentukan) dan menghasilkan
report.csv
. File ini berisi informasi tentang instance, AMI dan volume yang dirujuk oleh semua snapshot.Ada juga perintah untuk secara interaktif menghapus snapshot yang menjuntai.
sumber