View a markdown version of this page

Amazon ECS 服務部署的 lifecycle hook - Amazon Elastic Container Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon ECS 服務部署的 lifecycle hook

部署開始時,會進入生命週期階段。每個階段都可以處於 狀態,例如 IN_PROGRESSSUCCEEDED。您可以在特定階段設定生命週期關聯,以執行自訂邏輯或在部署進行之前引入決策點。Amazon ECS 支援兩種類型的生命週期掛鉤:

Lambda 掛鉤

Amazon ECS 會在部署的特定階段叫用 Lambda 函數。您的函數包含您的自訂邏輯,且必須傳回包含 SUCCEEDEDFAILED或 之 hookStatus的 JSON 物件IN_PROGRESS,以告知 Amazon ECS 如何繼續。您可以使用這些勾點來執行驗證測試、強制執行控管政策,或在部署繼續進行之前實作自訂核准步驟。如需詳細資訊,請參閱Amazon ECS 服務部署的 Lambda 掛鉤

暫停掛鉤

Amazon ECS 會在設定的生命週期階段暫停部署,並等待您呼叫 ContinueServiceDeployment API 以繼續或轉返。暫停時,您可以在外部執行自己的工作流程,例如手動核准、與現有工具的整合測試、操作準備度檢查或 CI/CD 管道步驟。如需詳細資訊,請參閱暫停 Amazon ECS 服務部署的掛鉤

您可以在相同的生命週期階段設定 Lambda 掛鉤和暫停掛鉤。在部署繼續進行下一個階段之前,兩個掛鉤都必須完成。

生命週期掛鉤詳細資訊

當掛鉤在部署期間處於作用中狀態時,您可以呼叫 來檢視其狀態DescribeServiceDeployments。回應包含陣列lifecycleHookDetails,其中包含每個作用中勾點的下列欄位:

欄位 說明
hookId 此掛鉤執行的唯一識別符。呼叫 ContinueServiceDeployment 進行暫停掛鉤時,請使用此值。
targetType 勾點類型: AWS_LAMBDAPAUSE
targetArn 掛鉤目標的 ARN。對於 Lambda 勾點,這是 Lambda 函數 ARN。對於暫停掛鉤,未設定此欄位。
status 勾點的目前狀態:AWAITING_ACTIONIN_PROGRESSFAILEDSUCCEEDEDTIMED_OUT
expiresAt 勾點過期的日期和時間。(範例:2026-05-06T12:06:49 年 7:00)
timeoutAction 當勾點逾時時,Amazon ECS 會採取的動作: ROLLBACKCONTINUE

生命週期階段類別

生命週期階段分為兩個類別:

  1. 單一調用階段 - Amazon ECS 在服務部署期間只會調用這些階段一次:

    • RECONCILE_SERVICE

    • PRE_SCALE_UP

    • POST_SCALE_UP

    • TEST_TRAFFIC_SHIFT

    • POST_TEST_TRAFFIC_SHIFT

    • POST_PRODUCTION_TRAFFIC_SHIFT

  2. 重複叫用階段 - Amazon ECS 可以在服務部署期間多次叫用這些階段。對於線性和 Canary 部署,每個流量轉移步驟都會叫用這些階段:

    • PRE_PRODUCTION_TRAFFIC_SHIFT

    • PRODUCTION_TRAFFIC_SHIFT

注意

無法在 TEST_TRAFFIC_SHIFT或 設定暫停掛鉤,PRODUCTION_TRAFFIC_SHIFT因為在復原期間也會調用這些階段。在轉返期間暫停需要額外的ContinueServiceDeployment呼叫才能完成轉返。

依勾點類型支援的階段

生命週期階段 Lambda 掛鉤 暫停掛鉤
RECONCILE_SERVICE
PRE_SCALE_UP
POST_SCALE_UP
TEST_TRAFFIC_SHIFT
POST_TEST_TRAFFIC_SHIFT
PRE_PRODUCTION_TRAFFIC_SHIFT
PRODUCTION_TRAFFIC_SHIFT
POST_PRODUCTION_TRAFFIC_SHIFT