

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

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 dilanjutkan 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 dengan Amazon EC2 Auto Scaling yang menerima sinyal untuk melanjutkan. 

![\[Alur untuk acara 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**  
Bergantung pada kasus penggunaan, 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 aturan. EventBridge 

**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 Auto Scaling, buka halaman grup [Auto Scaling di konsol Amazon EC2 dan pilih grup](https://console.aws.amazon.com/ec2/v2/home?#AutoScalingGroups) Create Auto Scaling.**

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

**Untuk membuat kebijakan**

1. Buka [halaman Kebijakan](https://console.aws.amazon.com/iam/home?#/policies) konsol IAM, lalu pilih **Buat kebijakan**.

1. Pilih tab **JSON**.

1. Di kotak **Dokumen Kebijakan**, tempelkan dokumen kebijakan berikut ke dalam kotak, ganti teks **italics**dengan nomor akun dan nama grup Auto Scaling 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 Berikutnya.** 

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

1. Pada halaman **Nama, tinjau, 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 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 **Create function**, **Author 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 **Ubah 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 dan konfigurasi fungsi. 

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

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

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

      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 kait siklus hidup sehingga Lambda menjalankan fungsi Anda pada instance saat peluncuran.

**Untuk menambahkan hook siklus aktif**

1. Buka [halaman grup Auto Scaling](https://console.aws.amazon.com/ec2/v2/home?#AutoScalingGroups) di konsol Amazon EC2.

1. Pilih kotak centang di samping grup Auto Scaling Anda. Panel split 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 instance), lakukan hal berikut:

   1. Untuk **nama kait Siklus Hidup, masukkan**. **LogAutoScalingEvent-hook**

   1. Untuk **transisi Siklus Hidup**, pilih Peluncuran **instans**.

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

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

   1. (Opsional) Biarkan **metadata Pemberitahuan** kosong. Data peristiwa yang kami berikan EventBridge berisi semua informasi yang diperlukan untuk menjalankan 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 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](https://console.aws.amazon.com/ec2/v2/home?#AutoScalingGroups) di konsol Amazon EC2.

1. Pilih kotak centang di samping grup Auto Scaling Anda untuk melihat detail di panel bawah dan masih 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 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](https://console.aws.amazon.com/cloudwatch/home#logs:) 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 instans Anda telah berhasil diluncurkan dari deskripsi aktivitas penskalaan.

**Untuk melihat aktivitas penskalaan**

1. Kembali ke halaman **grup Auto Scaling dan pilih grup** Anda.

1. 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
<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 Auto Scaling](https://console.aws.amazon.com/ec2/v2/home?#AutoScalingGroups) di 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, 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](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 dan kemudian pilih Hapus.**

**Untuk menghapus grup log**

1. Buka [halaman Grup log](https://console.aws.amazon.com/cloudwatch/home#logs:) 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, ketikkan nama peran, lalu pilih **Hapus**.

**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, ketikkan nama kebijakan, lalu pilih **Hapus**.

## 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 Auto Scaling Anda.
+ [Gunakan EventBridge untuk menangani peristiwa Auto Scaling](automating-ec2-auto-scaling-with-eventbridge.md). Bagian ini menunjukkan contoh peristiwa untuk kasus penggunaan lainnya, termasuk peristiwa untuk skala.
+ [Tambahkan hook siklus aktif (konsol)](adding-lifecycle-hooks.md#adding-lifecycle-hooks-console). Prosedur ini menunjukkan kepada Anda cara menambahkan kait siklus hidup untuk skala keluar (peluncuran instance) dan skala (instance mengakhiri atau kembali ke kolam hangat).

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](tutorial-lifecycle-hook-instance-metadata.md)