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

CodeDeploy在BeforeInstall阶段陷入挂起状态,部署最终失败

排查CodeDeploy BeforeInstall阶段挂起及代理无法接收事件问题
  • 查看CodeDeploy代理日志细节
    即便代理状态显示运行中,日志里大概率藏着具体故障线索。根据实例系统执行对应命令查看日志:

    • 亚马逊Linux/RHEL:tail -f /var/log/aws/codedeploy-agent/codedeploy-agent.log
    • Ubuntu:tail -f /var/log/aws/codedeploy-agent/codedeploy-agent.log
    • Windows:检查C:\ProgramData\Amazon\CodeDeploy\log\codedeploy-agent.log
      重点关注BeforeInstall阶段前后的日志条目,排查是否有连接超时、脚本执行权限不足、依赖包缺失等报错。
  • 验证实例与CodeDeploy服务的网络连通性
    代理运行不代表能正常和CodeDeploy服务器通信。在实例上执行以下命令测试(替换<你的区域>为实际部署区域,比如us-east-1):

    telnet codedeploy.<你的区域>.amazonaws.com 443
    

    如果连接失败,检查实例安全组是否允许出站443端口访问CodeDeploy服务,同时确认子网NACL没有限制对应流量。

  • 排查BeforeInstall钩子脚本
    阶段挂起通常是脚本执行卡住导致:

    • 检查appspec.yml中BeforeInstall阶段的脚本,是否存在需要交互式输入的命令(比如apt-get install未加-y参数、pip安装时需要手动确认)
    • 确认脚本没有无限循环、等待用户输入的逻辑
    • 给脚本添加日志输出,在关键步骤后写入本地日志文件,方便定位卡顿环节
    • 手动在实例上运行该脚本,验证是否能正常执行完成
  • 再次确认实例IAM角色权限
    检查实例关联的IAM角色是否包含AmazonEC2RoleforAWSCodeDeploy托管权限,或自定义权限中包含codedeploy:PutLifecycleEventHookExecutionStatus等关键操作权限——代理需要该权限上报生命周期事件状态。

  • 更新CodeDeploy代理版本
    旧版本代理可能与新版CodeDeploy服务存在兼容性问题,执行对应命令更新:

    • 亚马逊Linux:sudo yum update codedeploy-agent
    • Ubuntu:sudo apt-get update && sudo apt-get install codedeploy-agent
    • Windows:重新下载安装官方最新版代理
  • 校验实例时间同步状态
    实例本地时间与AWS服务器时间偏差过大,会导致SSL证书验证失败,阻断代理与服务的通信。执行date命令查看时间,确保与UTC时间偏差在5分钟内,可配置NTP服务自动同步时间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 18:05:24