Dimungkinkan untuk memaksa pembuatan ulang instance EC2 atau RDS menggunakan tumpukan cloudformation?
Tumpukan saya macet di titik di mana hanya menghancurkan dan membuat sumber daya akan memperbaikinya, alih-alih saya harus menghapus seluruh tumpukan untuk melanjutkan pekerjaan.
edit:
Masalah ini memukul saya dua kali. Pertama saya membuat AWS :: RDS :: Instance dengan beberapa default dan kemudian mencoba untuk menurunkannya ke "EngineVersion": "5.5". Mengubah ini seharusnya terjadi dengan beberapa gangguan, tetapi contoh mysql tidak dapat diturunkan dari 5,6 menjadi 5,5 sehingga tumpukan dibiarkan dalam keadaan UPDATE_FAILED dan saya tidak dapat dapat membuat kembali RDS tanpa trik yang buruk.
Kejadian lain adalah bahwa saya memiliki beberapa "AWS :: EC2 :: Instance" yang mengunduh dan mengeksekusi skrip dari itu "UserData" jelas jika Y mengubah skrip yang diunduh saya harus merekam kembali instance, dan tidak ada cara untuk melakukannya. Sekali lagi saya menggunakan trik jahat yang sama untuk membuat mesin diciptakan kembali.
Trik jahat:
Alih-alih menggunakan kelompok autoscaling dari satu mesin, saya memecahkan kedua masalah mengubah zona ketersediaan di properti ... tetapi meninggalkan saya dengan selera yang buruk
cfn-hup
: docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/…Jawaban:
Misalnya instance EC2 yang didukung toko, satu trik adalah menambahkan komentar ke skrip data pengguna yang berisi nomor versi, tanggal, atau yang serupa, lalu ubah setiap kali Anda ingin instance dibuat:
Setiap perubahan
UserData
akan menyebabkan instance diganti (yaitu, dibuat ulang). Perilaku skrip data pengguna harus sama, karena satu-satunya modifikasi adalah komentar. Perhatikan bahwa ini tidak berfungsi untuk mesin virtual yang didukung EBS.Untuk RDS, Anda bisa mengambil snapshot DB dari instance RDS saat ini, lalu memodifikasi templat Anda untuk menggunakan snapshot itu dengan
DBSnapshotIdentifier
:Setiap kali
DBSnapshotIdentifier
diubah, instance database akan diganti. Menggunakan snapshot juga akan membuat Anda menyimpan data dari saat snapshot dibuat. (Jika Anda ingin menghapus data, Anda dapat membuat snapshot kosong dan mengirimkannya sebagai input. Atau menghapus dan membuat ulang seluruh tumpukan CloudFormation.)Pendekatan yang lebih umum adalah mengubah nama logis sumber daya tersebut. Dari Memodifikasi Template Tumpukan di dokumen CloudFormation:
sumber
Jika Anda memasukkannya ke dalam AutoScalingGroup, Anda dapat mengedit min AutoScalingGroup min / maks / default ke 0, kemudian segera setelah mulai menghancurkan contoh lama, Anda kemudian dapat menempatkan min / max / default ke 1/1/1 dan presto: contoh baru.
sumber
Jika EC2 Anda menjadi AutoScalingGroup Anda dapat mengatur
AutoScalingGroupName
properti dengan nomor versi di dalamnya.Setiap kali Anda mengubah nomor versi itu CFN akan: 1. membuat grup penskalaan otomatis baru dan memutar instance yang diinginkan 2. membunuh instans dalam grup penskalaan otomatis yang lama dan menghapusnya
Berikut adalah sepotong kode dari tumpukan saya di mana saya menggunakan teknik ini untuk memaksa sejumlah besar mesin EC2 untuk membuat ulang dan secara otomatis menarik perangkat lunak baru dari S3.
sumber