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

AWS CodeDeploy在BeforeBlockTraffic阶段超时失败,更新策略后仍未解决

问题排查方案

1. 优先检查CodeDeploy Agent状态与日志

  • 登录EC2实例,执行以下命令确认Agent是否运行:
    sudo service codedeploy-agent status
    
    若未运行,启动Agent并设置开机自启:
    sudo service codedeploy-agent start
    sudo systemctl enable codedeploy-agent # 适用于systemd系统
    
  • 查看Agent日志定位具体问题,日志路径通常为:
    /var/log/aws/codedeploy-agent/codedeploy-agent.log
    
    重点搜索连接失败、权限拒绝相关的日志内容。

2. 验证EC2实例权限与网络配置

  • 确认EC2实例关联的IAM角色已附加AmazonEC2RoleforAWSCodeDeploy策略(或包含以下核心权限的自定义策略):
    • codedeploy:RegisterInstance
    • codedeploy:UpdateInstanceInformation
    • s3:GetObject(若部署包存放在S3)
      注意:直接给实例"全权限"不等于角色配置正确,需确保IAM角色已正确附加到实例。
  • 检查VPC网络连通性:
    • 若实例在私有子网,需配置VPC端点(com.amazonaws.<你的区域>.codedeploy)或NAT网关,确保实例能出站访问AWS CodeDeploy服务。
    • 可在EC2实例上执行telnet codedeploy.<区域>.amazonaws.com 443测试连通性。

3. 检查appspec.yml配置

针对Angular静态应用,appspec.yml需满足以下基本要求:

  • 结构完整,示例参考:
    version: 0.0
    os: linux
    files:
      - source: /dist/your-angular-app # 需与CodeBuild打包的dist目录名称一致
        destination: /var/www/html # 目标部署目录(如Nginx根目录)
    hooks:
      BeforeInstall:
        - location: scripts/stop_nginx.sh
          timeout: 300
          runas: root
      AfterInstall:
        - location: scripts/start_nginx.sh
          timeout: 300
          runas: root
    
  • 确认source路径与CodeBuild的artifacts配置匹配,buildspec.yml中需确保打包了dist目录:
    artifacts:
      files:
        - 'dist/**/*'
    
  • 检查hooks中的脚本路径正确,且脚本具备执行权限(可在buildspec的post_build阶段添加chmod +x scripts/*.sh)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 05:45:39