

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
<a name="tutorial-lifecycle-hook-lambda"></a>

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. 

![Alur untuk peristiwa scale-out saat Anda menggunakan fungsi Lambda untuk melakukan tindakan kustom.](http://docs.aws.amazon.com/id_id/autoscaling/ec2/userguide/images/lifecycle-hook-lambda-function.png)


**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.

**Topics**
+ [Prasyarat](#lambda-hello-world-tutorial-prerequisites)
+ [Langkah 1: Buat peran IAM dengan izin untuk menyelesaikan tindakan siklus hidup](#lambda-create-iam-role)
+ [Langkah 2: Buat fungsi Lambda](#lambda-create-hello-world-function)
+ [Langkah 3: Buat EventBridge aturan](#lambda-create-rule)
+ [Langkah 4: Tambahkan kait siklus hidup](#lambda-add-lifecycle-hook)
+ [Langkah 5: Uji dan verifikasi acara](#lambda-testing-hook-notifications)
+ [Langkah 6: Bersihkan](#lambda-lifecycle-hooks-tutorial-cleanup)
+ [Sumber daya terkait](#lambda-lifecycle-hooks-tutorial-related-resources)

## Prasyarat
<a name="lambda-hello-world-tutorial-prerequisites"></a>

Sebelum Anda memulai tutorial ini, buat grup Auto Scaling, jika Anda belum memilikinya. Untuk membuat grup Penskalaan Otomatis, buka halaman grup [ Penskalaan Otomatis ](https://console.aws.amazon.com/ec2/v2/home?#AutoScalingGroups) di konsol Amazon EC2 dan pilih ** Buat grup ** Penskalaan Otomatis.

## Langkah 1: Buat peran IAM dengan izin untuk menyelesaikan tindakan siklus hidup
<a name="lambda-create-iam-role"></a>

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 [https://console.aws.amazon.com/iam/home?#/policies](https://console.aws.amazon.com/iam/home?#/policies) Kebijakan konsol IAM, lalu pilih ** Buat kebijakan**.

1. Pilih tab **JSON**.

1. Di ** kotak ** Dokumen Kebijakan, tempel dokumen kebijakan berikut ke dalam kotak, ganti teks * {{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}}"
       }
     ]
   }
   ```

------

1. Pilih **Berikutnya**. 

1. 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**.

1. Pilih **Buat peran**.

1. Untuk ** Pilih entitas tepercaya**, pilih **AWS layanan**.

1. Untuk kasus penggunaan Anda, pilih ** Lambda ** dan kemudian pilih Ber ** ikutnya**. 

1. Di bawah Tam ** bah izin**, pilih kebijakan yang Anda buat (**LogAutoScalingEvent-policy**) dan kebijakan yang diberi nama ** AWSLambdaBasicExecutionRole**. Lalu, pilih **Selanjutnya**. 
**catatan**  
**AWSLambdaBasicExecutionRole**Kebijakan ini memiliki izin yang diperlukan fungsi untuk menulis log ke CloudWatch Log.

1. Pada ** halaman ** Nama, ulasan, dan buat, untuk Nama ** peran**, masukkan **LogAutoScalingEvent-role** dan pilih ** Buat peran**.

## Langkah 2: Buat fungsi Lambda
<a name="lambda-create-hello-world-function"></a>

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**

1. Buka [halaman Fungsi](https://console.aws.amazon.com/lambda/home#/functions) di konsol Lambda.

1. Pilih fungsi ** Buat**, ** Penulis dari awal**.

1. Di bagian **Informasi dasar**, untuk **Nama fungsi**, masukkan **LogAutoScalingEvent**.

1. Untuk ** Runtime**, pilih ** Node.js 18.x**.

1. Gulir ke bawah dan pilih U ** bah peran eksekusi default**, lalu untuk ** Peran eksekusi**, pilih ** Gunakan peran yang ada**.

1. Untuk ** Peran yang ada**, pilih ** LogAutoScalingEvent-role**.

1. Tinggalkan nilai default lainnya.

1. Pilih **Buat fungsi**. Anda dikembalikan ke kode fungsi dan konfigurasi. 

1. Dengan `LogAutoScalingEvent` fungsi 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. 

1. Pilih **Deploy**. 

## Langkah 3: Buat EventBridge aturan
<a name="lambda-create-rule"></a>

Buat EventBridge aturan untuk menjalankan fungsi Lambda Anda. Untuk informasi selengkapnya tentang penggunaan EventBridge, lihat [Gunakan EventBridge untuk menangani peristiwa Auto Scaling](automating-ec2-auto-scaling-with-eventbridge.md).

**Untuk membuat aturan menggunakan konsol**

1. Buka [konsol EventBridge](https://console.aws.amazon.com/events/).

1. Di panel navigasi, pilih **Aturan**.

1. Pilih **Buat aturan**.

1. Untuk **Tentukan detail aturan**, lakukan hal berikut:

   1. Untuk **Nama**, masukkan **LogAutoScalingEvent-rule**.

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

   1. Untuk **Tipe aturan**, pilih **Aturan dengan pola peristiwa**.

   1. Pilih **Selanjutnya**.

1. Untuk **Pola peristiwa build**, lakukan hal berikut ini:

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

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

   1. 

      1. Untuk **Sumber peristiwa**, pilih **Layanan AWS**.

      1. Untuk **Layanan AWS**, pilih ** Auto Scaling**.

      1. Untuk **Jenis peristiwa**, pilih **Peluncuran dan Penghentian Instans**.

      1. 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. **

      1. 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.

      1. Pilih **Selanjutnya**.

1. Untuk **Pilih target**, lakukan hal berikut:

   1. Untuk **Tipe target**, pilih **Layanan AWS**.

   1. Untuk **Pilih target**, pilih **Fungsi Lambda**.

   1. Untuk ** Fungsi**, pilih ** LogAutoScalingEvent**.

   1. Pilih **Selanjutnya** dua kali.

1. Pada ** halaman ** Tinjau dan buat, pilih ** Buat aturan**.

## Langkah 4: Tambahkan kait siklus hidup
<a name="lambda-add-lifecycle-hook"></a>

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 Otom ](https://console.aws.amazon.com/ec2/v2/home?#AutoScalingGroups) atis pada konsol Amazon EC2.

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

1. Di panel bawah, pada ** tab Manajemen ** instans, di kait ** siklus hidup**, pilih ** Buat kait siklus hidup**.

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

   1. Untuk nama kait ** siklus hidup**, masukkan**LogAutoScalingEvent-hook**.

   1. Untuk transisi ** Siklus Hi ** dup, pilih Peluncuran ** instans**.

   1. Untuk ** batas waktu Heartbeat**, masukkan jumlah detik **300** untuk menunggu panggilan balik dari fungsi Lambda Anda.

   1. 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.

   1. (Opsional) Biarkan metadata ** Pember ** itahuan kosong. Data peristiwa yang kami sampaikan EventBridge berisi semua informasi yang diperlukan untuk memanggil fungsi Lambda.

1. Pilih **Buat**.

## Langkah 5: Uji dan verifikasi acara
<a name="lambda-testing-hook-notifications"></a>

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**

1. Buka halaman grup [ Penskalaan Otom ](https://console.aws.amazon.com/ec2/v2/home?#AutoScalingGroups) atis pada konsol Amazon EC2.

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

1. Di panel bawah, pada ** tab ** Detail, pilih Detail ** grup**, ** Edit**.

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

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**

1. Buka halaman Grup [ log ](https://console.aws.amazon.com/cloudwatch/home#logs:) di CloudWatch konsol.

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

1. 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 ** halaman Grup Penskalaan ** Otomatis dan pilih grup Anda.

1. 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
<a name="lambda-lifecycle-hooks-tutorial-cleanup"></a>

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 Otom ](https://console.aws.amazon.com/ec2/v2/home?#AutoScalingGroups) atis pada konsol Amazon EC2.

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

1. Pada ** tab Manajemen ** instans, di kait ** siklus hidup**, pilih hook siklus hidup (`LogAutoScalingEvent-hook`).

1. Pilih **Tindakan**, **Hapus**.

1. Pilih ** Hapus ** lagi untuk mengonfirmasi.

**Untuk menghapus EventBridge aturan Amazon**

1. Buka halaman [ Aturan ](https://console.aws.amazon.com/events/home?#/rules) di EventBridge konsol Amazon.

1. Di bawah bus ** acara**, pilih bus acara yang terkait dengan aturan (`Default`).

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

1. Pilih **Hapus**.

1. 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**

1. Buka [halaman Fungsi](https://console.aws.amazon.com/lambda/home#/functions) di konsol Lambda.

1. Pilih fungsi (`LogAutoScalingEvent`).

1. Pilih **Tindakan**, **Hapus**.

1. Saat diminta konfirmasi, ketik **delete** untuk mengonfirmasi penghapusan fungsi yang ditentukan lalu pilih H ** apus**.

**Untuk menghapus grup log**

1. Buka halaman Grup [ log ](https://console.aws.amazon.com/cloudwatch/home#logs:) di CloudWatch konsol.

1. Pilih grup log fungsi (`/aws/lambda/LogAutoScalingEvent`).

1. Pilih **Tindakan**, **Hapus grup log**.

1. Di kotak dialog **Hapus grup log**, pilih **Hapus**.

**Untuk menghapus peran eksekusi**

1. Buka [halaman Peran](https://console.aws.amazon.com/iam/home?#/roles) konsol IAM.

1. Pilih peran fungsi (`LogAutoScalingEvent-role`)

1. Pilih **Hapus**.

1. Saat diminta konfirmasi, ketik nama peran dan kemudian pilih H ** apus**.

**Untuk menghapus kebijakan IAM**

1. Buka [halaman Kebijakan](https://console.aws.amazon.com/iam/home?#/policies) konsol IAM.

1. Pilih kebijakan yang Anda buat (`LogAutoScalingEvent-policy`).

1. Pilih **Tindakan**, **Hapus**.

1. Saat diminta konfirmasi, ketik nama kebijakan, lalu pilih H ** apus**.

## Sumber daya terkait
<a name="lambda-lifecycle-hooks-tutorial-related-resources"></a>

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](automating-ec2-auto-scaling-with-eventbridge.md). Bagian ini menunjukkan contoh peristiwa untuk kasus penggunaan lain, termasuk peristiwa untuk skala.
+ [Tambahkan hook siklus aktif (konsol)](adding-lifecycle-hooks.md#adding-lifecycle-hooks-console). 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](tutorial-lifecycle-hook-instance-metadata.md)