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

解决AWS CodeDeploy报错:EC2实例未进入目标组预期闲置状态

解决AWS CodeDeploy结合ALB时Block Traffic钩子卡住的问题

核心排查与解决步骤

  • 补全CodeDeploy服务角色的ALB权限:确保CodeDeploy服务角色拥有elasticloadbalancing:DeregisterTargets和elasticloadbalancing:DescribeTargetHealth权限。未使用ALB时无需这些权限,启用ALB后必须配置,否则CodeDeploy无法操作目标组实例状态。
  • 优化目标组注销与健康检查逻辑:
    • 若应用存在长连接(如WebSocket、持久化数据库连接),60秒的注销延迟可能不足以完成连接清理,可临时调至120秒,同时在应用中添加优雅关闭逻辑(收到SIGTERM信号后主动断开所有长连接)。
    • 确认健康检查路径能准确反映实例状态:停止应用后,健康检查需返回5xx或无响应,确保目标组快速将实例标记为不健康。若健康检查仍返回200,实例会持续接收流量,无法进入unused状态。
  • 检查代理日志定位细节:登录EC2实例查看/var/log/aws/codedeploy-agent/codedeploy-agent.log,搜索BlockTraffic关键词,排查是否存在API调用失败、目标组状态查询超时等具体报错。
  • 验证目标组会话粘性配置:若目标组开启了会话粘性,需确保粘性超时时间小于注销延迟,避免新流量持续路由至待注销实例。

临时应急方案

  • 跳过Block Traffic钩子:在CodeDeploy部署组的自定义部署配置中,将Block Traffic环节设为SKIP。注意:此操作会导致部署期间实例仍接收流量,可能出现新旧版本混合访问,仅适合非生产环境或低流量时段紧急部署。
  • 手动预注销实例:部署前手动从目标组注销待更新的实例,等待实例状态变为unused后再启动CodeDeploy部署,绕过钩子环节的自动等待逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:30:00