Tutorial: Konfigurasikan kait siklus hidup yang memanggil fungsi Lambda - EC2Auto Scaling Amazon

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

Tutorial: Konfigurasikan kait siklus hidup yang memanggil fungsi Lambda

Dalam latihan ini, Anda membuat EventBridge aturan Amazon yang menyertakan pola filter yang bila 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 kustom 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 memungkinkan instance meninggalkan peluncuran dan mengakhiri jika tindakan gagal.

Ilustrasi berikut merangkum alur untuk acara scale-out saat Anda menggunakan fungsi Lambda 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 fungsi Lambda untuk melakukan tindakan kustom.

Prasyarat

Sebelum Anda memulai tutorial ini, buat grup Auto Scaling, jika Anda belum memilikinya. Untuk membuat grup Auto Scaling, buka halaman grup Auto Scaling di konsol Amazon EC2 dan pilih grup Create Auto Scaling.

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 agar Lambda dapat menyelesaikan kait siklus hidup.

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

  2. Pilih tab JSON.

  3. Di kotak Dokumen Kebijakan, tempelkan dokumen kebijakan berikut ke dalam kotak, ganti teks yang dicetak miring dengan nomor akun dan nama grup Auto Scaling Anda.

    { "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 pilih Berikutnya.

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

    catatan

    AWSLambdaBasicExecutionRoleKebijakan ini memiliki izin yang diperlukan fungsi untuk menulis log ke CloudWatch Log.

  6. Pada halaman Nama, tinjau, dan buat, 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, yang ditulis dalam Node.js, dipanggil EventBridge ketika peristiwa yang cocok dipancarkan oleh Amazon EC2 Auto Scaling.

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

  2. Pilih Create function, Author dari awal.

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

  4. Untuk Runtime, pilih Node.js 18.x.

  5. Gulir ke bawah dan pilih Ubah peran eksekusi default, lalu 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 dan konfigurasi fungsi.

  9. Dengan LogAutoScalingEvent fungsi Anda masih terbuka di konsol, di bawah Sumber kode, di editor, tempelkan kode contoh 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 CloudWatch log 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, lihatGunakan EventBridge untuk menangani peristiwa Auto Scaling.

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 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 acara EventBridge mitra.

    2. Gulir ke bawah ke pola Acara, dan lakukan hal berikut:

      1. Untuk Sumber peristiwa, pilih Layanan AWS.

      2. Untuk Layanan AWS, pilih Auto Scaling.

      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 saat ada peristiwa penskalaan dan instance dimasukkan ke dalam status tunggu karena kait siklus hidup, pilih Peristiwa instance Spesifik dan pilih Tindakan Siklus Hidup Peluncuran Instans EC2.

      5. Secara default, aturan cocok dengan grup Auto Scaling di Wilayah. Untuk membuat aturan cocok dengan grup Auto Scaling 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 halaman Tinjau dan buat, pilih Buat aturan.

Langkah 4: Tambahkan kait siklus hidup

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

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. LogAutoScalingEvent-hook

    2. Untuk transisi Siklus Hidup, pilih Peluncuran instans.

    3. Untuk batas waktu Detak Jantung, masukkan 300 jumlah detik untuk menunggu panggilan balik dari fungsi Lambda Anda.

    4. Untuk hasil Default, pilih ABANDOND. Ini berarti bahwa grup Auto Scaling akan menghentikan instance baru jika waktu pengait habis tanpa menerima panggilan balik dari fungsi Lambda Anda.

    5. (Opsional) Biarkan metadata Pemberitahuan kosong. Data peristiwa yang kami berikan EventBridge berisi semua informasi yang diperlukan untuk menjalankan fungsi Lambda.

  5. Pilih Buat.

Langkah 5: Uji dan verifikasi acara

Untuk menguji acara, perbarui grup Auto Scaling dengan meningkatkan kapasitas yang diinginkan dari grup Auto Scaling sebanyak 1. Fungsi Lambda Anda dipanggil dalam beberapa detik setelah meningkatkan kapasitas yang diinginkan.

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 untuk melihat detail di panel bawah dan masih 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 fungsi Lambda Anda dipanggil.

Untuk melihat output dari fungsi Lambda Anda
  1. Buka halaman Grup log 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 instans Anda telah berhasil diluncurkan 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.

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

    • 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-A6C42Example ditinggalkan: Tindakan Siklus Hidup Selesai dengan Hasil ABANDONOR”.

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
  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 (). LogAutoScalingEvent-hook

  4. Pilih Tindakan, Hapus.

  5. Pilih Hapus lagi untuk mengonfirmasi.

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

  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, ketikkan 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 kebijakan peran dan izin eksekusi 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 penghapusan fungsi yang ditentukan dan kemudian pilih Hapus.

Untuk menghapus grup log
  1. Buka halaman Grup log 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, ketikkan nama peran, lalu 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, ketikkan nama kebijakan, lalu pilih Hapus.

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

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