View a markdown version of this page

Tutorial: Mengkonfigurasi hook siklus hidup yang memanggil fungsi Lambda - 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: Mengkonfigurasi hook siklus hidup yang memanggil fungsi Lambda

Dalam latihan ini, Anda membuat Amazon EventBridge aturan yang menyertakan pola filter yang ketika dicocokkan, memanggil AWS Lambda berfungsi sebagai target aturan. Kami menyediakan pola filter dan kode fungsi sampel untuk digunakan.

Jika semuanya dikonfigurasi dengan benar, di akhir tutorial ini, fungsi Lambda melakukan tindakan khusus saat instance diluncurkan. Tindakan khusus hanya mencatat peristiwa di CloudWatch Log aliran log yang terkait dengan fungsi Lambda.

Fungsi Lambda juga melakukan callback untuk membiarkan siklus hidup instance berjalan jika tindakan ini berhasil, tetapi membiarkan instance meninggalkan peluncuran dan mengakhiri jika tindakan gagal.

Ilustrasi berikut merangkum alur untuk peristiwa scale-out saat Anda menggunakan fungsi Lambda untuk melakukan tindakan kustom. Setelah instance diluncurkan, siklus hidup instans dijeda hingga kait siklus hidup selesai, baik dengan batas waktu atau dengan Amazon EC2 Auto Scaling yang menerima sinyal untuk melanjutkan.

Alur untuk peristiwa scale-out saat Anda menggunakan fungsi Lambda untuk melakukan tindakan kustom.
catatan

Tergantung pada kasus penggunaan Anda, Anda dapat mengonfigurasi hook siklus hidup dengan mengikuti langkah-langkah di bawah ini dan membuat EventBridge aturan. Atau, Anda dapat menggunakan fungsi Lambda untuk mengonfigurasi hook siklus hidup secara langsung tanpa membuat EventBridge aturan.

Prasyarat

Sebelum Anda memulai tutorial ini, buat grup Auto Scaling, jika Anda belum memilikinya. Untuk membuat grup Auto Scaling, buka Halaman grup penskalaan otomatis dari konsol Amazon EC2 dan pilih Buat grup Penskalaan Otomatis.

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

Sebelum membuat fungsi Lambda, Anda harus terlebih dahulu membuat peran eksekusi dan kebijakan izin untuk mengizinkan Lambda menyelesaikan kait siklus hidup.

Untuk membuat kebijakan
  1. Buka Halaman kebijakan dari konsol IAM, lalu pilih Buat kebijakan.

  2. Pilih tab JSON.

  3. Di Dokumen Kebijakan kotak, tempel dokumen kebijakan berikut ke dalam kotak, ganti teks di italics dengan nomor akun Anda dan nama grup Penskalaan Otomatis Anda.

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

  5. Untuk Nama kebijakan, masukkan LogAutoScalingEvent-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 Lambda dan kemudian memilih Berikutnya.

  5. Di bawah Tambahkan izin, pilih kebijakan yang Anda buat (LogAutoScalingEvent-policy) dan kebijakan yang disebut AWSLambdaBasicExecutionRole. Lalu, pilih Selanjutnya.

    catatan

    AWSLambdaBasicExecutionRole kebijakan memiliki izin yang dibutuhkan fungsi untuk menulis log CloudWatch Log.

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

Langkah 2: Buat fungsi Lambda

Buat fungsi Lambda untuk berfungsi sebagai target acara. Contoh fungsi Lambda, ditulis dalam Node.js, dipanggil oleh EventBridge saat peristiwa pencocokan dipancarkan oleh Amazon EC2 Auto Scaling.

Untuk membuat fungsi Lambda
  1. Buka halaman Fungsi di konsol Lambda.

  2. Memilih Buat fungsi, Penulis dari awal.

  3. Di bagian Informasi dasar, untuk Nama fungsi, masukkan LogAutoScalingEvent.

  4. Untuk Waktu pelaksanaan, pilih Node.js 18.x.

  5. Gulir ke bawah dan pilih Ubah peran eksekusi default, dan kemudian untuk Peran eksekusi, pilih Gunakan peran yang ada.

  6. Untuk Peran yang ada, pilih LogAutoScalingEvent-role.

  7. Tinggalkan nilai default lainnya.

  8. Pilih Buat fungsi. Anda dikembalikan ke kode fungsi dan konfigurasi.

  9. Dengan milikmu LogAutoScalingEvent fungsi masih terbuka di konsol, di bawah Sumber kode, di editor, tempel kode sampel berikut ke dalam file bernama index.mjs.

    import { AutoScalingClient, CompleteLifecycleActionCommand } from "@aws-sdk/client-auto-scaling"; export const handler = async(event) => { console.log('LogAutoScalingEvent'); console.log('Received event:', JSON.stringify(event, null, 2)); var autoscaling = new AutoScalingClient({ region: event.region }); var eventDetail = event.detail; var params = { AutoScalingGroupName: eventDetail['AutoScalingGroupName'], /* required */ LifecycleActionResult: 'CONTINUE', /* required */ LifecycleHookName: eventDetail['LifecycleHookName'], /* required */ InstanceId: eventDetail['EC2InstanceId'], LifecycleActionToken: eventDetail['LifecycleActionToken'] }; var response; const command = new CompleteLifecycleActionCommand(params); try { var data = await autoscaling.send(command); console.log(data); // successful response response = { statusCode: 200, body: JSON.stringify('SUCCESS'), }; } catch (err) { console.log(err, err.stack); // an error occurred response = { statusCode: 500, body: JSON.stringify('ERROR'), }; } return response; };

    Kode ini hanya mencatat peristiwa sehingga, di akhir tutorial ini, Anda dapat melihat peristiwa muncul di CloudWatch Log stream log yang terkait dengan fungsi Lambda ini.

  10. Pilih Deploy.

Langkah 3: Buat EventBridge aturan

Buat EventBridge aturan untuk menjalankan fungsi Lambda Anda. Untuk informasi selengkapnya tentang penggunaan EventBridge, lihat Gunakan EventBridge untuk menangani peristiwa Penskalaan Otomatis.

Untuk membuat aturan menggunakan konsol
  1. Buka konsol EventBridge.

  2. Di panel navigasi, pilih Aturan.

  3. Pilih Buat aturan.

  4. Untuk Tentukan detail aturan, lakukan hal berikut:

    1. Untuk Nama, masukkan LogAutoScalingEvent-rule.

    2. Untuk Bus peristiwa, pilih default. Ketika sebuah Layanan AWS di akun Anda menghasilkan acara, itu selalu masuk ke bus acara default akun Anda.

    3. Untuk Tipe aturan, pilih Aturan dengan pola peristiwa.

    4. Pilih Selanjutnya.

  5. Untuk Pola peristiwa build, lakukan hal berikut ini:

    1. Untuk Sumber acara, pilih AWS acara atau EventBridge acara mitra.

    2. Gulir ke bawah ke Pola acara, dan lakukan hal berikut:

      1. Untuk Sumber peristiwa, pilih Layanan AWS.

      2. Untuk Layanan AWS, pilih Penskalaan Otomatis.

      3. Untuk Jenis peristiwa, pilih Peluncuran dan Penghentian Instans.

      4. Secara default, aturan cocok dengan peristiwa scale-in atau scale-out apa pun. Untuk membuat aturan yang memberi tahu Anda ketika ada peristiwa scale-out dan instance dimasukkan ke status tunggu karena hook siklus hidup, pilih Peristiwa instans tertentu dan pilih EC2 Instance-launch Tindakan Siklus Hidup.

      5. Secara default, aturan cocok dengan grup Auto Scaling di Wilayah. Untuk membuat aturan cocok dengan grup Penskalaan Otomatis tertentu, pilih Nama grup tertentu dan pilih grup.

      6. Pilih Selanjutnya.

  6. Untuk Pilih target, lakukan hal berikut:

    1. Untuk Tipe target, pilih Layanan AWS.

    2. Untuk Pilih target, pilih Fungsi Lambda.

    3. Untuk Fungsi, pilih LogAutoScalingEvent.

    4. Pilih Selanjutnya dua kali.

  7. Pada Tinjau dan buat halaman, pilih Buat aturan.

Langkah 4: Tambahkan kait siklus hidup

Di bagian ini, Anda menambahkan hook siklus hidup sehingga Lambda menjalankan fungsi Anda pada instance saat peluncuran.

Untuk menambahkan hook siklus aktif
  1. Buka Halaman grup penskalaan otomatis dari konsol Amazon EC2.

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

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

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

    1. Untuk Nama kait siklus hidup, masukkan LogAutoScalingEvent-hook.

    2. Untuk Transisi siklus hidup, pilih Peluncuran instans.

    3. Untuk Waktu tunggu detak jantung, masukkan 300 untuk jumlah detik untuk menunggu panggilan balik dari fungsi Lambda Anda.

    4. Untuk Hasil default, pilih MENINGGALKAN. Ini berarti bahwa grup Auto Scaling akan menghentikan instance baru jika hook habis tanpa menerima panggilan balik dari fungsi Lambda Anda.

    5. (Opsional) Tinggalkan Metadata notifikasi kosong. Data acara yang kami sampaikan EventBridge berisi semua informasi yang diperlukan untuk memanggil fungsi Lambda.

  5. Pilih Buat.

Langkah 5: Uji dan verifikasi acara

Untuk menguji acara, perbarui grup Penskalaan Otomatis dengan meningkatkan kapasitas yang diinginkan dari grup Penskalaan Otomatis sebesar 1. Fungsi Lambda Anda dipanggil dalam beberapa detik setelah meningkatkan kapasitas yang diinginkan.

Untuk menambah ukuran grup Auto Scaling
  1. Buka Halaman grup penskalaan otomatis dari konsol Amazon EC2.

  2. Pilih kotak centang di sebelah grup Penskalaan Otomatis Anda untuk melihat detail di panel bawah dan tetap melihat baris atas panel atas.

  3. Di panel bawah, pada Rincian tab, pilih Rincian grup, Sunting.

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

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

Setelah meningkatkan kapasitas yang diinginkan, Anda dapat memverifikasi bahwa fungsi Lambda Anda dipanggil.

Untuk melihat output dari fungsi Lambda Anda
  1. Buka Halaman grup log dari CloudWatch konsol.

  2. Pilih nama grup log untuk fungsi Lambda Anda (/aws/lambda/LogAutoScalingEvent).

  3. Pilih nama aliran log untuk melihat data yang disediakan oleh fungsi untuk tindakan siklus hidup.

Selanjutnya, Anda dapat memverifikasi bahwa instance Anda telah berhasil diluncurkan dari deskripsi aktivitas penskalaan.

Untuk melihat aktivitas penskalaan
  1. Kembali ke Grup penskalaan otomatis halaman dan pilih grup Anda.

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

    • Jika tindakan berhasil, aktivitas penskalaan akan memiliki status “Berhasil”.

    • Jika gagal, setelah menunggu beberapa menit, Anda akan melihat aktivitas penskalaan dengan status “Dibatalkan” dan pesan status “Instance gagal menyelesaikan Tindakan Siklus Hidup pengguna: Tindakan Siklus Hidup dengan token e85eb647-4FE0-4909-b341-a6c42Contoh ditinggalkan: Tindakan Siklus Hidup Selesai dengan Hasil ABANDON”.

Untuk mengurangi ukuran grup Auto Scaling

Jika Anda tidak memerlukan instance tambahan yang Anda luncurkan untuk pengujian ini, Anda dapat membuka Rincian tab dan kurangi Kapasitas yang diinginkan oleh 1.

Langkah 6: Bersihkan

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

Untuk menghapus kait siklus hidup
  1. Buka Halaman grup penskalaan otomatis dari konsol Amazon EC2.

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

  3. Pada Manajemen instans tab, di Kait siklus hidup, pilih kait siklus hidup (LogAutoScalingEvent-hook).

  4. Pilih Tindakan, Hapus.

  5. Pilih Hapus Sekali lagi untuk mengkonfirmasi.

Untuk menghapus Amazon EventBridge aturan
  1. Buka Halaman Aturan di Amazon EventBridge konsol.

  2. Di bawah Bus acara, pilih bus acara yang terkait dengan aturan (Default).

  3. Pilih kotak centang di sebelah aturan Anda (LogAutoScalingEvent-rule).

  4. Pilih Hapus.

  5. Saat diminta konfirmasi, ketik nama aturan lalu pilih Hapus.

Jika Anda sudah selesai bekerja dengan fungsi contoh, hapus fungsi tersebut. Anda juga dapat menghapus grup log yang menyimpan log fungsi, serta peran eksekusi dan kebijakan izin yang Anda buat.

Untuk menghapus fungsi Lambda
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih fungsi (LogAutoScalingEvent).

  3. Pilih Tindakan, Hapus.

  4. Saat diminta konfirmasi, ketik delete untuk mengonfirmasi menghapus fungsi yang ditentukan dan kemudian memilih Hapus.

Untuk menghapus grup log
  1. Buka Halaman grup log dari CloudWatch konsol.

  2. Pilih grup log fungsi (/aws/lambda/LogAutoScalingEvent).

  3. Pilih Tindakan, Hapus grup log.

  4. Di kotak dialog Hapus grup log, pilih Hapus.

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

  2. Pilih peran fungsi (LogAutoScalingEvent-role)

  3. Pilih Hapus.

  4. Saat diminta konfirmasi, ketik nama peran dan kemudian pilih Hapus.

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

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

  3. Pilih Tindakan, Hapus.

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

Topik terkait berikut dapat membantu saat Anda membuat EventBridge aturan berdasarkan peristiwa yang terjadi pada instance di grup Penskalaan Otomatis Anda.

Untuk tutorial yang menunjukkan cara menggunakan Instance Metadata Service (IMDS) untuk memanggil tindakan dari dalam instans itu sendiri, lihat Tutorial: Gunakan skrip data dan metadata instance untuk mengambil status siklus hidup.