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

AWS CodeDeploy健康检查约束错误:EC2与GitHub部署问题排查

排查CodeDeploy无法识别EC2实例健康状态的步骤

我之前也碰到过一模一样的问题!折腾了大半天终于捋出几个最容易踩的坑,你可以按这个顺序逐一排查:

  • 检查EC2实例与部署组的标签匹配
    CodeDeploy完全依赖标签来定位目标实例,哪怕是大小写不一致都会导致匹配失败。比如部署组设置的筛选标签是App=MyService,但EC2实例的标签是app=myservice,这就会让CodeDeploy找不到你的实例。建议直接复制部署组里的标签键值,去EC2控制台的实例标签页核对,确保完全一致。

  • 查看CodeDeploy Agent的详细日志
    别只确认Agent启动了,日志里藏着最直接的线索。登录EC2实例后,Linux系统可以查看日志文件:

    tail -f /var/log/aws/codedeploy-agent/codedeploy-agent.log
    

    重点搜索health、registration failed、connection refused这类关键词。我当时就是在日志里发现Agent无法和CodeDeploy服务建立HTTPS连接,后来才知道是EC2安全组没开放出站443端口到CodeDeploy的服务端点。

  • 核实IAM角色的权限细节
    哪怕你觉得IAM配置没问题,也得再仔细核对两个关键角色:

    • EC2实例的IAM角色:必须包含codedeploy:RegisterInstance、codedeploy:UpdateInstanceInformation权限,同时如果你的修订存储在S3或GitHub,还要有对应的数据读取权限;
    • CodeDeploy服务角色:需要ec2:DescribeInstances、ec2:DescribeTags权限,否则无法获取EC2实例的状态信息。
  • 检查健康检查配置
    如果你的部署组用了自定义健康检查(比如HTTP/HTTPS检查),一定要确认实例上的目标服务已经正常启动,健康检查路径能返回200状态码。比如你配置了/health作为检查路径,但应用还没完成部署或者这个路径未正确配置,就会被判定为不健康。如果用的是默认的EC2状态检查,去EC2控制台确认实例的系统状态和实例状态都是“正常”。

  • 排查部署组的特殊设置
    检查部署组的以下配置:

    • 有没有误将目标实例标记为“排除部署”;
    • 部署配置里的最小健康实例百分比是否合理——比如单个实例的话,别设置成100%(虽然CodeDeploy对单实例有特殊处理,但偶尔也会出现判定异常);
    • 是否开启了“在终止旧实例前等待新实例健康”这类选项,导致单实例部署时卡住。
  • 尝试重启Agent并重新触发部署
    有时候Agent会出现注册异常,重启一下可能解决问题:

    sudo service codedeploy-agent restart
    

    重启后等待几分钟,再去CodeDeploy控制台的“实例”页面看看能不能看到你的EC2实例,如果还是看不到,那大概率是前面的标签、IAM或网络问题导致的注册失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:24:55