Memecahkan masalah Auto Scaling Amazon EC2 - AWS CodeDeploy

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memecahkan masalah Auto Scaling Amazon EC2

Pemecahan masalah Penskalaan Otomatis Amazon EC2 Umum

Penerapan ke instans EC2 dalam grup Auto Scaling Amazon EC2 dapat gagal karena alasan berikut:

  • Auto Scaling Amazon EC2 terus meluncurkan dan menghentikan instans EC2. Jika CodeDeploy tidak dapat menerapkan revisi aplikasi secara otomatis, Amazon EC2 Auto Scaling akan terus meluncurkan dan menghentikan instans EC2.

    Putuskan grup Auto Scaling Amazon EC2 dari grup penerapan atau ubah CodeDeploy konfigurasi grup Auto Scaling Amazon EC2 Anda sehingga jumlah instans yang diinginkan cocok dengan jumlah instans saat ini (sehingga mencegah Penskalaan Otomatis Amazon EC2 meluncurkan instans EC2 lagi). Untuk informasi selengkapnya, lihat Ubah setelan grup penerapan dengan CodeDeploy atau Penskalaan Manual untuk Auto Scaling Amazon EC2.

  • CodeDeploy Agen tidak responsif. CodeDeploy Agen mungkin tidak diinstal jika skrip inisialisasi (misalnya, skrip cloud-init) yang berjalan segera setelah instans EC2 diluncurkan atau dimulai membutuhkan waktu lebih dari satu jam untuk dijalankan. CodeDeploy memiliki batas waktu satu jam bagi CodeDeploy agen untuk menanggapi penerapan yang tertunda. Untuk mengatasi masalah ini, pindahkan skrip inisialisasi Anda ke dalam revisi CodeDeploy aplikasi Anda.

  • Instans EC2 dalam grup Auto Scaling Amazon EC2 melakukan reboot selama penerapan. Penerapan Anda bisa gagal jika instans EC2 di-boot ulang selama penerapan atau CodeDeploy agen dimatikan saat memproses perintah penerapan. Untuk informasi selengkapnya, lihat Mengakhiri atau me-reboot instans Auto Scaling Amazon EC2 dapat menyebabkan penerapan gagal.

  • Beberapa revisi aplikasi diterapkan secara bersamaan ke instans EC2 yang sama dalam grup Auto Scaling Amazon EC2. Menerapkan beberapa revisi aplikasi ke instans EC2 yang sama dalam grup Auto Scaling Amazon EC2 secara bersamaan dapat gagal jika salah satu penerapan memiliki skrip yang berjalan selama lebih dari beberapa menit. Jangan menerapkan beberapa revisi aplikasi ke instans EC2 yang sama di grup Auto Scaling Amazon EC2.

  • Penerapan gagal untuk instans EC2 baru yang diluncurkan sebagai bagian dari grup Auto Scaling Amazon EC2. Dalam skenario ini, menjalankan skrip dalam penerapan dapat mencegah peluncuran instans EC2 di grup Auto Scaling Amazon EC2. (Instans EC2 lainnya di grup Auto Scaling Amazon EC2 mungkin tampak berjalan normal.) Untuk mengatasi masalah ini, pastikan semua skrip lainnya selesai terlebih dahulu:

    • CodeDeploy agen tidak termasuk dalam AMI Anda: Jika Anda menggunakan cfn-init perintah untuk menginstal CodeDeploy agen saat meluncurkan instance baru, letakkan skrip instalasi agen di akhir cfn-init bagian AWS CloudFormation template Anda.

    • CodeDeploy agen disertakan dalam AMI Anda: Konfigurasikan AMI sehingga agen dalam Stopped keadaan saat instance dibuat, lalu sertakan skrip untuk memulai agen sebagai langkah terakhir di pustaka cfn-init skrip Anda.

“CodeDeployRole tidak memberi Anda izin untuk melakukan operasi di AWS layanan berikut: AmazonAutoScaling" kesalahan

Penerapan yang menggunakan grup Auto Scaling yang dibuat dengan template peluncuran memerlukan izin berikut. Ini adalah tambahan dari izin yang diberikan oleh kebijakan AWSCodeDeployRole AWS terkelola.

  • EC2:RunInstances

  • EC2:CreateTags

  • iam:PassRole

Anda mungkin menerima kesalahan ini jika Anda kehilangan izin ini. Untuk informasi selengkapnya, lihatTutorial: Gunakan CodeDeploy untuk menyebarkan aplikasi ke grup Auto Scaling, Membuat template peluncuran untuk grup Auto Scaling, dan Izin di Panduan Pengguna Auto Scaling Amazon EC2.

Instans dalam grup Auto Scaling Amazon EC2 terus disediakan dan dihentikan sebelum revisi dapat diterapkan

Dalam beberapa kasus, kesalahan dapat mencegah penerapan yang berhasil ke instans yang baru disediakan di grup Auto Scaling Amazon EC2. Hasilnya bukan contoh yang sehat dan tidak ada penerapan yang berhasil. Karena penerapan tidak dapat berjalan atau diselesaikan dengan sukses, instance dihentikan segera setelah dibuat. Konfigurasi grup Auto Scaling Amazon EC2 kemudian menyebabkan kumpulan instans lain disediakan untuk mencoba memenuhi persyaratan host sehat minimum. Batch ini juga dihentikan, dan siklus berlanjut.

Kemungkinan penyebabnya meliputi:

  • Pemeriksaan kesehatan grup Auto Scaling Amazon EC2 yang gagal.

  • Kesalahan dalam revisi aplikasi.

Untuk mengatasi masalah ini, ikuti langkah-langkah berikut:

  1. Buat instans EC2 secara manual yang bukan bagian dari grup Auto Scaling Amazon EC2. Tandai instance dengan tag instans EC2 yang unik.

  2. Tambahkan instance baru ke grup penyebaran yang terpengaruh.

  3. Terapkan revisi aplikasi baru yang bebas kesalahan ke grup penyebaran.

Ini meminta grup Auto Scaling Amazon EC2 untuk menerapkan revisi aplikasi ke instans masa depan di grup Auto Scaling Amazon EC2.

catatan

Setelah mengonfirmasi bahwa penerapan berhasil, hapus instans yang Anda buat untuk menghindari tagihan yang sedang berlangsung ke akun Anda AWS .

Mengakhiri atau me-reboot instans Auto Scaling Amazon EC2 dapat menyebabkan penerapan gagal

Jika instans EC2 diluncurkan melalui Auto Scaling Amazon EC2, dan instans kemudian dihentikan atau di-boot ulang, penerapan ke instance tersebut mungkin gagal karena alasan berikut:

  • Selama penerapan yang sedang berlangsung, peristiwa scale-in atau peristiwa penghentian lainnya menyebabkan instans terlepas dari grup Auto Scaling Amazon EC2 dan kemudian dihentikan. Karena penerapan tidak dapat diselesaikan, itu gagal.

  • Instans di-boot ulang, tetapi dibutuhkan lebih dari lima menit untuk memulai instance. CodeDeploy memperlakukan ini sebagai batas waktu. Layanan gagal semua penerapan saat ini dan masa depan ke instance.

Untuk mengatasi masalah ini:

  • Secara umum, pastikan bahwa semua penerapan selesai sebelum instance dihentikan atau di-boot ulang. Pastikan bahwa semua penerapan dimulai setelah instance dimulai atau di-boot ulang.

  • Penerapan dapat gagal jika Anda menentukan Amazon Machine Image (AMI) berbasis Windows Server untuk konfigurasi Auto Scaling Amazon EC2 dan menggunakan layanan EC2config untuk menyetel nama komputer instance. Untuk memperbaiki masalah ini, di basis Windows Server AMI, pada tab Umum Properti Layanan EC2, hapus Set Nama Komputer. Setelah Anda menghapus kotak centang ini, perilaku ini dinonaktifkan untuk semua instans Auto Scaling Amazon EC2 Windows Server baru yang diluncurkan dengan AMI basis Windows Server. Untuk instans Auto Scaling Amazon EC2 Windows Server yang mengaktifkan perilaku ini, Anda tidak perlu menghapus kotak centang ini. Cukup terapkan ulang penerapan yang gagal ke instance tersebut setelah di-boot ulang.

Hindari mengaitkan beberapa grup penerapan dengan satu grup Auto Scaling Amazon EC2

Sebagai praktik terbaik, Anda harus mengaitkan hanya satu grup penerapan dengan setiap grup Auto Scaling Amazon EC2.

Ini karena jika Amazon EC2 Auto Scaling meningkatkan skala instance yang memiliki kait yang terkait dengan beberapa grup penerapan, maka akan mengirimkan notifikasi untuk semua hook sekaligus. Hal ini menyebabkan beberapa penerapan ke setiap instance dimulai pada waktu yang bersamaan. Saat beberapa penerapan mengirim perintah ke CodeDeploy agen secara bersamaan, batas waktu lima menit antara peristiwa siklus hidup dan awal penerapan atau akhir peristiwa siklus hidup sebelumnya mungkin tercapai. Jika ini terjadi, penerapan gagal, bahkan jika proses penerapan berjalan seperti yang diharapkan.

catatan

Batas waktu default untuk skrip dalam acara siklus hidup adalah 30 menit. Anda dapat mengubah batas waktu ke nilai yang berbeda dalam AppSpec file. Untuk informasi selengkapnya, lihat Menambahkan AppSpec file untuk penerapan EC2/On-premise.

Tidak mungkin untuk mengontrol urutan penerapan terjadi jika lebih dari satu penerapan mencoba dijalankan pada saat yang bersamaan.

Terakhir, jika penerapan ke instans apa pun gagal, Auto Scaling Amazon EC2 segera menghentikan instance. Ketika instance pertama dimatikan, penerapan lain yang berjalan mulai gagal. Karena CodeDeploy memiliki batas waktu satu jam bagi CodeDeploy agen untuk merespons penerapan yang tertunda, dibutuhkan waktu hingga 60 menit untuk setiap instance hingga time out.

Untuk informasi selengkapnya tentang Auto Scaling Amazon EC2, lihat Under the hood: dan integrasi CodeDeploy Auto Scaling.

Instans EC2 dalam grup Auto Scaling Amazon EC2 gagal diluncurkan dan menerima kesalahan “Heartbeat Timeout”

Grup Auto Scaling Amazon EC2 mungkin gagal meluncurkan instans EC2 baru, menghasilkan pesan yang mirip dengan berikut ini:

Launching a new EC2 instance <instance-Id>. Status Reason: Instance failed to complete user's Lifecycle Action: Lifecycle Action with token<token-Id> was abandoned: Heartbeat Timeout.

Pesan ini biasanya menunjukkan salah satu dari yang berikut:

  • Jumlah maksimum penerapan bersamaan yang terkait dengan AWS akun tercapai. Untuk informasi selengkapnya tentang batas penerapan, lihatCodeDeploy kuota.

  • Grup Auto Scaling mencoba meluncurkan terlalu banyak instans EC2 terlalu cepat. Panggilan API ke RecordLifecycleActionHeartbeatatau CompleteLifecycleActionuntuk setiap instance baru dibatasi.

  • Aplikasi di CodeDeploy dihapus sebelum grup penyebaran terkait diperbarui atau dihapus.

    Saat Anda menghapus aplikasi atau grup penerapan, CodeDeploy mencoba membersihkan kait Auto Scaling Amazon EC2 yang terkait dengannya, tetapi beberapa kait mungkin tetap ada. Jika Anda menjalankan perintah untuk menghapus grup penyebaran, kait sisa dikembalikan dalam output. Namun, jika Anda menjalankan perintah untuk menghapus aplikasi, kait sisa tidak muncul di output.

    Oleh karena itu, sebagai praktik terbaik, Anda harus menghapus semua grup penyebaran yang terkait dengan aplikasi sebelum Anda menghapus aplikasi. Anda dapat menggunakan output perintah untuk mengidentifikasi kait siklus hidup yang harus dihapus secara manual.

Jika Anda menerima pesan galat “Heartbeat Timeout”, Anda dapat menentukan apakah kait siklus hidup yang tersisa adalah penyebabnya dan menyelesaikan masalah dengan melakukan hal berikut:

  1. Lakukan salah satu hal berikut ini:

    • Panggil delete-deployment-groupperintah untuk menghapus grup penyebaran yang terkait dengan grup Auto Scaling yang menyebabkan batas waktu detak jantung.

    • Panggil update-deployment-groupperintah dengan daftar nama grup Auto Scaling yang tidak kosong untuk melepaskan semua kait siklus hidup Auto Scaling yang dikelola CodeDeploy.

      Misalnya, masukkan AWS CLI perintah berikut:

      aws deploy update-deployment-group --application-name my-example-app --current-deployment-group-name my-deployment-group --auto-scaling-groups

      Sebagai contoh lain, jika Anda menggunakan CodeDeploy API dengan Java, panggil UpdateDeploymentGroup dan atur autoScalingGroups kenew ArrayList<String>(). Ini ditetapkan autoScalingGroups ke daftar kosong dan menghapus daftar yang ada. Jangan gunakannull, yang merupakan default, karena ini meninggalkan apa autoScalingGroups adanya, yang bukan yang Anda inginkan.

    Periksa output panggilan. Jika output berisi hooksNotCleanedUp struktur dengan daftar kait siklus hidup Auto Scaling Amazon EC2, ada kait siklus hidup yang tersisa.

  2. Panggil describe-lifecycle-hooksperintah, tentukan nama grup Auto Scaling Amazon EC2 yang terkait dengan instans EC2 yang gagal diluncurkan. Dalam output, cari salah satu dari berikut ini:

    • Nama kait siklus hidup Auto Scaling Amazon EC2 yang sesuai dengan struktur yang Anda identifikasi hooksNotCleanedUp pada langkah 1.

    • Nama kait siklus hidup Auto Scaling Amazon EC2 yang berisi nama grup penerapan yang terkait dengan grup Auto Scaling yang gagal.

    • Nama kait siklus hidup Auto Scaling Amazon EC2 yang mungkin menyebabkan batas waktu detak jantung untuk penerapan. CodeDeploy

  3. Jika hook jatuh ke dalam salah satu kategori yang tercantum dalam langkah 2, panggil delete-lifecycle-hookperintah untuk menghapusnya. Tentukan grup Auto Scaling Amazon EC2 dan kait siklus hidup dalam panggilan.

    penting

    Hanya hapus kait yang menyebabkan masalah, seperti yang diuraikan pada langkah 2. Jika Anda menghapus hook yang layak, penerapan Anda mungkin gagal, atau CodeDeploy mungkin tidak dapat menerapkan revisi aplikasi Anda ke instans EC2 yang diskalakan.

  4. Panggil create-deployment-groupperintah update-deployment-groupatau dengan nama grup Auto Scaling yang diinginkan. CodeDeploymenginstal ulang kait Auto Scaling dengan UUID baru.

catatan

Jika Anda melepaskan grup Auto Scaling dari grup penerapan, setiap penerapan CodeDeploy yang sedang berlangsung ke grup Auto Scaling mungkin gagal, dan instans EC2 baru yang diskalakan oleh grup Auto Scaling tidak akan menerima revisi aplikasi Anda. CodeDeploy Agar Auto Scaling berfungsi kembali CodeDeploy, Anda harus melampirkan kembali grup Auto Scaling ke grup penerapan dan memanggil yang baru CreateDeployment untuk memulai penerapan di seluruh armada.

Kait siklus hidup Auto Scaling Amazon EC2 yang tidak cocok dapat menyebabkan penerapan otomatis ke grup Auto Scaling Amazon EC2 berhenti atau gagal

Auto Scaling Amazon EC2 CodeDeploy dan gunakan kait siklus hidup untuk menentukan revisi aplikasi mana yang harus diterapkan ke instans EC2 mana setelah diluncurkan di grup Auto Scaling Amazon EC2. Penerapan otomatis dapat berhenti atau gagal jika kait siklus hidup dan informasi tentang kait ini tidak sama persis di Amazon EC2 Auto Scaling dan. CodeDeploy

Jika penerapan ke grup Auto Scaling Amazon EC2 gagal, lihat apakah nama kait siklus hidup di Amazon EC2 Auto Scaling dan cocok. CodeDeploy Jika tidak, gunakan panggilan AWS CLI perintah ini.

Pertama, dapatkan daftar nama kait siklus hidup untuk grup Auto Scaling Amazon EC2 dan grup penerapan:

  1. Panggil describe-lifecycle-hooksperintah, tentukan nama grup Auto Scaling Amazon EC2 yang terkait dengan grup penerapan di. CodeDeploy Dalam output, dalam LifecycleHooks daftar, buat catatan setiap LifecycleHookName nilai.

  2. Panggil get-deployment-groupperintah, tentukan nama grup penyebaran yang terkait dengan grup Auto Scaling Amazon EC2. Dalam output, dalam autoScalingGroups daftar, temukan setiap item yang nilai namanya cocok dengan nama grup Auto Scaling Amazon EC2, lalu catat nilai yang sesuai. hook

Sekarang bandingkan dua set nama kait siklus hidup. Jika mereka cocok persis, karakter untuk karakter, maka ini bukan masalahnya. Anda mungkin ingin mencoba langkah-langkah pemecahan masalah Auto Scaling Amazon EC2 lainnya yang dijelaskan di tempat lain di bagian ini.

Namun, jika dua set nama kait siklus hidup tidak sama persis, karakter untuk karakter, lakukan hal berikut:

  1. Jika ada nama kait siklus hidup dalam output describe-lifecycle-hooks perintah yang tidak juga dalam output get-deployment-group perintah, maka lakukan hal berikut:

    1. Untuk setiap nama hook siklus hidup di output describe-lifecycle-hooks perintah, panggil perintah. delete-lifecycle-hook

    2. Panggil update-deployment-groupperintah, tentukan nama grup Auto Scaling Amazon EC2 asli. CodeDeploy membuat kait siklus hidup pengganti baru di grup Auto Scaling Amazon EC2 dan mengaitkan kait siklus hidup dengan grup penerapan. Penerapan otomatis sekarang harus dilanjutkan saat instans baru ditambahkan ke grup Auto Scaling Amazon EC2.

  2. Jika ada nama kait siklus hidup dalam output get-deployment-group perintah yang tidak juga dalam output describe-lifecycle-hooks perintah, lakukan hal berikut:

    1. Panggil update-deployment-groupperintah, tetapi jangan tentukan nama grup Auto Scaling Amazon EC2 asli.

    2. Panggil update-deployment-group perintah lagi, tetapi kali ini tentukan nama grup Auto Scaling Amazon EC2 asli. CodeDeploy membuat ulang kait siklus hidup yang hilang di grup Auto Scaling Amazon EC2. Penerapan otomatis sekarang harus dilanjutkan saat instans baru ditambahkan ke grup Auto Scaling Amazon EC2.

Setelah Anda mendapatkan dua set nama kait siklus hidup agar sama persis, karakter untuk karakter, revisi aplikasi harus diterapkan lagi, tetapi hanya untuk instance baru saat ditambahkan ke grup Auto Scaling Amazon EC2. Penerapan tidak terjadi secara otomatis ke instans yang sudah ada di grup Auto Scaling Amazon EC2.

Kesalahan “Penerapan gagal karena tidak ada instance yang ditemukan untuk grup penerapan Anda”

Baca bagian ini jika Anda melihat CodeDeploy kesalahan berikut:

The deployment failed because no instances were found for your deployment group. Check your deployment group settings to make sure the tags for your EC2 instances or Auto Scaling groups correctly identify the instances you want to deploy to, and then try again.

Kemungkinan penyebab kesalahan ini adalah:

  1. Setelan grup penerapan Anda menyertakan tag untuk instans EC2, instans lokal, atau grup Auto Scaling yang tidak benar. Untuk memperbaiki masalah ini, periksa apakah tag Anda sudah benar, lalu gunakan kembali aplikasi Anda.

  2. Armada Anda diperkecil setelah penyebaran dimulai. Dalam skenario ini, Anda melihat contoh sehat di InService negara bagian dalam armada Anda, tetapi Anda juga melihat kesalahan di atas. Untuk memperbaiki masalah ini, gunakan kembali aplikasi Anda.

  3. Grup Auto Scaling Anda tidak menyertakan instance apa pun yang berada dalam status. InService Dalam skenario ini, ketika Anda mencoba melakukan penerapan di seluruh armada, penerapan gagal dengan pesan kesalahan di atas karena CodeDeploy membutuhkan setidaknya satu instance untuk berada dalam status. InService Ada banyak alasan mengapa Anda mungkin tidak memiliki contoh di InService negara bagian. Beberapa di antaranya termasuk:

    • Anda menjadwalkan (atau mengonfigurasi secara manual) ukuran grup Auto Scaling. 0

    • Auto Scaling mendeteksi instans EC2 yang buruk (misalnya, instans EC2 mengalami kegagalan perangkat keras), jadi membatalkan semuanya, sehingga tidak meninggalkan status. InService

    • Selama acara skala keluar dari 0 ke1, CodeDeploy menerapkan revisi yang sebelumnya berhasil (disebut revisi sukses terakhir) yang telah menjadi tidak sehat sejak penerapan terakhir. Hal ini menyebabkan penerapan pada instance scaled-out gagal, yang pada gilirannya menyebabkan Auto Scaling membatalkan instance, sehingga tidak ada instance dalam status. InService

      Jika Anda menemukan bahwa Anda tidak memiliki instance di InService negara bagian, pecahkan masalah seperti yang dijelaskan dalam prosedur berikut,. To troubleshoot the error if there are no instances in the InService state

Untuk memecahkan masalah kesalahan jika tidak ada contoh di negara bagian InService
  1. Di konsol Amazon EC2, verifikasi pengaturan Kapasitas yang Diinginkan. Jika nol, atur ke angka positif. Tunggu instance menjadiInService, yang berarti penerapan berhasil. Anda telah memperbaiki masalah dan dapat melewati langkah-langkah yang tersisa dari prosedur pemecahan masalah ini. Untuk informasi tentang menyetel setelan Kapasitas yang Diinginkan, lihat Menyetel batas kapasitas pada grup Auto Scaling di Panduan Pengguna Penskalaan Otomatis Amazon EC2.

  2. Jika Auto Scaling terus mencoba meluncurkan instans EC2 baru untuk memenuhi kapasitas yang diinginkan tetapi tidak pernah dapat memenuhi skala, biasanya karena hook siklus hidup Auto Scaling yang gagal. Memecahkan masalah ini sebagai berikut:

    1. Untuk memeriksa peristiwa hook siklus hidup Auto Scaling mana yang gagal, lihat Memverifikasi aktivitas penskalaan untuk grup Auto Scaling di Panduan Pengguna Auto Scaling Amazon EC2.

    2. Jika nama hook yang gagal adalahCodeDeploy-managed-automatic-launch-deployment-hook-DEPLOYMENT_GROUP_NAME, buka, cari grup penerapan, dan temukan penerapan gagal yang dimulai oleh Auto Scaling. CodeDeploy Kemudian selidiki mengapa penerapan gagal.

    3. Jika Anda memahami mengapa penerapan gagal (misalnya, CloudWatch alarm terjadi) dan Anda dapat memperbaiki masalah tanpa mengubah revisi, lakukan sekarang.

    4. Jika, setelah penyelidikan, Anda menentukan bahwa CodeDeploy revisi terakhir yang berhasil tidak lagi sehat, dan tidak ada contoh sehat di grup Auto Scaling Anda, Anda berada dalam skenario kebuntuan penerapan. Untuk mengatasi masalah ini, Anda harus memperbaiki CodeDeploy revisi buruk dengan menghapus CodeDeploy kait siklus hidup sementara dari grup Auto Scaling, lalu menginstal ulang hook dan menerapkan kembali revisi baru (baik). Untuk instruksi, lihat:

Untuk memperbaiki masalah kebuntuan penerapan (CLI)
  1. (Opsional) Blokir pipeline CI/CD Anda yang menyebabkan CodeDeploy kesalahan sehingga penerapan yang tidak terduga tidak terjadi saat Anda memperbaiki masalah ini.

  2. Perhatikan pengaturan Auto Scaling DesiredCapacityAnda saat ini:

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name ASG_NAME

    Anda mungkin perlu mengurangi angka ini di akhir prosedur ini.

  3. Setel pengaturan Auto Scaling DesiredCapacityAnda ke. 1 Ini opsional jika kapasitas yang Anda inginkan lebih besar daripada 1 awalnya. Dengan menguranginya menjadi1, instance akan membutuhkan lebih sedikit waktu untuk menyediakan dan menerapkan nanti, yang mempercepat pemecahan masalah. Jika kapasitas yang diinginkan Auto Scaling Anda awalnya disetel ke0, Anda harus meningkatkannya. 1 Ini wajib.

    penskalaan otomatis aws set-desired-capacity -- auto-scaling-group-name ASG_NAME --desired-capacity 1

    catatan

    Langkah-langkah yang tersisa dari prosedur ini mengasumsikan Anda telah DesiredCapacitymengaturnya1.

    Pada titik ini, Auto Scaling mencoba menskalakan ke satu instance. Kemudian, karena hook yang CodeDeploy ditambahkan masih ada, CodeDeploy mencoba menerapkan; penerapan gagal; Auto Scaling membatalkan instance; dan Auto Scaling mencoba meluncurkan kembali instance untuk mencapai kapasitas yang diinginkan, yang lagi-lagi gagal. Anda berada dalam loop cancel-relaunch.

  4. Hapus registrasi grup Auto Scaling dari grup penerapan:

    Awas

    Perintah berikut akan meluncurkan instans EC2 baru tanpa perangkat lunak di dalamnya. Sebelum menjalankan perintah, pastikan bahwa InService instance Auto Scaling yang tidak menjalankan perangkat lunak dapat diterima. Misalnya, pastikan penyeimbang beban yang terkait dengan instance tidak mengirimkan lalu lintas ke host ini tanpa perangkat lunak.

    penting

    Gunakan CodeDeploy perintah yang ditunjukkan di bawah ini untuk menghapus kait. Jangan lepaskan kait melalui layanan Auto Scaling, karena penghapusan tidak akan dikenali oleh. CodeDeploy

    aws deploy update-deployment-group --application-name APPLICATION_NAME --current-deployment-group-name DEPLOYMENT_GROUP_NAME --auto-scaling-groups

    Setelah menjalankan perintah ini, berikut ini terjadi:

    1. CodeDeploy menghapus registrasi grup Auto Scaling dari grup penerapan.

    2. CodeDeploy menghapus hook siklus hidup Auto Scaling dari grup Auto Scaling.

    3. Karena hook yang menyebabkan penerapan gagal tidak lagi ada, Auto Scaling membatalkan instans EC2 yang ada dan segera meluncurkan yang baru untuk skala ke kapasitas yang diinginkan. Contoh baru harus segera pindah ke InService negara bagian. Contoh baru tidak termasuk perangkat lunak.

  5. Tunggu instans EC2 memasuki InService status. Untuk memverifikasi statusnya, gunakan perintah berikut:

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names ASG_NAME --query AutoScalingGroups[0].Instances[*].LifecycleState

  6. Tambahkan hook kembali ke instans EC2:

    penting

    Gunakan CodeDeploy perintah yang ditunjukkan di bawah ini untuk menambahkan hook. Jangan gunakan layanan Auto Scaling untuk menambahkan hook, karena penambahan tidak akan dikenali oleh. CodeDeploy

    aws deploy update-deployment-group --application-name APPLICATION_NAME --current-deployment-group-name DEPLOYMENT_GROUP_NAME --auto-scaling-groups ASG_NAME

    Setelah menjalankan perintah ini, berikut ini terjadi:

    1. CodeDeploy menginstal ulang hook siklus hidup Auto Scaling ke instans EC2

    2. CodeDeploy mendaftarkan ulang grup Auto Scaling dengan grup penerapan.

  7. Buat penyebaran seluruh armada dengan Amazon S3 atau GitHub revisi yang Anda tahu sehat dan ingin digunakan.

    Misalnya, jika revisi adalah file.zip di bucket Amazon S3 yang my-revision-bucket dipanggil dengan kunci objek, masukkan httpd_app.zip perintah berikut:

    aws deploy create-deployment --application-name APPLICATION_NAME --deployment-group-name DEPLOYMENT_GROUP_NAME --revision "revisionType=S3,s3Location={bucket=my-revision-bucket,bundleType=zip,key=httpd_app.zip}"

    Karena sekarang ada satu InService instance dalam grup Auto Scaling, penerapan ini seharusnya berfungsi, dan Anda seharusnya tidak lagi melihat kesalahan Penerapan gagal karena tidak ada instance yang ditemukan untuk grup penerapan Anda.

  8. Setelah penerapan berhasil, skala grup Auto Scaling Anda kembali ke kapasitas semula, jika sebelumnya Anda menskalakannya:

    aws autoscaling set-desired-capacity --auto-scaling-group-name ASG_NAME --desired-capacity ORIGINAL_CAPACITY

Untuk memperbaiki masalah kebuntuan penerapan (konsol)
  1. (Opsional) Blokir pipeline CI/CD Anda yang menyebabkan CodeDeploy kesalahan sehingga penerapan yang tidak terduga tidak terjadi saat Anda memperbaiki masalah ini.

  2. Buka konsol Amazon EC2, dan perhatikan pengaturan kapasitas Auto Scaling Desired Anda. Anda mungkin perlu mengurangi angka ini di akhir prosedur ini. Untuk informasi tentang menemukan setelan ini, lihat Menyetel batas kapasitas pada grup Auto Scaling Anda.

  3. Setel jumlah instans EC2 yang diinginkan ke: 1

    Ini opsional jika kapasitas yang Anda inginkan lebih besar daripada 1 awalnya. Dengan menguranginya menjadi1, instance akan membutuhkan lebih sedikit waktu untuk menyediakan dan menerapkan nanti, yang mempercepat pemecahan masalah. Jika kapasitas Auto Scaling Desired Anda awalnya disetel ke0, Anda harus meningkatkannya. 1 Ini wajib.

    catatan

    Langkah-langkah yang tersisa dari prosedur ini mengasumsikan Anda telah mengatur kapasitas yang diinginkan Anda1.

    1. Buka konsol Amazon EC2 di https://console.aws.amazon.com/ec2/, dan pilih Grup Auto Scaling dari panel navigasi.

    2. Pilih wilayah yang sesuai.

    3. Pergi ke grup Auto Scaling yang bermasalah.

    4. Di Detail grup, pilih Edit.

    5. Atur kapasitas yang diinginkan ke1.

    6. Pilih Perbarui.

  4. Hapus registrasi grup Auto Scaling dari grup penerapan:

    Awas

    Sub-langkah berikut akan meluncurkan instans EC2 baru tanpa perangkat lunak di dalamnya. Sebelum menjalankan perintah, pastikan bahwa InService instance Auto Scaling yang tidak menjalankan perangkat lunak dapat diterima. Misalnya, pastikan penyeimbang beban yang terkait dengan instance tidak mengirimkan lalu lintas ke host ini tanpa perangkat lunak.

    1. Buka CodeDeploy konsol di https://console.aws.amazon.com/codedeploy/.

    2. Pilih wilayah yang sesuai.

    3. Pada panel navigasi, pilih Aplikasi.

    4. Pilih nama CodeDeploy aplikasi Anda.

    5. Pilih nama grup CodeDeploy penyebaran Anda.

    6. Pilih Edit.

    7. Dalam konfigurasi Lingkungan, batalkan pilihan grup Auto Scaling Amazon EC2.

      catatan

      Konsol tidak memungkinkan Anda untuk menyimpan konfigurasi jika tidak ada konfigurasi lingkungan yang ditentukan. Untuk melewati pemeriksaan, tambahkan sementara tag EC2 atau On-premises yang Anda tahu tidak akan diselesaikan ke host mana pun. Untuk menambahkan tag, pilih instans Amazon EC2 atau Instans lokal, dan tambahkan Tag Kunci atau. EC2 On-premises Anda dapat membiarkan tag Nilai kosong.

    8. Pilih Simpan perubahan.

      Setelah menyelesaikan sub-langkah ini, hal berikut terjadi:

      1. CodeDeploy menghapus registrasi grup Auto Scaling dari grup penerapan.

      2. CodeDeploy menghapus hook siklus hidup Auto Scaling dari grup Auto Scaling.

      3. Karena hook yang menyebabkan penerapan gagal tidak lagi ada, Auto Scaling membatalkan instans EC2 yang ada dan segera meluncurkan yang baru untuk skala ke kapasitas yang diinginkan. Contoh baru harus segera pindah ke InService negara bagian. Contoh baru tidak termasuk perangkat lunak.

  5. Tunggu instans EC2 memasuki InService status. Untuk memverifikasi statusnya:

    1. Buka konsol Amazon EC2 di https://console.aws.amazon.com/ec2/.

    2. Di panel navigasi, pilih Grup Auto Scaling.

    3. Pilih grup Auto Scaling Anda.

    4. Di panel konten, pilih tab Manajemen Instance.

    5. Di bawah Instance, pastikan bahwa kolom Lifecycle menunjukkan di InServicesebelah instance.

  6. Daftarkan ulang grup Auto Scaling dengan CodeDeploy grup penyebaran menggunakan metode yang sama yang Anda gunakan untuk menghapusnya:

    1. Buka CodeDeploy konsol di https://console.aws.amazon.com/codedeploy/.

    2. Pilih wilayah yang sesuai.

    3. Pada panel navigasi, pilih Aplikasi.

    4. Pilih nama CodeDeploy aplikasi Anda.

    5. Pilih nama grup CodeDeploy penyebaran Anda.

    6. Pilih Edit.

    7. Dalam konfigurasi Lingkungan, pilih grup Auto Scaling Amazon EC2 dan pilih grup Auto Scaling Anda dari daftar.

    8. Di bawah instans Amazon EC2 atau instans Lokal, temukan tag yang Anda tambahkan dan hapus.

    9. Hapus centang kotak di samping instans Amazon EC2 atau Instans lokal.

    10. Pilih Simpan perubahan.

    Konfigurasi ini menginstal ulang hook siklus hidup ke grup Auto Scaling.

  7. Buat penyebaran seluruh armada dengan Amazon S3 atau GitHub revisi yang Anda tahu sehat dan ingin digunakan.

    Misalnya, jika revisi adalah file.zip di bucket Amazon S3 yang my-revision-bucket dipanggil dengan kunci objek, lakukan hal httpd_app.zip berikut:

    1. Di CodeDeploy konsol, di halaman Deployment Group, pilih Create deployment.

    2. Untuk jenis Revisi, pilih Aplikasi saya disimpan di Amazon S3.

    3. Untuk lokasi Revisi, pilihs3://my-revision-bucket/httpd_app.zip.

    4. Untuk jenis file Revisi, pilih.zip.

    5. Pilih Buat penerapan.

    Karena sekarang ada satu InService instance dalam grup Auto Scaling, penerapan ini seharusnya berfungsi, dan Anda seharusnya tidak lagi melihat kesalahan Penerapan gagal karena tidak ada instance yang ditemukan untuk grup penerapan Anda.

  8. Setelah penerapan berhasil, skala grup Auto Scaling Anda kembali ke kapasitas semula, jika sebelumnya Anda menskalakannya:

    1. Buka konsol Amazon EC2 di https://console.aws.amazon.com/ec2/, dan pilih Grup Auto Scaling dari panel navigasi.

    2. Pilih wilayah yang sesuai.

    3. Buka grup Auto Scaling Anda.

    4. Di Detail grup, pilih Edit.

    5. Atur kapasitas yang diinginkan kembali ke nilai aslinya.

    6. Pilih Perbarui.