Bersiaplah untuk menambahkan kait siklus hidup ke grup Auto Scaling - EC2Auto Scaling Amazon

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

Bersiaplah untuk menambahkan kait siklus hidup ke grup Auto Scaling

Sebelum menambahkan hook siklus hidup ke grup Auto Scaling, pastikan skrip data pengguna atau target notifikasi sudah diatur dengan benar.

  • Untuk menggunakan skrip data pengguna untuk melakukan tindakan kustom pada instance Anda saat diluncurkan, Anda tidak perlu mengonfigurasi target notifikasi. Namun, Anda harus sudah membuat template peluncuran atau konfigurasi peluncuran yang menentukan skrip data pengguna Anda dan menghubungkannya dengan grup Auto Scaling Anda. Untuk informasi selengkapnya tentang skrip data pengguna, lihat Menjalankan perintah pada instans Linux Anda saat diluncurkan di Panduan Pengguna Amazon EC2.

  • Untuk memberi sinyal Auto Scaling Amazon EC2 saat tindakan siklus hidup selesai, Anda harus menambahkan CompleteLifecycleActionpanggilan API ke skrip, dan Anda harus membuat peran IAM secara manual dengan kebijakan yang memungkinkan instance Auto Scaling memanggil API ini. Template peluncuran atau konfigurasi peluncuran Anda harus menentukan peran ini menggunakan profil instans IAM yang dilampirkan ke instans Amazon EC2 Anda saat peluncuran. Untuk informasi selengkapnya, lihat Selesaikan tindakan siklus hidup dalam grup Auto Scaling dan Peran IAM untuk aplikasi yang berjalan di instance Amazon EC2.

  • Untuk menggunakan layanan seperti Lambda untuk melakukan tindakan kustom, Anda harus sudah membuat EventBridge aturan dan menetapkan fungsi Lambda sebagai targetnya. Untuk informasi selengkapnya, lihat Konfigurasikan target notifikasi untuk notifikasi siklus hidup.

  • Untuk mengizinkan Lambda memberi sinyal Auto Scaling Amazon EC2 saat tindakan siklus hidup selesai, Anda harus CompleteLifecycleActionmenambahkan panggilan API ke kode fungsi. Anda juga harus melampirkan kebijakan IAM ke peran eksekusi fungsi yang memberi Lambda izin untuk menyelesaikan tindakan siklus hidup. Untuk informasi selengkapnya, lihat Tutorial: Konfigurasikan kait siklus hidup yang memanggil fungsi Lambda.

  • Untuk menggunakan layanan seperti Amazon SNS atau Amazon SQS untuk melakukan tindakan kustom, Anda harus sudah membuat topik SNS atau antrian SQS dan telah menyiapkan Nama Sumber Daya Amazon (ARN). Anda juga harus telah membuat peran IAM yang memberikan akses Auto Scaling Amazon EC2 ke topik SNS atau target SQS Anda dan telah menyiapkan ARN-nya. Untuk informasi selengkapnya, lihat Konfigurasikan target notifikasi untuk notifikasi siklus hidup.

    catatan

    Secara default, saat Anda menambahkan kait siklus hidup di konsol, Auto Scaling Amazon EC2 mengirimkan pemberitahuan peristiwa siklus hidup ke Amazon. EventBridge Menggunakan EventBridge atau skrip data pengguna adalah praktik terbaik yang disarankan. Untuk membuat hook siklus hidup yang mengirimkan notifikasi langsung ke Amazon SNS atau Amazon SQS, gunakan AWS CloudFormation, atau SDK AWS CLI untuk menambahkan kait siklus hidup.

Konfigurasikan target notifikasi untuk notifikasi siklus hidup

Anda dapat menambahkan kait siklus hidup ke grup Auto Scaling untuk melakukan tindakan kustom saat instance memasuki status tunggu. Anda dapat memilih layanan target untuk melakukan tindakan ini tergantung pada pendekatan pengembangan pilihan Anda.

Pendekatan pertama menggunakan Amazon EventBridge untuk menjalankan fungsi Lambda yang melakukan tindakan yang Anda inginkan. Pendekatan kedua melibatkan pembuatan topik Amazon Simple Notification Service (Amazon SNS) tempat notifikasi diterbitkan. Klien dapat berlangganan topik SNS dan menerima pesan yang dipublikasikan menggunakan protokol yang didukung. Pendekatan terakhir melibatkan penggunaan Amazon Simple Queue Service (Amazon Simple Queue Service), sistem pesan yang digunakan oleh aplikasi terdistribusi untuk bertukar pesan melalui model polling.

Sebagai praktik terbaik, kami sarankan Anda menggunakannya EventBridge. Pemberitahuan yang dikirim ke Amazon SNS dan Amazon SQS berisi informasi yang sama dengan notifikasi yang dikirimkan oleh Amazon EC2 Auto Scaling. EventBridge Sebelumnya EventBridge, praktik standar adalah mengirim pemberitahuan ke SNS atau SQS dan mengintegrasikan layanan lain dengan SNS atau SQS untuk melakukan tindakan terprogram. Hari ini, EventBridge memberi Anda lebih banyak opsi untuk layanan mana yang dapat Anda targetkan dan membuatnya lebih mudah untuk menangani acara menggunakan arsitektur tanpa server.

Prosedur berikut mencakup cara mengatur target notifikasi Anda.

Ingat, jika Anda memiliki skrip data pengguna di template peluncuran atau konfigurasi peluncuran yang mengonfigurasi instans Anda saat diluncurkan, Anda tidak perlu menerima pemberitahuan untuk melakukan tindakan khusus pada instance Anda.

penting

EventBridge Aturan, fungsi Lambda, topik Amazon SNS, dan antrean Amazon SQS yang Anda gunakan dengan kait siklus hidup harus selalu berada di Wilayah yang sama tempat Anda membuat grup Auto Scaling.

Pemberitahuan rute ke Lambda menggunakan EventBridge

Anda dapat mengonfigurasi EventBridge aturan untuk menjalankan fungsi Lambda saat instance memasuki status tunggu. Auto Scaling Amazon EC2 memancarkan pemberitahuan peristiwa siklus hidup tentang instans yang diluncurkan atau dihentikan dan token yang dapat Anda gunakan EventBridge untuk mengontrol tindakan siklus hidup. Untuk contoh peristiwa ini, lihatReferensi acara Auto Scaling Amazon EC2.

catatan

Saat Anda menggunakan aturan AWS Management Console untuk membuat acara, konsol secara otomatis menambahkan izin IAM yang diperlukan untuk memberikan EventBridge izin memanggil fungsi Lambda Anda. Jika Anda membuat aturan peristiwa menggunakan AWS CLI, Anda harus memberikan izin ini secara eksplisit.

Untuk informasi tentang cara membuat aturan peristiwa di EventBridge konsol, lihat Membuat EventBridge aturan Amazon yang bereaksi terhadap peristiwa di Panduan EventBridge Pengguna Amazon.

— atau —

Untuk tutorial pengantar yang ditujukan untuk pengguna konsol, lihatTutorial: Konfigurasikan kait siklus hidup yang memanggil fungsi Lambda. Tutorial ini menunjukkan cara membuat fungsi Lambda sederhana yang mendengarkan acara peluncuran dan menuliskannya ke log Log. CloudWatch

Untuk membuat EventBridge aturan yang memanggil fungsi Lambda
  1. Buat fungsi Lambda dengan menggunakan konsol Lambda dan catat Nama Sumber Daya Amazon (ARN). Misalnya, arn:aws:lambda:region:123456789012:function:my-function. Anda membutuhkan ARN untuk membuat target. EventBridge Untuk informasi selengkapnya, lihat Memulai Lambda di Panduan AWS Lambda Pengembang.

  2. Untuk membuat aturan yang cocok dengan peristiwa misalnya peluncuran, gunakan perintah put-rule berikut.

    aws events put-rule --name my-rule --event-pattern file://pattern.json --state ENABLED

    Contoh berikut menunjukkan pattern.json untuk tindakan siklus hidup peluncuran instance. Ganti teks dalam huruf miring dengan nama grup Auto Scaling Anda.

    { "source": [ "aws.autoscaling" ], "detail-type": [ "EC2 Instance-launch Lifecycle Action" ], "detail": { "AutoScalingGroupName": [ "my-asg" ] } }

    Jika perintah berjalan dengan sukses, EventBridge merespons dengan ARN aturan. Perhatikan ARN ini. Anda harus memasukkannya di langkah 4.

    Untuk membuat aturan yang cocok untuk acara lain, ubah pola acara. Untuk informasi selengkapnya, lihat Gunakan EventBridge untuk menangani peristiwa Auto Scaling.

  3. Untuk menentukan fungsi Lambda yang akan digunakan sebagai target aturan, gunakan perintah put-target berikut.

    aws events put-targets --rule my-rule --targets Id=1,Arn=arn:aws:lambda:region:123456789012:function:my-function

    Pada perintah sebelumnya, aturan saya adalah nama yang Anda tentukan untuk aturan di langkah 2, dan nilai untuk parameter Arn adalah ARN dari fungsi yang Anda buat di langkah 1.

  4. Untuk menambahkan izin yang memungkinkan aturan menjalankan fungsi Lambda Anda, gunakan perintah izin tambahan Lambda berikut. Perintah ini mempercayai EventBridge service principal (events.amazonaws.com) dan cakupan izin untuk aturan yang ditentukan.

    aws lambda add-permission --function-name my-function --statement-id my-unique-id \ --action 'lambda:InvokeFunction' --principal events.amazonaws.com --source-arn arn:aws:events:region:123456789012:rule/my-rule

    Dalam perintah sebelumnya:

    • my-function adalah nama fungsi Lambda yang Anda ingin aturan untuk digunakan sebagai target.

    • my-unique-idadalah pengidentifikasi unik yang Anda tentukan untuk menggambarkan pernyataan dalam kebijakan fungsi Lambda.

    • source-arnadalah ARN dari aturan tersebut. EventBridge

    Jika perintah berjalan dengan berhasil, Anda menerima output yang mirip dengan berikut ini.

    { "Statement": "{\"Sid\":\"my-unique-id\", \"Effect\":\"Allow\", \"Principal\":{\"Service\":\"events.amazonaws.com\"}, \"Action\":\"lambda:InvokeFunction\", \"Resource\":\"arn:aws:lambda:us-west-2:123456789012:function:my-function\", \"Condition\": {\"ArnLike\": {\"AWS:SourceArn\": \"arn:aws:events:us-west-2:123456789012:rule/my-rule\"}}}" }

    Nilai Statement adalah versi string JSON dari pernyataan yang ditambahkan ke kebijakan fungsi Lambda.

  5. Setelah Anda mengikuti petunjuk ini, lanjutkan ke Tambahkan kait siklus hidup ke grup Auto Scaling sebagai langkah berikutnya.

Terima notifikasi menggunakan Amazon SNS

Anda dapat menggunakan Amazon SNS untuk menyiapkan target notifikasi (topik SNS) untuk menerima notifikasi saat tindakan siklus hidup terjadi. Amazon SNS kemudian mengirimkan notifikasi ke penerima berlangganan. Sampai langganan dikonfirmasi, tidak ada pemberitahuan yang dipublikasikan ke topik yang dikirim ke penerima.

Untuk mengatur menyiapkan notifikasi menggunakan Amazon SNS
  1. Buat topik Amazon SNS dengan menggunakan konsol Amazon SNS atau perintah create-topic berikut. Pastikan topik berada di Wilayah yang sama dengan grup Auto Scaling yang Anda gunakan. Untuk informasi lebih lanjut, lihat Memulai dengan Amazon SNS di Panduan Developer Amazon Simple Notification Service.

    aws sns create-topic --name my-sns-topic
  2. Perhatikan topik Amazon Resource Name (ARN), misalnya,. arn:aws:sns:region:123456789012:my-sns-topic Anda membutuhkannya untuk membuat kait siklus hidup.

  3. Buat peran layanan IAM untuk memberikan akses Auto Scaling Amazon EC2 ke target notifikasi Amazon SNS Anda.

    Untuk memberikan Amazon EC2 Auto Scaling akses ke topik SNS Anda

    1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

    2. Pada panel navigasi di sebelah kiri, pilih Peran.

    3. Pilih Buat peran.

    4. Untuk Pilih entitas tepercaya, pilih AWS layanan.

    5. Untuk kasus penggunaan Anda, di bawah Kasus penggunaan untuk AWS layanan lain, pilih EC2 Auto Scaling dan kemudian Akses Pemberitahuan Penskalaan Otomatis EC2.

    6. Pilih Berikutnya dua kali untuk membuka halaman Nama, ulasan, dan buat.

    7. Untuk nama Peran, masukkan nama untuk peran (misalnya,my-notification-role) dan pilih Buat peran.

    8. Pada halaman Peran, pilih peran yang baru Anda buat untuk membuka Ringkasan yang baru. Catat peran ARN. Misalnya, arn:aws:iam::123456789012:role/my-notification-role. Anda membutuhkannya untuk membuat kait siklus hidup.

  4. Setelah Anda mengikuti petunjuk ini, lanjutkan ke Tambahkan kait siklus hidup ()AWS CLI sebagai langkah berikutnya.

Menerima pemberitahuan menggunakan Amazon SQS

Anda dapat menggunakan Amazon SQS untuk menyiapkan target notifikasi agar menerima pesan saat tindakan siklus hidup terjadi. Konsumen antrian kemudian harus melakukan polling antrian SQS untuk bertindak atas notifikasi ini.

penting

Antrean FIFO tidak kompatibel dengan hook siklus aktif.

Untuk menyiapkan notifikasi menggunakan Amazon SQS
  1. Buat antrean Amazon SQS dengan menggunakan konsol Amazon SQS. Pastikan antrean berada di Wilayah yang sama dengan grup Auto Scaling yang Anda gunakan. Untuk informasi lebih lanjut, lihat Memulai dengan Amazon SQS di Panduan Pengembang Amazon Simple Queue Service.

  2. Perhatikan antrian ARN, misalnya,. arn:aws:sqs:us-west-2:123456789012:my-sqs-queue Anda membutuhkannya untuk membuat kait siklus hidup.

  3. Buat peran layanan IAM untuk memberikan akses Auto Scaling Amazon EC2 ke target notifikasi Amazon SQS Anda.

    Untuk memberikan akses Auto Scaling Amazon EC2 ke antrean SQS Anda

    1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

    2. Pada panel navigasi di sebelah kiri, pilih Peran.

    3. Pilih Buat peran.

    4. Untuk Pilih entitas tepercaya, pilih AWS layanan.

    5. Untuk kasus penggunaan Anda, di bawah Kasus penggunaan untuk AWS layanan lain, pilih EC2 Auto Scaling dan kemudian Akses Pemberitahuan Penskalaan Otomatis EC2.

    6. Pilih Berikutnya dua kali untuk membuka halaman Nama, ulasan, dan buat.

    7. Untuk nama Peran, masukkan nama untuk peran (misalnya,my-notification-role) dan pilih Buat peran.

    8. Pada halaman Peran, pilih peran yang baru Anda buat untuk membuka Ringkasan yang baru. Catat peran ARN. Misalnya, arn:aws:iam::123456789012:role/my-notification-role. Anda membutuhkannya untuk membuat kait siklus hidup.

  4. Setelah Anda mengikuti petunjuk ini, lanjutkan ke Tambahkan kait siklus hidup ()AWS CLI sebagai langkah berikutnya.

Contoh pesan pemberitahuan untuk Amazon SNS dan Amazon SQS

Saat instance dalam keadaan menunggu, pesan dipublikasikan ke target notifikasi Amazon SNS atau Amazon SQS. Pesan ini mencakup informasi berikut:

  • LifecycleActionToken — Token tindakan siklus aktif.

  • AccountId— Akun AWS ID.

  • AutoScalingGroupName — Nama grup Auto Scaling.

  • LifecycleHookName — Nama hook siklus aktif.

  • EC2InstanceId — ID instance EC2.

  • LifecycleTransition — Jenis hook siklus aktif.

  • NotificationMetadata— Metadata notifikasi.

Berikut ini adalah contoh pesan pemberitahuan.

Service: AWS Auto Scaling Time: 2021-01-19T00:36:26.533Z RequestId: 18b2ec17-3e9b-4c15-8024-ff2e8ce8786a LifecycleActionToken: 71514b9d-6a40-4b26-8523-05e7ee35fa40 AccountId: 123456789012 AutoScalingGroupName: my-asg LifecycleHookName: my-hook EC2InstanceId: i-0598c7d356eba48d7 LifecycleTransition: autoscaling:EC2_INSTANCE_LAUNCHING NotificationMetadata: hook message metadata

Contoh pesan notifikasi uji

Saat pertama kali menambahkan kait siklus hidup, pesan notifikasi pengujian akan dipublikasikan ke target notifikasi. Berikut ini adalah contoh pesan notifikasi pengujian.

Service: AWS Auto Scaling Time: 2021-01-19T00:35:52.359Z RequestId: 18b2ec17-3e9b-4c15-8024-ff2e8ce8786a Event: autoscaling:TEST_NOTIFICATION AccountId: 123456789012 AutoScalingGroupName: my-asg AutoScalingGroupARN: arn:aws:autoscaling:us-west-2:123456789012:autoScalingGroup:042cba90-ad2f-431c-9b4d-6d9055bcc9fb:autoScalingGroupName/my-asg
catatan

Untuk contoh peristiwa yang dikirimkan dari Amazon EC2 Auto Scaling EventBridge ke, lihat. Referensi acara Auto Scaling Amazon EC2