View a markdown version of this page

适用于 Amazon ECS 服务部署的生命周期挂钩 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

适用于 Amazon ECS 服务部署的生命周期挂钩

部署开始时,它会经历生命周期的各个阶段。每个阶段都可以处于 IN_PROGRESSSUCCEEDED 等状态。您可以在特定阶段配置生命周期挂钩,以在部署开始之前运行自定义逻辑或引入决策点。Amazon ECS 支持以下两种类型的生命周期挂钩:

Lambda 钩子

Amazon ECS 在部署的特定阶段调用 Lambda 函数。您的函数中包含自定义逻辑,并且必须返回一个 hookStatusSUCCEEDEDFAILEDIN_PROGRESS 的 JSON 对象,以告知 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_PROGRESSSUCCEEDEDFAILEDTIMED_OUT
expiresAt 钩子到期的日期和时间。(示例:2026-05-06T12:06:49-07: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 可以在服务部署期间多次调用这些阶段。对于线性部署和金丝雀部署,将在每个流量转移步骤中调用以下阶段:

    • PRE_PRODUCTION_TRAFFIC_SHIFT

    • PRODUCTION_TRAFFIC_SHIFT

注意

无法在 TEST_TRAFFIC_SHIFTPRODUCTION_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