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

求助:GitHub Action部署Spring Java应用至AWS ECS遇阻塞问题

排查ECS部署停滞与EC2连接问题的实操步骤

一、先搞定EC2 Instance Connect无法连接的问题(这是ECS任务运行的基础)

  • 检查EC2实例安全组:入站规则必须允许EC2 Instance Connect服务的SSH流量(端口22,来源选对应区域的EC2 Instance Connect前缀列表,比如com.amazonaws.us-east-1.ec2-instance-connect);出站规则要允许访问互联网(拉取ECR镜像、连接AWS服务都需要)。
  • 核对实例IAM角色:确保实例绑定的IAM角色包含EC2InstanceConnect相关权限,比如直接附加AmazonEC2InstanceConnectFullAccess策略,或者自定义策略允许ec2-instance-connect:SendSSHPublicKey操作。
  • 确认实例网络配置:实例必须在公有子网且分配了公有IP,或者所在子网有NAT网关能访问互联网(Instance Connect需要实例能对接AWS服务端点)。
  • 控制台直接测试:在AWS控制台用EC2 Instance Connect尝试连接,看具体报错提示(比如权限不足、实例无公网IP),直接定位问题。

二、排查ECS任务一直处于Provisioning状态的问题

  • 检查ECS容器实例状态:在ECS控制台→集群→「ECS实例」页面,确认实例状态是ACTIVE,如果是DRAINING或INACTIVE,说明实例无法接收新任务,需要替换或修复实例。
  • 验证镜像拉取权限:ECS任务执行角色必须有AmazonEC2ContainerRegistryReadOnly权限;另外手动在EC2实例上测试拉取镜像:
    aws ecr get-login-password | docker login --username AWS --password-stdin <你的账号ID>.dkr.ecr.<区域>.amazonaws.com
    docker pull <你的镜像地址>:<标签>
    
    看是否能成功拉取,排除镜像不存在或权限问题。
  • 核对任务资源配置:任务定义里的CPU、内存配额不能超过EC2实例的可用资源(比如t2.micro实例最多只能分配1vCPU+1GB内存),去ECS控制台任务详情的「事件」标签,看是否有资源不足的报错。
  • 检查任务网络配置:如果用awsvpc模式,任务安全组要允许Spring应用端口的流量,以及容器到ECR、AWS服务的出站流量;用bridge模式的话,确认实例Docker网络配置正常。
  • 查看任务日志:在任务定义里配置awslogs日志驱动,指定CloudWatch日志组,然后去CloudWatch看具体报错(比如Spring应用启动失败、端口冲突、依赖缺失等)。

三、解决GitHub Action部署步骤停滞的问题

  • 检查AWS凭证权限:GitHub Secrets里的AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY必须有足够权限,比如附加AmazonECSFullAccess策略,至少要包含ecs:RegisterTaskDefinition、ecs:UpdateService、ecr:GetDownloadUrlForLayer等操作权限。
  • 查看Action步骤日志:在GitHub仓库的Actions页面,点开停滞的「Deploy Amazon ECS task definition」步骤,展开日志看具体报错(比如权限不足、无法连接AWS ECS服务)。
  • 本地手动测试部署:用相同的AWS凭证在本地执行命令:
    aws ecs update-service --cluster <集群名称> --service <服务名称> --task-definition <任务定义ARN>
    
    看是否能成功,以此判断是GitHub Action的问题还是AWS侧的问题。

四、其他可能的排查点

  • 检查ECS集群容量提供者:如果用了容量提供者,确认自动扩缩容配置正常,实例能自动创建并加入集群。
  • 测试Spring容器启动:本地手动运行容器docker run -p 8080:8080 <你的镜像名>,看应用是否能正常启动、访问,排除应用本身的问题。
  • 核对AWS区域:确保GitHub Action里指定的AWS区域和ECS集群、ECR仓库的区域完全一致,跨区域会导致网络或权限问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 14:40:06