

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

# Tutorial: Gunakan skrip data dan metadata instance untuk mengambil status siklus hidup
<a name="tutorial-lifecycle-hook-instance-metadata"></a>

Cara umum untuk membuat tindakan kustom untuk kait siklus hidup adalah dengan menggunakan notifikasi yang dikirimkan oleh Amazon EC2 Auto Scaling ke layanan lain, seperti Amazon. EventBridge Namun, Anda dapat menghindari keharusan membuat infrastruktur tambahan dengan menggunakan skrip data pengguna untuk memindahkan kode yang mengonfigurasi instance dan menyelesaikan tindakan siklus hidup ke dalam instance itu sendiri. 

Tutorial berikut menunjukkan kepada Anda bagaimana untuk memulai menggunakan script data pengguna dan metadata instance. Anda membuat konfigurasi grup Auto Scaling dasar dengan skrip data pengguna yang membaca [status siklus hidup target](retrieving-target-lifecycle-state-through-imds.md) instans dalam grup Anda dan melakukan tindakan panggilan balik pada fase tertentu dari siklus hidup instans untuk melanjutkan proses peluncuran.

Ilustrasi berikut merangkum alur untuk acara scale-out saat Anda menggunakan skrip data pengguna 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 skrip data pengguna untuk melakukan tindakan kustom.\]](http://docs.aws.amazon.com/id_id/autoscaling/ec2/userguide/images/lifecycle-hook-user-data-script.png)


**Topics**
+ [Langkah 1: Buat peran IAM dengan izin untuk menyelesaikan tindakan siklus hidup](#instance-metadata-create-iam-role)
+ [Langkah 2: Buat template peluncuran dan sertakan peran IAM dan skrip data pengguna](#instance-metadata-create-hello-world-function)
+ [Langkah 3: Buat grup Auto Scaling](#instance-metadata-create-auto-scaling-group)
+ [Langkah 4: Tambahkan kait siklus hidup](#instance-metadata-add-lifecycle-hook)
+ [Langkah 5: Uji dan verifikasi fungsionalitas](#instance-metadata-testing-hook)
+ [Langkah 6: Bersihkan](#instance-metadata-lifecycle-hooks-tutorial-cleanup)
+ [Sumber daya terkait](#instance-metadata-lifecycle-hooks-tutorial-related-resources)

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

Bila Anda menggunakan AWS CLI atau AWS SDK untuk mengirim panggilan balik untuk menyelesaikan tindakan siklus hidup, Anda harus menggunakan peran IAM dengan izin untuk menyelesaikan tindakan 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**, salin dan tempel dokumen kebijakan berikut ke dalam kotak. Ganti **sample text**dengan nomor akun Anda dan nama grup Auto Scaling yang ingin Anda buat ()**TestAutoScalingEvent-group**.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "autoscaling:CompleteLifecycleAction"
         ],
         "Resource": "arn:aws:autoscaling:*:123456789012:autoScalingGroup:*:autoScalingGroupName/TestAutoScalingEvent-group"
       }
     ]
   }
   ```

------

1. Pilih **Berikutnya**. 

1. Untuk **Nama kebijakan**, masukkan **TestAutoScalingEvent-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 **EC2** dan kemudian pilih **Berikutnya**. 

1. Di bawah **Tambahkan izin**, pilih kebijakan yang Anda buat (**TestAutoScalingEvent-policy**). Lalu, pilih **Selanjutnya**. 

1. Pada halaman **Nama, tinjau, dan buat**, untuk **nama Peran**, masukkan **TestAutoScalingEvent-role** dan pilih **Buat peran**. 

## Langkah 2: Buat template peluncuran dan sertakan peran IAM dan skrip data pengguna
<a name="instance-metadata-create-hello-world-function"></a>

Buat template peluncuran untuk digunakan dengan grup Auto Scaling Anda. Sertakan peran IAM yang Anda buat dan skrip data pengguna sampel yang disediakan.

**Untuk membuat templat peluncuran**

1. Buka [halaman Peluncuran templat](https://console.aws.amazon.com/ec2/v2/#LaunchTemplates) konsol Amazon EC2.

1. Pilih **Buat templat peluncuran**.

1. Untuk **nama template Luncurkan**, masukkan**TestAutoScalingEvent-template**.

1. Di bawah **panduan Auto Scaling**, pilih kotak centang. 

1. Untuk Gambar **Aplikasi dan OS (Gambar Mesin Amazon)**, pilih Amazon Linux 2 (HVM), Jenis Volume SSD, 64-bit (x86) dari daftar Mulai **Cepat**. 

1. Untuk **jenis Instance**, pilih jenis instans Amazon EC2 (misalnya, “t2.micro”).

1. Untuk **Detail lanjutan**, perluas bagian tersebut untuk melihat kolomnya. 

1. **Untuk **profil instans IAM, pilih nama profil** instans IAM dari peran IAM Anda (-role)TestAutoScalingEvent.** Profil instance adalah kontainer untuk peran IAM yang memungkinkan Amazon EC2 melewati peran IAM ke suatu instance saat instance diluncurkan.

   Saat Anda menggunakan konsol IAM untuk membuat peran IAM, konsol secara otomatis membuat profil instance dengan nama yang sama dengan peran yang sesuai.

1. Untuk **data Pengguna**, salin dan tempel contoh skrip data pengguna berikut ke dalam bidang. Ganti teks sampel `group_name` dengan nama grup Auto Scaling yang ingin Anda buat dan `region` dengan grup Auto Scaling yang Wilayah AWS Anda inginkan untuk digunakan.

   ```
   #!/bin/bash
   
   function token {
       echo "X-aws-ec2-metadata-token: $(curl -X PUT 'http://169.254.169.254/latest/api/token' -H 'X-aws-ec2-metadata-token-ttl-seconds: 21600')"
   }
   
   function get_target_state {
       echo $(curl -H "$(token)" -s http://169.254.169.254/latest/meta-data/autoscaling/target-lifecycle-state)
   }
   
   function get_instance_id {
       echo $(curl -H "$(token)" -s http://169.254.169.254/latest/meta-data/instance-id)
   }
   
   function complete_lifecycle_action {
       instance_id=$(get_instance_id)
       group_name='TestAutoScalingEvent-group'
       region='us-west-2'
    
       echo $instance_id
       echo $region
       echo $(aws autoscaling complete-lifecycle-action \
         --lifecycle-hook-name TestAutoScalingEvent-hook \
         --auto-scaling-group-name $group_name \
         --lifecycle-action-result CONTINUE \
         --instance-id $instance_id \
         --region $region)
   }
   
   function main {
       while true
       do
           target_state=$(get_target_state)
           if [ \"$target_state\" = \"InService\" ]; then
               # Change hostname
               export new_hostname="${group_name}-$instance_id"
               hostname $new_hostname
               # Send callback
               complete_lifecycle_action
               break
           fi
           echo $target_state
           sleep 5
       done
   }
   
   main
   ```

   Skrip data pengguna sederhana ini melakukan hal berikut:
   + Memanggil metadata instance untuk mengambil status siklus hidup target dan ID instans dari metadata instance
   + Mengambil status siklus hidup target berulang kali hingga berubah menjadi `InService`
   + Mengubah nama host instance menjadi ID instance yang ditambahkan dengan nama grup Auto Scaling, jika status siklus hidup target adalah `InService`
   + Mengirim callback dengan memanggil perintah **complete-lifecycle-action** CLI untuk memberi sinyal Amazon EC2 `CONTINUE` Auto Scaling ke proses peluncuran EC2

1. Pilih **Buat templat peluncuran**.

1. Pada halaman konfirmasi, pilih **Buat grup Auto Scaling**.

**catatan**  
Untuk contoh lain yang dapat Anda gunakan sebagai referensi untuk mengembangkan skrip data pengguna, lihat [GitHub repositori](https://github.com/aws-samples/amazon-ec2-auto-scaling-group-examples) untuk Amazon EC2 Auto Scaling.

## Langkah 3: Buat grup Auto Scaling
<a name="instance-metadata-create-auto-scaling-group"></a>

Setelah Anda membuat template peluncuran, buat grup Auto Scaling.

**Untuk membuat grup Auto Scaling**

1. Pada halaman **Choose launch template atau konfigurasi**, untuk **nama grup Auto Scaling, masukkan nama** untuk grup Auto Scaling (). **TestAutoScalingEvent-group**

1. Pilih **Berikutnya** untuk pergi ke halaman **opsi peluncuran Choose instance**. 

1. Untuk **Jaringan**, pilih VPC.

1. Untuk **Availability Zones dan subnet**, pilih satu atau beberapa subnet dari satu atau beberapa Availability Zone.

1. Di bagian **Persyaratan tipe instans**, gunakan pengaturan default untuk menyederhanakan langkah ini. (Jangan mengganti template peluncuran.) Untuk tutorial ini, Anda hanya akan meluncurkan satu On-Demand Instance menggunakan jenis instance yang ditentukan dalam template peluncuran Anda. 

1. Pilih **Lewati untuk meninjau** di bagian bawah layar. 

1. Pada halaman **Tinjauan**, tinjau detail grup Auto Scaling Anda, lalu pilih grup **Buat Auto Scaling**.

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

Tambahkan kait siklus hidup untuk menahan instance dalam status tunggu hingga tindakan siklus hidup Anda selesai.

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

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

   1. Untuk **batas waktu detak jantung**, masukkan **300** jumlah detik untuk menunggu panggilan balik dari skrip data pengguna Anda.

   1. Untuk **hasil Default**, pilih **ABANDOND**. Jika waktu hook habis tanpa menerima panggilan balik dari skrip data pengguna Anda, grup Auto Scaling akan menghentikan instance baru.

   1. (Opsional) Biarkan **metadata Pemberitahuan** tetap kosong.

1. Pilih **Buat**.

## Langkah 5: Uji dan verifikasi fungsionalitas
<a name="instance-metadata-testing-hook"></a>

Untuk menguji fungsionalitas, perbarui grup Auto Scaling dengan meningkatkan kapasitas yang diinginkan dari grup Auto Scaling sebanyak 1. Skrip data pengguna berjalan dan mulai memeriksa status siklus hidup target instans segera setelah instance diluncurkan. Skrip mengubah nama host dan mengirimkan tindakan panggilan balik saat status siklus hidup target. `InService` Ini biasanya hanya membutuhkan beberapa detik untuk menyelesaikannya.

**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. Lihat detail di panel bawah sambil 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 diluncurkan, kolom **Status** di panel atas menampilkan status *Memperbarui kapasitas*. 

Setelah meningkatkan kapasitas yang diinginkan, Anda dapat memverifikasi bahwa instans Anda telah berhasil diluncurkan dan tidak dihentikan 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. 

1. Jika skrip data pengguna gagal, setelah periode batas waktu berlalu, Anda akan melihat aktivitas penskalaan dengan status `Canceled` dan pesan status. `Instance failed to complete user's Lifecycle Action: Lifecycle Action with token e85eb647-4fe0-4909-b341-a6c42EXAMPLE was abandoned: Lifecycle Action Completed with ABANDON Result`

## Langkah 6: Bersihkan
<a name="instance-metadata-lifecycle-hooks-tutorial-cleanup"></a>

Jika Anda selesai bekerja dengan sumber daya yang Anda buat 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 (). `TestAutoScalingEvent-hook`

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

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

**Untuk menghapus template peluncuran**

1. Buka [halaman Peluncuran templat](https://console.aws.amazon.com/ec2/v2/#LaunchTemplates) konsol Amazon EC2.

1. Pilih template peluncuran Anda (`TestAutoScalingEvent-template`) dan kemudian pilih **Tindakan**, **Hapus template**.

1. **Saat diminta konfirmasi, ketik **Delete** untuk mengonfirmasi penghapusan templat peluncuran yang ditentukan, lalu pilih Hapus.**

Jika Anda sudah selesai bekerja dengan contoh grup Auto Scaling, hapus saja. Anda juga dapat menghapus peran IAM dan kebijakan izin yang Anda buat.

**Untuk menghapus 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 (`TestAutoScalingEvent-group`) dan pilih Hapus.** 

1. **Saat diminta konfirmasi, ketik **delete** untuk mengonfirmasi penghapusan grup Auto Scaling yang ditentukan, lalu pilih Hapus.**

   Ikon memuat di kolom **Nama** menunjukkan bahwa grup Auto Scaling dihapus. Dibutuhkan beberapa menit untuk menghentikan instance dan menghapus grup. 

**Untuk menghapus peran IAM**

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

1. Pilih peran fungsi (`TestAutoScalingEvent-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 (`TestAutoScalingEvent-policy`).

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

1. Saat diminta konfirmasi, ketikkan nama kebijakan, lalu pilih **Hapus**.

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

Topik terkait berikut dapat membantu saat Anda mengembangkan kode yang memanggil tindakan pada instance berdasarkan data yang tersedia dalam metadata instance.
+ [Ambil status siklus hidup target melalui metadata instance](retrieving-target-lifecycle-state-through-imds.md). Bagian ini menjelaskan status siklus hidup untuk kasus penggunaan lainnya, seperti penghentian instance.
+ [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).
+ [Kategori metadata instans](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html#instancedata-data-categories) di Panduan Pengguna *Amazon EC2*. Topik ini mencantumkan semua kategori metadata instans yang dapat Anda gunakan untuk menjalankan tindakan pada instans EC2.

Untuk tutorial yang menunjukkan cara menggunakan Amazon EventBridge untuk membuat aturan yang menjalankan fungsi Lambda berdasarkan peristiwa yang terjadi pada instance di grup Auto Scaling, lihat. [Tutorial: Konfigurasikan kait siklus hidup yang memanggil fungsi Lambda](tutorial-lifecycle-hook-lambda.md)