本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
暫停 Amazon ECS 服務部署的掛鉤
暫停掛鉤會在特定的生命週期階段暫停 Amazon ECS 服務部署,並等待您呼叫 ,ContinueServiceDeployment再繼續部署。當您需要手動核准或外部驗證,才能繼續部署時,請使用暫停掛鉤。
暫停勾點的運作方式
當部署達到已設定暫停掛鉤的生命週期階段時,會發生下列情況:
-
Amazon ECS
hookId會為暫停掛鉤產生唯一的 。 -
Amazon ECS 會發出具有 detail-type
ECS Hook State Change和事件名稱 的 EventBridge 事件HOOK_AWAITING_ACTION。 -
部署會保持暫停,直到您
ContinueServiceDeployment使用 呼叫hookId和CONTINUE或 的動作ROLLBACK,或直到達到設定的逾時為止。
您可以呼叫 hookId來擷取 DescribeServiceDeployments。回應包含具有勾點狀態的lifecycleHookDetails陣列:
{ "serviceDeployments": [ { "lifecycleHookDetails": [ { "hookId": "ecs-pause-e7tK9G_WRJqNF_EOMjztDXfKenlJuEUVjsNStf4WLKw", "targetType": "PAUSE", "status": "AWAITING_ACTION", "expiresAt": "2024-01-15T12:00:00Z", "timeoutAction": "ROLLBACK" } ] } ] }
設定暫停掛鉤
下列範例顯示服務定義中的暫停掛鉤組態,會在測試流量轉移完成後暫停部署:
{ "deploymentConfiguration": { "strategy": "BLUE_GREEN", "lifecycleHooks": [ { "targetType": "PAUSE", "lifecycleStages": [ "POST_TEST_TRAFFIC_SHIFT" ], "timeoutConfiguration": { "timeoutInMinutes": 10, "action": "ROLLBACK" } } ] } }
組態欄位
| 欄位 | 說明 | 有效值 | 必要 |
|---|---|---|---|
targetType |
掛接的類型。必須PAUSE用於暫停勾點。 |
PAUSE |
是 |
lifecycleStages |
部署暫停的生命週期階段。 | RECONCILE_SERVICE, PRE_SCALE_UP,
POST_SCALE_UP,
POST_TEST_TRAFFIC_SHIFT,
PRE_PRODUCTION_TRAFFIC_SHIFT,
POST_PRODUCTION_TRAFFIC_SHIFT |
是 |
timeoutConfiguration.timeoutInMinutes |
採取逾時動作之前要等待的時間。預設:1,440 分鐘 (24 小時)。 | 1 - 20,160 (14 天) | 否 |
timeoutConfiguration.action |
如果逾時過期,要採取的動作。 | ROLLBACK (預設)、CONTINUE |
否 |
Constraints
-
每個服務最多可設定 10 個暫停掛鉤和 10 個 Lambda 掛鉤。
-
暫停掛鉤不使用
hookTargetArn或roleArn。這些欄位僅適用於 Lambda 勾點。 -
暫停掛鉤無法在
TEST_TRAFFIC_SHIFT或PRODUCTION_TRAFFIC_SHIFT階段設定。
繼續暫停的部署
部署暫停時 (暫停勾點狀態為 AWAITING_ACTION),請ContinueServiceDeployment呼叫 hookId和您要採取的動作。
若要繼續部署:
aws ecs continue-service-deployment \ --hook-id ecs-pause-e7tK9G_WRJqNF_EOMjztDXfKenlJuEUVjsNStf4WLKw \ --action CONTINUE
若要復原部署:
aws ecs continue-service-deployment \ --hook-id ecs-pause-e7tK9G_WRJqNF_EOMjztDXfKenlJuEUVjsNStf4WLKw \ --action ROLLBACK
如需詳細資訊,請參閱繼續服務部署。
同一階段的多個勾點
在相同的生命週期階段設定多個掛鉤時,部署會保持暫停狀態,直到該階段的所有掛鉤都繼續。如果任何勾點觸發轉返,則無論該階段的其他勾點狀態為何,整個部署都會轉返。
此行為適用於在相同生命週期階段設定 Lambda 掛鉤和暫停掛鉤的情況。只有在該階段的所有勾點都成功完成或繼續時,部署才會繼續。
在相同生命週期階段設定的所有掛鉤會平行執行。
逾時行為
如果您在逾時到期ContinueServiceDeployment之前未呼叫 ,Amazon ECS 會採取設定的逾時動作:
-
ROLLBACK(預設) - Amazon ECS 會將部署復原至先前的服務修訂版。 -
CONTINUE- Amazon ECS 會繼續部署至下一個生命週期階段。
檢查DescribeServiceDeployments回應lifecycleHookDetails陣列中的 expiresAt 欄位,以查看逾時何時過期。
使用線性和 Canary 部署暫停掛鉤
對於線性和 Canary 部署,在每個流量轉移步驟PRE_PRODUCTION_TRAFFIC_SHIFT調用在 設定的暫停掛鉤。每個叫用都會產生唯一的 hookId,而且您必須ContinueServiceDeployment針對每個叫用呼叫 。
例如,具有 5 個流量轉移步驟和暫停掛鉤的線性部署會PRE_PRODUCTION_TRAFFIC_SHIFT暫停 5 次 - 在每個步驟之前一次。每次暫停都需要個別呼叫 ContinueServiceDeployment 與對應的 hookId。
EventBridge 事件
Amazon ECS 會隨著暫停掛鉤的生命週期進行ECS Hook State Change,以詳細資訊類型發出 EventBridge 事件。下表說明事件名稱:
| 事件名稱 | 說明 |
|---|---|
HOOK_AWAITING_ACTION |
勾點正在等待您呼叫 ContinueServiceDeployment。 |
HOOK_SUCCEEDED |
勾點已成功完成 (您使用 ContinueServiceDeployment 呼叫 CONTINUE)。 |
HOOK_FAILED |
勾點失敗 (您使用 呼叫 ContinueServiceDeployment ROLLBACK)。 |
HOOK_TIMED_OUT |
在呼叫 之前ContinueServiceDeployment,掛接逾時。 |
下列範例顯示暫停掛鉤等待動作時發出的 EventBridge 事件:
{ "version": "0", "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "detail-type": "ECS Hook State Change", "source": "aws.ecs", "account": "123456789012", "time": "2024-01-15T10:00:00Z", "region": "us-west-2", "detail": { "eventType": "INFO", "eventName": "HOOK_AWAITING_ACTION", "hookId": "ecs-pause-e7tK9G_WRJqNF_EOMjztDXfKenlJuEUVjsNStf4WLKw", "hookType": "PAUSE", "expiresAt": "2024-01-15T12:00:00Z", "lifecycleStage": "POST_TEST_TRAFFIC_SHIFT", "clusterArn": "arn:aws:ecs:us-west-2:123456789012:cluster/my-cluster", "serviceArn": "arn:aws:ecs:us-west-2:123456789012:service/my-cluster/my-service", "serviceDeploymentArn": "arn:aws:ecs:us-west-2:123456789012:service-deployment/my-cluster/my-service/EZe5RNVLH6PPzHXINuP28", "updatedAt": "2024-01-15T10:00:00Z" } }