You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ECS蓝绿部署时CodeDeploy卡在Before Install阶段,Lambda执行正常求解决

解决CodeDeploy蓝绿部署卡在Before Install阶段的问题

这种情况我之前排查过好几次,明明Lambda日志显示执行完了,但CodeDeploy就是卡在钩子阶段不动,核心原因大多是Lambda没有正确把执行状态反馈给CodeDeploy,或者配置细节有遗漏。给你几个具体的排查和解决方向:

1. 确保Lambda返回符合CodeDeploy要求的状态(关键!)

CodeDeploy不会自动感知Lambda的执行结束,必须由Lambda主动调用CodeDeploy的API来汇报执行状态。哪怕你的Lambda逻辑只是一个简单的return,也得加上状态汇报的代码:

比如用Python的boto3实现:

import boto3
import os

codedeploy_client = boto3.client('codedeploy')

def lambda_handler(event, context):
    # 你的核心逻辑(这里可以保留你的return语句)
    
    # 必须汇报状态给CodeDeploy
    try:
        codedeploy_client.put_lifecycle_event_hook_execution_status(
            deploymentId=event['DeploymentId'],
            lifecycleEventHookExecutionId=event['LifecycleEventHookExecutionId'],
            status='Succeeded'  # 执行成功就传Succeeded,失败传Failed
        )
        return {'status': 'Succeeded'}
    except Exception as e:
        # 出错时也要汇报失败状态,避免CodeDeploy一直等待
        codedeploy_client.put_lifecycle_event_hook_execution_status(
            deploymentId=event['DeploymentId'],
            lifecycleEventHookExecutionId=event['LifecycleEventHookExecutionId'],
            status='Failed'
        )
        raise e

注意:CodeDeploy会自动把DeploymentId和LifecycleEventHookExecutionId这两个参数传入Lambda,你必须用这两个参数来调用API,否则CodeDeploy无法关联到当前的部署任务。

2. 检查IAM权限是否完整

  • CodeDeploy服务角色:需要有lambda:InvokeFunction权限,确保它能触发你的Lambda函数。
  • Lambda执行角色:需要有codedeploy:PutLifecycleEventHookExecutionStatus权限,允许Lambda调用CodeDeploy的状态汇报API。
    可以在IAM控制台里检查这两个角色的权限策略,确认没有遗漏上述权限。

3. 验证钩子配置细节

  • 确认CodeDeploy部署组的Before Install钩子,是否正确关联了你的Lambda函数(ARN或函数名有没有写错)。
  • 检查钩子的超时设置:建议把钩子超时时间设为比Lambda的超时时间长1-2分钟,避免因为网络延迟导致CodeDeploy提前判定超时。

4. 查看CodeDeploy的部署日志

除了Lambda的CloudWatch日志,一定要去CodeDeploy控制台查看当前部署的详细事件日志:

  1. 进入对应的部署任务详情页
  2. 找到Before Install阶段的事件条目
  3. 点击「查看详情」,里面会显示钩子执行的具体状态,比如「等待Lambda执行状态超时」「权限不足无法接收状态」等,这些信息能帮你快速定位问题。

内容的提问来源于stack exchange,提问作者Hide

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:11:30