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 EventBridge aturan Amazon yang menyertakan pola filter yang ketika dicocokkan, memanggil AWS Lambda fungsi 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 kustom hanya mencatat peristiwa di aliran CloudWatch log 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.
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.
Daftar Isi
Prasyarat
Sebelum Anda memulai tutorial ini, buat grup Auto Scaling, jika Anda belum memilikinya. Untuk membuat grup Penskalaan Otomatis, buka halaman 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
-
Buka halaman https://console.aws.amazon.com/iam/home?#/policies
Kebijakan konsol IAM, lalu pilih Buat kebijakan. -
Pilih tab JSON.
-
Di kotak Dokumen Kebijakan, tempel dokumen kebijakan berikut ke dalam kotak, ganti teks
italicsdengan nomor akun Anda dan nama grup Penskalaan Otomatis Anda. -
Pilih Berikutnya.
-
Untuk Nama kebijakan, masukkan
LogAutoScalingEvent-policy. Pilih Buat kebijakan.
Setelah selesai membuat kebijakan, Anda dapat membuat peran yang menggunakannya.
Untuk membuat peran
-
Pada panel navigasi di sebelah kiri, pilih Peran.
-
Pilih Buat peran.
-
Untuk Pilih entitas tepercaya, pilih AWS layanan.
-
Untuk kasus penggunaan Anda, pilih Lambda dan kemudian pilih Ber ikutnya.
-
Di bawah Tam bah izin, pilih kebijakan yang Anda buat (LogAutoScalingEvent-policy) dan kebijakan yang diberi nama AWSLambdaBasicExecutionRole. Lalu, pilih Selanjutnya.
catatan
AWSLambdaBasicExecutionRoleKebijakan ini memiliki izin yang diperlukan fungsi untuk menulis log ke CloudWatch Log.
-
Pada halaman Nama, ulasan, dan buat, untuk Nama peran, masukkan
LogAutoScalingEvent-roledan pilih Buat peran.
Langkah 2: Buat fungsi Lambda
Buat fungsi Lambda untuk berfungsi sebagai target acara. Contoh fungsi Lambda, yang ditulis dalam Node.js, dipanggil oleh EventBridge saat peristiwa pencocokan dipancarkan oleh Amazon EC2 Auto Scaling.
Untuk membuat fungsi Lambda
Buka halaman Fungsi
di konsol Lambda. -
Pilih fungsi Buat, Penulis dari awal.
-
Di bagian Informasi dasar, untuk Nama fungsi, masukkan
LogAutoScalingEvent. -
Untuk Runtime, pilih Node.js 18.x.
-
Gulir ke bawah dan pilih U bah peran eksekusi default, lalu untuk Peran eksekusi, pilih Gunakan peran yang ada.
-
Untuk Peran yang ada, pilih LogAutoScalingEvent-role.
-
Tinggalkan nilai default lainnya.
-
Pilih Buat fungsi. Anda dikembalikan ke kode fungsi dan konfigurasi.
-
Dengan
LogAutoScalingEventfungsi Anda masih terbuka di konsol, di bawah Kode sumber, 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 aliran log CloudWatch log yang terkait dengan fungsi Lambda ini.
-
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 Auto Scaling.
Untuk membuat aturan menggunakan konsol
-
Buka konsol EventBridge
. -
Di panel navigasi, pilih Aturan.
-
Pilih Buat aturan.
-
Untuk Tentukan detail aturan, lakukan hal berikut:
-
Untuk Nama, masukkan
LogAutoScalingEvent-rule. -
Untuk Bus peristiwa, pilih default. Ketika sebuah acara Layanan AWS di akun Anda menghasilkan acara, itu selalu masuk ke bus acara default akun Anda.
-
Untuk Tipe aturan, pilih Aturan dengan pola peristiwa.
-
Pilih Selanjutnya.
-
-
Untuk Pola peristiwa build, lakukan hal berikut ini:
-
Untuk Sumber acara, pilih AWS acara atau acara EventBridge mitra.
-
Gulir ke bawah ke Pola acara, dan lakukan hal berikut:
-
-
Untuk Sumber peristiwa, pilih Layanan AWS.
-
Untuk Layanan AWS, pilih Auto Scaling.
-
Untuk Jenis peristiwa, pilih Peluncuran dan Penghentian Instans.
-
Secara default, aturan cocok dengan peristiwa scale-in atau scale-out apa pun. Untuk membuat aturan yang memberi tahu Anda ketika ada peristiwa skala keluar dan instance dimasukkan ke dalam status tunggu karena kait siklus hidup, pilih Peristiwa instans tertentu dan pilih Tindakan Siklus Hidup EC Instance-launch 2.
-
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.
-
Pilih Selanjutnya.
-
-
-
Untuk Pilih target, lakukan hal berikut:
-
Untuk Tipe target, pilih Layanan AWS.
-
Untuk Pilih target, pilih Fungsi Lambda.
-
Untuk Fungsi, pilih LogAutoScalingEvent.
-
Pilih Selanjutnya dua kali.
-
-
Pada halaman Tinjau dan buat, 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
-
Buka halaman grup Penskalaan Otom
atis pada konsol Amazon EC2. -
Pilih kotak centang di samping grup Auto Scaling Anda. Panel terpisah terbuka di bagian bawah halaman.
-
Di panel bawah, pada tab Manajemen instans, di kait siklus hidup, pilih Buat kait siklus hidup.
-
Untuk menentukan hook siklus hidup untuk skala keluar (peluncuran instans), lakukan hal berikut:
-
Untuk nama kait siklus hidup, masukkan
LogAutoScalingEvent-hook. -
Untuk transisi Siklus Hi dup, pilih Peluncuran instans.
-
Untuk batas waktu Heartbeat, masukkan jumlah detik
300untuk menunggu panggilan balik dari fungsi Lambda Anda. -
Untuk hasil default, pilih ABAND ON. Ini berarti bahwa grup Auto Scaling akan menghentikan instance baru jika hook habis tanpa menerima panggilan balik dari fungsi Lambda Anda.
-
(Opsional) Biarkan metadata Pember itahuan kosong. Data peristiwa yang kami sampaikan EventBridge berisi semua informasi yang diperlukan untuk memanggil fungsi Lambda.
-
-
Pilih Buat.
Langkah 5: Uji dan verifikasi acara
Untuk menguji acara, perbarui grup Auto Scaling dengan meningkatkan kapasitas grup Auto Scaling yang diinginkan sebesar 1. Fungsi Lambda Anda dipanggil dalam beberapa detik setelah meningkatkan kapasitas yang diinginkan.
Untuk menambah ukuran grup Auto Scaling
-
Buka halaman grup Penskalaan Otom
atis pada konsol Amazon EC2. -
Pilih kotak centang di sebelah grup Penskalaan Otomatis Anda untuk melihat detail di panel bawah dan tetap melihat baris atas panel atas.
-
Di panel bawah, pada tab Detail, pilih Detail grup, Edit.
-
Untuk Kapasitas yang diinginkan, naikkan nilai saat ini sebesar 1.
-
Pilih Perbarui. Saat instance sedang diluncurkan, kolom Status di panel atas menampilkan status Memper barui kapasitas.
Setelah meningkatkan kapasitas yang diinginkan, Anda dapat memverifikasi bahwa fungsi Lambda Anda dipanggil.
Untuk melihat output dari fungsi Lambda
-
Buka halaman Grup log
di CloudWatch konsol. -
Pilih nama grup log untuk fungsi Lambda Anda (
/aws/lambda/LogAutoScalingEvent). -
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
-
Kembali ke halaman Grup Penskalaan Otomatis dan pilih grup Anda.
-
Pada tab Aktivitas, di bawah Riwayat aktivitas, kolom Status menunjukkan apakah grup Penskalaan Otomatis 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 tab Detail dan mengurangi kapasitas yang diinginkan sebesar 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
-
Buka halaman grup Penskalaan Otom
atis pada konsol Amazon EC2. -
Pilih kotak centang di samping grup Auto Scaling Anda.
-
Pada tab Manajemen instans, di kait siklus hidup, pilih hook siklus hidup (
LogAutoScalingEvent-hook). -
Pilih Tindakan, Hapus.
-
Pilih Hapus lagi untuk mengonfirmasi.
Untuk menghapus EventBridge aturan Amazon
-
Buka halaman Aturan
di EventBridge konsol Amazon. -
Di bawah bus acara, pilih bus acara yang terkait dengan aturan (
Default). -
Pilih kotak centang di sebelah aturan Anda (
LogAutoScalingEvent-rule). -
Pilih Hapus.
-
Saat diminta konfirmasi, ketik nama aturan lalu pilih H apus.
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
Buka halaman Fungsi
di konsol Lambda. -
Pilih fungsi (
LogAutoScalingEvent). -
Pilih Tindakan, Hapus.
-
Saat diminta konfirmasi, ketik
deleteuntuk mengonfirmasi penghapusan fungsi yang ditentukan lalu pilih H apus.
Untuk menghapus grup log
-
Buka halaman Grup log
di CloudWatch konsol. -
Pilih grup log fungsi (
/aws/lambda/LogAutoScalingEvent). -
Pilih Tindakan, Hapus grup log.
-
Di kotak dialog Hapus grup log, pilih Hapus.
Untuk menghapus peran eksekusi
-
Buka halaman Peran
konsol IAM. -
Pilih peran fungsi (
LogAutoScalingEvent-role) -
Pilih Hapus.
-
Saat diminta konfirmasi, ketik nama peran dan kemudian pilih H apus.
Untuk menghapus kebijakan IAM
-
Buka halaman Kebijakan
konsol IAM. -
Pilih kebijakan yang Anda buat (
LogAutoScalingEvent-policy). -
Pilih Tindakan, Hapus.
-
Saat diminta konfirmasi, ketik nama kebijakan, lalu pilih H apus.
Sumber daya terkait
Topik terkait berikut dapat membantu saat Anda membuat EventBridge aturan berdasarkan peristiwa yang terjadi pada instance di grup Penskalaan Otomatis Anda.
-
Gunakan EventBridge untuk menangani peristiwa Auto Scaling. Bagian ini menunjukkan contoh peristiwa untuk kasus penggunaan lain, termasuk peristiwa untuk skala.
-
Tambahkan hook siklus aktif (konsol). Prosedur ini menunjukkan cara menambahkan kait siklus hidup untuk skala keluar (peluncuran instans) dan skala masuk (instans yang mengakhiri atau kembali ke kolam hangat).
Untuk tutorial yang menunjukkan cara menggunakan Instance Metadata Service (IMDS) untuk memanggil tindakan dari dalam instance itu sendiri, lihat. Tutorial: Gunakan skrip data dan metadata instance untuk mengambil status siklus hidup