Tutorial: Gunakan skrip data dan metadata instance untuk mengambil status siklus hidup - Amazon EC2 Auto Scaling

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

Tutorial: Gunakan skrip data dan metadata instance untuk mengambil status siklus hidup

Cara umum untuk membuat tindakan kustom untuk kait siklus hidup adalah dengan menggunakan notifikasi yang dikirimkan oleh Amazon EC2 Auto Scaling ke layanan lain, seperti Amazon. EventBridge Namun, Anda dapat menghindari keharusan membuat infrastruktur tambahan dengan menggunakan skrip data pengguna untuk memindahkan kode yang mengonfigurasi instance dan menyelesaikan tindakan siklus hidup ke dalam instance itu sendiri.

Tutorial berikut menunjukkan kepada Anda bagaimana untuk memulai menggunakan script data pengguna dan metadata instance. Anda membuat konfigurasi grup Auto Scaling dasar dengan skrip data pengguna yang membaca status siklus hidup target instans dalam grup Anda dan melakukan tindakan panggilan balik pada fase tertentu dari siklus hidup instans untuk melanjutkan proses peluncuran.

Ilustrasi berikut merangkum alur untuk acara scale-out saat Anda menggunakan skrip data pengguna untuk melakukan tindakan kustom. Setelah instance diluncurkan, siklus hidup instans dijeda hingga pengait siklus hidup selesai, baik dengan waktu habis atau oleh Amazon EC2 Auto Scaling yang menerima sinyal untuk melanjutkan.

Alur untuk acara scale-out saat Anda menggunakan skrip data pengguna untuk melakukan tindakan kustom.

Langkah 1: Buat peran IAM dengan izin untuk menyelesaikan tindakan siklus hidup

Bila Anda menggunakan AWS CLI atau AWS SDK untuk mengirim panggilan balik untuk menyelesaikan tindakan siklus hidup, Anda harus menggunakan peran IAM dengan izin untuk menyelesaikan tindakan siklus hidup.

Untuk membuat kebijakan
  1. Buka halaman Kebijakan konsol IAM, lalu pilih Buat kebijakan.

  2. Pilih tab JSON.

  3. Di kotak Dokumen Kebijakan, salin dan tempel dokumen kebijakan berikut ke dalam kotak. Ganti teks contoh dengan nomor akun Anda dan nama grup Auto Scaling yang ingin Anda buat ()TestAutoScalingEvent-group.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:CompleteLifecycleAction" ], "Resource": "arn:aws:autoscaling:*:123456789012:autoScalingGroup:*:autoScalingGroupName/TestAutoScalingEvent-group" } ] }
  4. Pilih Berikutnya.

  5. Untuk Nama kebijakan, masukkan TestAutoScalingEvent-policy. Pilih Buat kebijakan.

Setelah selesai membuat kebijakan, Anda dapat membuat peran yang menggunakannya.

Untuk membuat peran
  1. Pada panel navigasi di sebelah kiri, pilih Peran.

  2. Pilih Buat peran.

  3. Untuk Pilih entitas tepercaya, pilih AWS layanan.

  4. Untuk kasus penggunaan Anda, pilih EC2 dan kemudian pilih Berikutnya.

  5. Di bawah Tambahkan izin, pilih kebijakan yang Anda buat (TestAutoScalingEvent-policy). Lalu, pilih Selanjutnya.

  6. Pada halaman Nama, tinjau, dan buat, untuk nama Peran, masukkan TestAutoScalingEvent-role dan pilih Buat peran.

Langkah 2: Buat template peluncuran dan sertakan peran IAM dan skrip data pengguna

Buat template peluncuran untuk digunakan dengan grup Auto Scaling Anda. Sertakan peran IAM yang Anda buat dan skrip data pengguna sampel yang disediakan.

Untuk membuat templat peluncuran
  1. Buka halaman Peluncuran templat konsol Amazon EC2.

  2. Pilih Buat templat peluncuran.

  3. Untuk nama template Luncurkan, masukkanTestAutoScalingEvent-template.

  4. Di bawah panduan Auto Scaling, pilih kotak centang.

  5. Untuk Gambar Aplikasi dan OS (Gambar Mesin Amazon), pilih Amazon Linux 2 (HVM), Jenis Volume SSD, 64-bit (x86) dari daftar Mulai Cepat.

  6. Untuk jenis Instance, pilih jenis instans Amazon EC2 (misalnya, “t2.micro”).

  7. Untuk Detail lanjutan, perluas bagian tersebut untuk melihat kolomnya.

  8. Untuk profil instans IAM, pilih nama profil instans IAM dari peran IAM Anda (-role)TestAutoScalingEvent. Profil instance adalah kontainer untuk peran IAM yang memungkinkan Amazon EC2 melewati peran IAM ke suatu instance saat instance diluncurkan.

    Saat Anda menggunakan konsol IAM untuk membuat peran IAM, konsol secara otomatis membuat profil instance dengan nama yang sama dengan peran yang sesuai.

  9. Untuk data Pengguna, salin dan tempel contoh skrip data pengguna berikut ke dalam bidang. Ganti teks sampel group_name dengan nama grup Auto Scaling yang ingin Anda buat dan region dengan grup Auto Scaling yang Wilayah AWS Anda inginkan untuk digunakan.

    #!/bin/bash function get_target_state { echo $(curl -s http://169.254.169.254/latest/meta-data/autoscaling/target-lifecycle-state) } function get_instance_id { echo $(curl -s http://169.254.169.254/latest/meta-data/instance-id) } function complete_lifecycle_action { instance_id=$(get_instance_id) group_name='TestAutoScalingEvent-group' region='us-west-2' echo $instance_id echo $region echo $(aws autoscaling complete-lifecycle-action \ --lifecycle-hook-name TestAutoScalingEvent-hook \ --auto-scaling-group-name $group_name \ --lifecycle-action-result CONTINUE \ --instance-id $instance_id \ --region $region) } function main { while true do target_state=$(get_target_state) if [ \"$target_state\" = \"InService\" ]; then # Change hostname export new_hostname="${group_name}-$instance_id" hostname $new_hostname # Send callback complete_lifecycle_action break fi echo $target_state sleep 5 done } main

    Skrip data pengguna sederhana ini melakukan hal berikut:

    • Memanggil metadata instance untuk mengambil status siklus hidup target dan ID instans dari metadata instance

    • Mengambil status siklus hidup target berulang kali hingga berubah menjadi InService

    • Mengubah nama host instance menjadi ID instans yang ditambahkan dengan nama grup Auto Scaling, jika status siklus hidup target InService

    • Mengirim panggilan balik dengan memanggil perintah complete-lifecycle-action CLI untuk memberi sinyal Auto Scaling Amazon EC2 ke proses peluncuran EC2 CONTINUE

  10. Pilih Buat templat peluncuran.

  11. Pada halaman konfirmasi, pilih Buat grup Auto Scaling.

catatan

Untuk contoh lain yang dapat Anda gunakan sebagai referensi untuk mengembangkan skrip data pengguna, lihat GitHub repositori untuk Amazon EC2 Auto Scaling.

Langkah 3: Buat grup Auto Scaling

Setelah Anda membuat template peluncuran, buat grup Auto Scaling.

Untuk membuat grup Auto Scaling
  1. Pada halaman Choose launch template atau konfigurasi, untuk nama grup Auto Scaling, masukkan nama untuk grup Auto Scaling (). TestAutoScalingEvent-group

  2. Pilih Berikutnya untuk pergi ke halaman opsi peluncuran Choose instance.

  3. Untuk Jaringan, pilih VPC.

  4. Untuk Availability Zones dan subnet, pilih satu atau beberapa subnet dari satu atau beberapa Availability Zone.

  5. Di bagian Persyaratan tipe instans, gunakan pengaturan default untuk menyederhanakan langkah ini. (Jangan mengganti template peluncuran.) Untuk tutorial ini, Anda hanya akan meluncurkan satu On-Demand Instance menggunakan jenis instance yang ditentukan dalam template peluncuran Anda.

  6. Pilih Lewati untuk meninjau di bagian bawah layar.

  7. Pada halaman Tinjauan, tinjau detail grup Auto Scaling Anda, lalu pilih grup Buat Auto Scaling.

Langkah 4: Tambahkan kait siklus hidup

Tambahkan kait siklus hidup untuk menahan instance dalam status tunggu hingga tindakan siklus hidup Anda selesai.

Untuk menambahkan hook siklus aktif
  1. Buka halaman grup Auto Scaling di konsol Amazon EC2.

  2. Pilih kotak centang di samping grup Auto Scaling Anda. Panel split terbuka di bagian bawah halaman.

  3. Di panel bawah, pada tab Manajemen instans, di kait Siklus Hidup, pilih Buat kait siklus hidup.

  4. Untuk menentukan hook siklus hidup untuk skala keluar (peluncuran instance), lakukan hal berikut:

    1. Untuk nama kait Siklus Hidup, masukkan. TestAutoScalingEvent-hook

    2. Untuk transisi Siklus Hidup, pilih Peluncuran instans.

    3. Untuk batas waktu detak jantung, masukkan 300 jumlah detik untuk menunggu panggilan balik dari skrip data pengguna Anda.

    4. Untuk hasil Default, pilih ABANDOND. Jika waktu hook habis tanpa menerima panggilan balik dari skrip data pengguna Anda, grup Auto Scaling akan menghentikan instance baru.

    5. (Opsional) Biarkan metadata Pemberitahuan tetap kosong.

  5. Pilih Buat.

Langkah 5: Uji dan verifikasi fungsionalitas

Untuk menguji fungsionalitas, perbarui grup Auto Scaling dengan meningkatkan kapasitas grup Auto Scaling yang diinginkan sebanyak 1. Skrip data pengguna berjalan dan mulai memeriksa status siklus hidup target instans segera setelah instance diluncurkan. Skrip mengubah nama host dan mengirimkan tindakan panggilan balik saat status siklus hidup target. InService Ini biasanya hanya membutuhkan beberapa detik untuk menyelesaikannya.

Untuk meningkatkan ukuran grup Auto Scaling
  1. Buka halaman grup Auto Scaling di konsol Amazon EC2.

  2. Pilih kotak centang di samping grup Auto Scaling Anda. Lihat detail di panel bawah sambil tetap melihat baris atas panel atas.

  3. Di panel bawah, pada tab Detail, pilih Detail grup, Edit.

  4. Untuk Kapasitas yang diinginkan, naikkan nilai saat ini sebesar 1.

  5. Pilih Perbarui. Saat instance diluncurkan, kolom Status di panel atas menampilkan status Memperbarui kapasitas.

Setelah meningkatkan kapasitas yang diinginkan, Anda dapat memverifikasi bahwa instans Anda telah berhasil diluncurkan dan tidak dihentikan dari deskripsi aktivitas penskalaan.

Untuk melihat aktivitas penskalaan
  1. Kembali ke halaman grup Auto Scaling dan pilih grup Anda.

  2. Pada tab Aktivitas, di bawah Riwayat aktivitas, kolom Status menunjukkan apakah grup Auto Scaling Anda telah berhasil meluncurkan instance.

  3. Jika skrip data pengguna gagal, setelah periode batas waktu berlalu, Anda akan melihat aktivitas penskalaan dengan status Canceled dan pesan status. Instance failed to complete user's Lifecycle Action: Lifecycle Action with token e85eb647-4fe0-4909-b341-a6c42EXAMPLE was abandoned: Lifecycle Action Completed with ABANDON Result

Langkah 6: Bersihkan

Jika Anda selesai bekerja dengan sumber daya yang Anda buat untuk tutorial ini, gunakan langkah-langkah berikut untuk menghapusnya.

Untuk menghapus kait siklus hidup
  1. Buka halaman grup Auto Scaling di konsol Amazon EC2.

  2. Pilih kotak centang di samping grup Auto Scaling Anda.

  3. Pada tab Manajemen instans, di kait Siklus Hidup, pilih hook siklus hidup (). TestAutoScalingEvent-hook

  4. Pilih Tindakan, Hapus.

  5. Pilih Hapus lagi untuk mengonfirmasi.

Untuk menghapus template peluncuran
  1. Buka halaman Peluncuran templat konsol Amazon EC2.

  2. Pilih template peluncuran Anda (TestAutoScalingEvent-template) dan kemudian pilih Tindakan, Hapus template.

  3. Saat diminta konfirmasi, ketik Delete untuk mengonfirmasi penghapusan templat peluncuran yang ditentukan, lalu pilih Hapus.

Jika Anda sudah selesai bekerja dengan contoh grup Auto Scaling, hapus saja. Anda juga dapat menghapus peran IAM dan kebijakan izin yang Anda buat.

Untuk menghapus grup Auto Scaling
  1. Buka halaman grup Auto Scaling di konsol Amazon EC2.

  2. Pilih kotak centang di samping grup Auto Scaling (TestAutoScalingEvent-group) dan pilih Hapus.

  3. Saat diminta konfirmasi, ketik delete untuk mengonfirmasi penghapusan grup Auto Scaling yang ditentukan, lalu pilih Hapus.

    Ikon memuat di kolom Nama menunjukkan bahwa grup Auto Scaling dihapus. Dibutuhkan beberapa menit untuk menghentikan instance dan menghapus grup.

Untuk menghapus peran IAM
  1. Buka halaman Peran konsol IAM.

  2. Pilih peran fungsi (TestAutoScalingEvent-role)

  3. Pilih Hapus.

  4. Saat diminta konfirmasi, ketikkan nama peran, lalu pilih Hapus.

Untuk menghapus kebijakan IAM
  1. Buka halaman Kebijakan konsol IAM.

  2. Pilih kebijakan yang Anda buat (TestAutoScalingEvent-policy).

  3. Pilih Tindakan, Hapus.

  4. Saat diminta konfirmasi, ketikkan nama kebijakan, lalu pilih Hapus.

Topik terkait berikut dapat membantu saat Anda mengembangkan kode yang memanggil tindakan pada instance berdasarkan data yang tersedia dalam metadata instance.

Untuk tutorial yang menunjukkan cara menggunakan Amazon EventBridge untuk membuat aturan yang menjalankan fungsi Lambda berdasarkan peristiwa yang terjadi pada instance di grup Auto Scaling, lihat. Tutorial: Konfigurasikan kait siklus hidup yang memanggil fungsi Lambda