Kait siklus hidup untuk penerapan layanan Amazon ECS - Amazon Elastic Container Service

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

Kait siklus hidup untuk penerapan layanan Amazon ECS

Ketika penerapan dimulai, ia melewati tahapan siklus hidup. Tahapan ini bisa dalam keadaan seperti IN_PROGRESS atau berhasil. Anda dapat menggunakan kait siklus hidup, yang merupakan fungsi Lambda yang dijalankan Amazon ECS atas nama Anda pada tahapan siklus hidup yang ditentukan. Fungsinya dapat berupa salah satu dari yang berikut:

  • API asinkron yang memvalidasi pemeriksaan kesehatan dalam waktu 15 menit.

  • API polling yang memulai proses asinkron lain yang mengevaluasi penyelesaian kait siklus hidup.

Setelah fungsi selesai berjalan, ia harus mengembalikan a hookStatus agar penerapan dapat dilanjutkan. Jika a hookStatus tidak dikembalikan, atau jika fungsi gagal, penerapan akan kembali. Berikut ini adalah hookStatus nilainya:

  • SUCCEEDED- penyebaran berlanjut ke tahap siklus hidup berikutnya

  • FAILED— penyebaran kembali ke penerapan terakhir yang berhasil.

  • IN_PROGRESS- Amazon ECS menjalankan fungsi lagi setelah periode waktu yang singkat. Secara default ini adalah interval 30 detik, namun nilai ini dapat disesuaikan dengan mengembalikan a callBackDelaySeconds di samping. hookStatus

Contoh berikut menunjukkan cara mengembalikan hookStatus dengan penundaan callback kustom. Dalam contoh ini, Amazon ECS akan mencoba lagi hook ini dalam 60 detik, bukan default 30 detik:

{ "hookStatus": "IN_PROGRESS", "callBackDelaySeconds": 60 }

Ketika roll back terjadi, Amazon ECS menjalankan kait siklus hidup untuk tahapan siklus hidup berikut:

  • PRODUCTION_TRAFFIC_SHIFT

  • TEST_TRAFFIC_SHIFT

Muatan siklus hidup

Saat Anda mengonfigurasi kait siklus hidup untuk penerapan layanan ECS, Amazon ECS akan memanggil kait ini pada tahapan tertentu dari proses penerapan. Setiap tahap siklus hidup menyediakan muatan JSON dengan informasi tentang status penerapan saat ini. Dokumen ini menjelaskan struktur payload untuk setiap tahap siklus hidup.

Struktur muatan umum

Semua muatan tahap siklus hidup mencakup bidang umum berikut:

  • serviceArn- Nama Sumber Daya Amazon (ARN) dari layanan.

  • targetServiceRevisionArn- ARN dari revisi layanan target sedang dikerahkan.

  • testTrafficWeights- Peta revisi layanan ARNs untuk persentase berat lalu lintas uji yang sesuai.

  • productionTrafficWeights- Peta revisi layanan ARNs untuk persentase berat lalu lintas produksi yang sesuai.

Muatan tahap siklus hidup

RECONCILE_SERVICE

Tahap ini terjadi pada awal proses penyebaran ketika layanan sedang direkonsiliasi. Berikut ini menunjukkan contoh payload untuk tahap siklus hidup ini.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": { "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892": 100, "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/78652123": 0 }, "productionTrafficWeights": { "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892": 100, "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/78652123": 0 } }

Harapan pada tahap ini:

  • Set tugas utama adalah pada skala 0%

PRE_SCALE_UP

Tahap ini terjadi sebelum tugas baru ditingkatkan. Berikut ini menunjukkan contoh payload untuk tahap siklus hidup ini.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": {}, "productionTrafficWeights": {} }

Harapan pada tahap ini:

  • Tugas revisi layanan hijau berada pada skala 0%

POST_SCALE_UP

Tahap ini terjadi setelah tugas-tugas baru ditingkatkan dan sehat. Berikut ini menunjukkan contoh payload untuk tahap siklus hidup ini.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": {}, "productionTrafficWeights": {} }

Harapan pada tahap ini:

  • Tugas revisi layanan hijau berada pada skala 100%

  • Tugas dalam revisi layanan hijau sehat

TEST_TRAFFIC_SHIFT

Tahap ini terjadi ketika lalu lintas uji sedang dialihkan ke tugas revisi layanan hijau.

Berikut ini menunjukkan contoh payload untuk tahap siklus hidup ini.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": { "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892": 100, "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/78652123": 0 }, "productionTrafficWeights": {} }

Harapan pada tahap ini:

  • Lalu lintas uji sedang dalam proses bergerak menuju tugas revisi layanan hijau.

POST_TEST_TRAFFIC_SHIFT

Tahap ini terjadi setelah lalu lintas uji telah sepenuhnya bergeser ke tugas-tugas baru.

Berikut ini menunjukkan contoh payload untuk tahap siklus hidup ini.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": {}, "productionTrafficWeights": {} }

Harapan pada tahap ini:

  • 100% lalu lintas uji bergerak menuju tugas revisi layanan hijau.

PRODUCTION_TRAFFIC_SHIFT

Tahap ini terjadi ketika lalu lintas produksi sedang dialihkan ke tugas revisi layanan hijau.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": {}, "productionTrafficWeights": { "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892": 100, "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/78652123": 0 } }

Harapan pada tahap ini:

  • Lalu lintas produksi sedang dalam proses pindah ke revisi layanan hijau.

POST_PRODUCTION_TRAFFIC_SHIFT

Tahap ini terjadi setelah lalu lintas produksi sepenuhnya dialihkan ke tugas revisi layanan hijau.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": {}, "productionTrafficWeights": {} }

Harapan pada tahap ini:

  • 100% lalu lintas produksi bergerak menuju tugas revisi layanan hijau.

Kategori tahap siklus hidup

Tahapan siklus hidup terbagi dalam dua kategori:

  1. Tahap pemanggilan tunggal - Tahapan ini dipanggil hanya sekali selama penerapan layanan:

    • PRE_SCALE_UP

    • POST_SCALE_UP

    • POST_TEST_TRAFFIC_SHIFT

    • POST_PRODUCTION_TRAFFIC_SHIFT

  2. Tahapan pemanggilan berulang - Tahapan ini mungkin dipanggil beberapa kali selama penerapan layanan, misalnya ketika operasi rollback terjadi:

    • TEST_TRAFFIC_SHIFT

    • PRODUCTION_TRAFFIC_SHIFT

Status penerapan selama kait siklus hidup

Saat kait siklus hidup berjalan, status penerapan akan berlaku IN_PROGRESS untuk semua tahapan siklus hidup.

Tahap Siklus Hidup Status Penerapan
RECONCILE_SERVICE IN_PROGRESS
PRE_SCALE_UP IN_PROGRESS
POST_SCALE_UP IN_PROGRESS
TEST_TRAFFIC_SHIFT IN_PROGRESS
POST_TEST_TRAFFIC_SHIFT IN_PROGRESS
PRODUCTION_TRAFFIC_SHIFT IN_PROGRESS
POST_PRODUCTION_TRAFFIC_SHIFT IN_PROGRESS