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, itu berlangsung melalui tahapan siklus hidup. Setiap tahap bisa dalam keadaan seperti IN_PROGRESS atauSUCCEEDED. Anda dapat menggunakan kait siklus hidup, yang merupakan fungsi Lambda yang dijalankan Amazon ECS atas nama Anda pada tahapan siklus hidup yang ditentukan. Setiap pemanggilan menyertakan payload JSON dengan informasi tentang status penerapan saat ini.
Pengait siklus hidup
Kait siklus hidup adalah fungsi Lambda yang dipanggil Amazon ECS pada tahap penerapan tertentu. Anda dapat menggunakan hook untuk menjalankan pengujian validasi, menegakkan kebijakan tata kelola, atau menerapkan langkah persetujuan manual sebelum penerapan berlangsung.
Saat Amazon ECS memanggil hook Anda, fungsi Anda harus mengembalikan objek JSON yang berisi bidang. hookStatus Anda dapat secara opsional menyertakan callBackDelay untuk mengontrol waktu coba lagi dan hookDetails meneruskan data di antara pemanggilan. Jika fungsi Anda tidak mengembalikan yang validhookStatus, atau jika gagal, Amazon ECS mengembalikan penerapan.
Nilai HookStatus
Berikut ini adalah hookStatus nilai yang valid:
-
SUCCEEDED— Penerapan berlanjut ke tahap siklus hidup berikutnya. -
FAILED- Amazon ECS mengembalikan penerapan ke revisi layanan terakhir yang berhasil. -
IN_PROGRESS- Amazon ECS memanggil fungsi lagi setelah penundaan. Secara default, penundaan adalah 30 detik. Anda dapat menyesuaikan nilai ini dengan mengembalikancallBackDelaydi sampinghookStatus.
Contoh berikut menunjukkan cara mengembalikan hookStatus dengan penundaan callback kustom. Dalam contoh ini, Amazon ECS mencoba ulang hook setelah 60 detik, bukan 30 detik default:
{ "hookStatus": "IN_PROGRESS", "callBackDelay": 60 }
Melewati status dengan HookDetails
hookDetailsBidang ini adalah kamus yang dapat Anda gunakan untuk meneruskan data ke dalam fungsi kait siklus hidup Anda. Ada dua cara untuk mengisihookDetails:
-
Saat pembuatan atau pembaruan layanan — Tentukan
hookDetailsdalam konfigurasi kait siklus hidup dalam definisi layanan Anda. Amazon ECS meneruskan data ini ke fungsi Anda pada setiap pemanggilan. Gunakan ini untuk membuat kait Anda dapat digunakan kembali di beberapa layanan dengan meneruskan konfigurasi khusus layanan. -
Saat runtime melalui respons IN_PROGRESS - Kembali
hookDetailsbersama status hook.IN_PROGRESSAmazon ECS meneruskan data ini kembali ke fungsi Anda pada pemanggilan berikutnya. Gunakan ini untuk mempertahankan status di antara pemanggilan tanpa penyimpanan eksternal.
Contoh berikut menunjukkan konfigurasi kait siklus hidup dalam definisi layanan yang meneruskan nama bucket S3 ke fungsi:
{ "hookTargetArn": "arn:aws:lambda:us-west-2:123456789012:function:my-approval-hook", "roleArn": "arn:aws:iam::123456789012:role/ecs-lambda-invoke-role", "lifecycleStages": [ "POST_TEST_TRAFFIC_SHIFT" ], "hookDetails": { "S3_BUCKET_NAME": "my-approval-bucket" } }
Ketika fungsi Anda kembaliIN_PROGRESS, Anda juga dapat memasukkan hookDetails dalam respons. Amazon ECS menggabungkan data ini dan meneruskannya kembali pada pemanggilan berikutnya. Kasus penggunaan umum termasuk meneruskan penghitung metrik atau ARN sumber daya eksternal di antara pemanggilan.
{ "hookStatus": "IN_PROGRESS", "callBackDelay": 30, "hookDetails": { "approvalChecked": true, "S3_BUCKET_NAME": "my-approval-bucket" } }
Pada pemanggilan berikutnya, Amazon ECS menyertakan muatan hookDetails dalam acara bersama: executionDetails
{ "executionId": "e8d5a28f-eb01-4f3c-9454-a30ba6dc54bc", "lifecycleStage": "POST_TEST_TRAFFIC_SHIFT", "resourceArn": "arn:aws:ecs:us-west-2:123456789012:service-deployment/my-cluster/my-service/EZe5RNVLH6PPzHXINuP28", "executionDetails": { "serviceArn": "arn:aws:ecs:us-west-2:123456789012:service/my-cluster/my-service", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/9313423515462893900", "testTrafficWeights": {}, "productionTrafficWeights": {} }, "hookDetails": { "approvalChecked": true, "S3_BUCKET_NAME": "my-approval-bucket" } }
Fungsi Anda dapat membaca event["hookDetails"] untuk mengakses konfigurasi dan status dari pemanggilan sebelumnya.
catatan
Data yang ditambahkan hookDetails pada saat runtime hanya bertahan di antara pemanggilan hook yang sama dalam satu penerapan. Data tidak terbawa di antara kait yang berbeda dalam penerapan yang sama atau kait yang sama dalam penerapan yang berbeda.
Kategori tahap siklus hidup
Tahapan siklus hidup terbagi dalam dua kategori:
-
Tahapan pemanggilan tunggal - Amazon ECS memanggil tahapan ini hanya sekali selama penerapan layanan:
RECONCILE_SERVICEPRE_SCALE_UPPOST_SCALE_UPPOST_TEST_TRAFFIC_SHIFTPOST_PRODUCTION_TRAFFIC_SHIFT
-
Tahapan pemanggilan berulang — Amazon ECS dapat memanggil tahapan ini beberapa kali selama penerapan layanan, termasuk selama rollback:
TEST_TRAFFIC_SHIFTPRODUCTION_TRAFFIC_SHIFT
Muatan siklus hidup
Struktur muatan umum
Saat Amazon ECS memanggil fungsi Lambda kait siklus hidup Anda, payload acara berisi bidang tingkat atas berikut:
-
executionId— Pengenal unik untuk eksekusi hook ini. -
lifecycleStage— Tahap siklus hidup saat ini (misalnya,PRODUCTION_TRAFFIC_SHIFT). -
resourceArn— ARN dari sumber daya yang terkait dengan penyebaran. -
executionDetails— Objek yang berisi informasi spesifik penerapan yang dijelaskan dalam daftar berikut.
Objek executionDetails berisi kolom-kolom berikut:
-
serviceArn— Nama Sumber Daya Amazon (ARN) dari layanan. -
targetServiceRevisionArn— ARN dari revisi layanan target sedang dikerahkan. -
testTrafficWeights— Peta ARN revisi layanan untuk persentase berat lalu lintas uji yang sesuai. -
productionTrafficWeights— Peta ARN revisi layanan untuk persentase berat lalu lintas produksi yang sesuai.
Contoh berikut menunjukkan struktur acara lengkap yang diterima fungsi Lambda Anda:
{ "executionId": "f4fcae0f-9bec-41c6-ba87-0eaa0cef8af5", "lifecycleStage": "PRODUCTION_TRAFFIC_SHIFT", "resourceArn": "arn:aws:ecs:us-west-2:123456789012:service-deployment/my-cluster/my-service/EZe5RNVLH6PPzHXINuP28", "executionDetails": { "serviceArn": "arn:aws:ecs:us-west-2:123456789012:service/my-cluster/my-service", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/9313423515462893900", "testTrafficWeights": {}, "productionTrafficWeights": { "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/9313423515462893900": 100, "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/1920498462936580504": 0 } } }
Muatan tahap siklus hidup
Bagian berikut menunjukkan contoh muatan untuk setiap tahap siklus hidup. Dalam contoh ini, revisi layanan hijau (9313423515462893900) adalah revisi baru yang diterapkan, dan revisi layanan biru (1920498462936580504) adalah revisi produksi yang ada.
PRE_SCALE_UP
Tahap ini terjadi sebelum Amazon ECS meluncurkan tugas revisi layanan hijau. Revisi layanan hijau belum dimulai, dan tidak ada lalu lintas yang diarahkan ke sana.
{ "executionId": "e8d5a28f-eb01-4f3c-9454-a30ba6dc54bc", "lifecycleStage": "PRE_SCALE_UP", "resourceArn": "arn:aws:ecs:us-west-2:123456789012:service-deployment/my-cluster/my-service/EZe5RNVLH6PPzHXINuP28", "executionDetails": { "serviceArn": "arn:aws:ecs:us-west-2:123456789012:service/my-cluster/my-service", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/9313423515462893900", "testTrafficWeights": {}, "productionTrafficWeights": {} } }
POST_SCALE_UP
Tahap ini terjadi setelah Amazon ECS meluncurkan tugas revisi layanan hijau dan mereka sehat. Tugas hijau berjalan tetapi belum menerima lalu lintas apa pun.
{ "executionId": "8b095b05-7bb0-4c56-a223-a3f61f4f9295", "lifecycleStage": "POST_SCALE_UP", "resourceArn": "arn:aws:ecs:us-west-2:123456789012:service-deployment/my-cluster/my-service/EZe5RNVLH6PPzHXINuP28", "executionDetails": { "serviceArn": "arn:aws:ecs:us-west-2:123456789012:service/my-cluster/my-service", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/9313423515462893900", "testTrafficWeights": {}, "productionTrafficWeights": {} } }
TEST_TRAFFIC_SHIFT
Tahap ini terjadi ketika Amazon ECS menggeser lalu lintas uji ke revisi layanan hijau. testTrafficWeightsPertunjukan revisi hijau menerima 100% lalu lintas uji sedangkan revisi biru menerima 0%. Lalu lintas produksi terus mengalir ke revisi biru.
{ "executionId": "779085de-ab47-42bc-84ad-41f9914a8643", "lifecycleStage": "TEST_TRAFFIC_SHIFT", "resourceArn": "arn:aws:ecs:us-west-2:123456789012:service-deployment/my-cluster/my-service/EZe5RNVLH6PPzHXINuP28", "executionDetails": { "serviceArn": "arn:aws:ecs:us-west-2:123456789012:service/my-cluster/my-service", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/9313423515462893900", "testTrafficWeights": { "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/9313423515462893900": 100, "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/1920498462936580504": 0 }, "productionTrafficWeights": {} } }
POST_TEST_TRAFFIC_SHIFT
Tahap ini terjadi setelah Amazon ECS menyelesaikan uji pergeseran lalu lintas. Revisi layanan hijau menangani 100% lalu lintas uji.
{ "executionId": "3a0345ba-b029-404b-890d-7da2a4b266aa", "lifecycleStage": "POST_TEST_TRAFFIC_SHIFT", "resourceArn": "arn:aws:ecs:us-west-2:123456789012:service-deployment/my-cluster/my-service/EZe5RNVLH6PPzHXINuP28", "executionDetails": { "serviceArn": "arn:aws:ecs:us-west-2:123456789012:service/my-cluster/my-service", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/9313423515462893900", "testTrafficWeights": {}, "productionTrafficWeights": {} } }
PRODUCTION_TRAFFIC_SHIFT
Tahap ini terjadi ketika Amazon ECS menggeser lalu lintas produksi ke revisi layanan hijau. productionTrafficWeightsPertunjukan revisi hijau menerima 100% dari lalu lintas produksi sementara revisi biru menerima 0%.
{ "executionId": "f4fcae0f-9bec-41c6-ba87-0eaa0cef8af5", "lifecycleStage": "PRODUCTION_TRAFFIC_SHIFT", "resourceArn": "arn:aws:ecs:us-west-2:123456789012:service-deployment/my-cluster/my-service/EZe5RNVLH6PPzHXINuP28", "executionDetails": { "serviceArn": "arn:aws:ecs:us-west-2:123456789012:service/my-cluster/my-service", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/9313423515462893900", "testTrafficWeights": {}, "productionTrafficWeights": { "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/9313423515462893900": 100, "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/1920498462936580504": 0 } } }
POST_PRODUCTION_TRAFFIC_SHIFT
Tahap ini terjadi setelah Amazon ECS menyelesaikan pergeseran lalu lintas produksi. Revisi layanan hijau sekarang menangani semua lalu lintas produksi.
{ "executionId": "5f40ed04-7e54-437d-b95d-98bc872fec49", "lifecycleStage": "POST_PRODUCTION_TRAFFIC_SHIFT", "resourceArn": "arn:aws:ecs:us-west-2:123456789012:service-deployment/my-cluster/my-service/EZe5RNVLH6PPzHXINuP28", "executionDetails": { "serviceArn": "arn:aws:ecs:us-west-2:123456789012:service/my-cluster/my-service", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/9313423515462893900", "testTrafficWeights": {}, "productionTrafficWeights": {} } }
Kait siklus hidup selama rollback
Tidak ada tahap ROLLBACK siklus hidup khusus. Ketika rollback terjadi, Amazon ECS memanggil kembali kait yang terdaftar di PRODUCTION_TRAFFIC_SHIFT dan TEST_TRAFFIC_SHIFT tahapan (tahap pemanggilan berulang). Selama rollback, productionTrafficWeights di payload menunjukkan lalu lintas bergeser kembali ke revisi biru.
targetServiceRevisionArnMasih ada revisi hijau ARN karena masih menjadi target penyebaran asli, meskipun lalu lintas yang bergeser menjauh darinya.
Contoh berikut menunjukkan PRODUCTION_TRAFFIC_SHIFT payload selama rollback. Perhatikan bahwa revisi biru (1920498462936580504) sekarang menerima 100% dari lalu lintas produksi, sedangkan revisi hijau (9313423515462893900) menerima 0%:
{ "executionId": "70073435-cb99-457f-b900-6ee1dcad05ec", "lifecycleStage": "PRODUCTION_TRAFFIC_SHIFT", "resourceArn": "arn:aws:ecs:us-west-2:123456789012:service-deployment/my-cluster/my-service/EZe5RNVLH6PPzHXINuP28", "executionDetails": { "serviceArn": "arn:aws:ecs:us-west-2:123456789012:service/my-cluster/my-service", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/9313423515462893900", "testTrafficWeights": {}, "productionTrafficWeights": { "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/9313423515462893900": 0, "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/1920498462936580504": 100 } } }
Untuk menentukan apakah hook Anda sedang dipanggil selama rollback, periksa. productionTrafficWeights Jika targetServiceRevisionArn (revisi hijau) memiliki bobot 0% dan revisi lainnya memiliki 100%, penerapan akan bergulir kembali.