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

Terraform部署AWS ECS Fargate遇504/503错误,求排查方法

ECS Fargate部署Express应用失败的排查方向

1. 容器镜像与启动验证

  • 确认ECR镜像状态:检查prod-ecr-repo仓库中是否存在正确的镜像,确保镜像已成功推送,且任务定义中使用的镜像标签(默认latest)与推送的一致。
  • 验证任务执行角色权限:虽然已附加AmazonECSTaskExecutionRolePolicy,但确认该策略包含ecr:GetDownloadUrlForLayer、ecr:BatchGetImage等拉取镜像的必要权限,避免因权限不足导致镜像拉取失败。
  • 查看容器启动日志:在任务定义中添加logConfiguration(比如awslogs驱动),通过CloudWatch Logs查看容器启动时的具体报错,比如依赖缺失、index.js路径错误、应用未正确监听端口等。
  • 确认应用监听地址:确保Express应用监听在0.0.0.0:5000,而非127.0.0.1,否则容器外部无法访问服务。

2. 负载均衡与目标组配置修正

  • 修正目标组端口配置:当前目标组监听80端口,但容器实际暴露5000端口,端口不匹配会直接导致健康检查失败。需将目标组的port修改为5000,确保与容器端口一致。
  • 查看目标组健康状态:在EC2控制台目标组页面,检查Fargate任务IP的健康状态,查看失败原因(如连接拒绝、超时),这能直接反映服务是否正常响应。
  • 确认负载均衡转发规则:当前Listener将80端口流量转发到目标组的80端口,需确保目标组端口修正后,转发路径能正确到达容器的5000端口。

3. 网络与安全组排查

  • 检查安全组流量规则:确认service_security_group允许来自负载均衡安全组的5000端口流量,同时负载均衡安全组的出站规则允许访问该端口(当前负载均衡egress为0.0.0.0/0,基本没问题,但需确认)。
  • 验证VPC子网配置:确认默认VPC的子网开启了DNS解析和DNS主机名,Fargate任务需要这些配置来正常拉取ECR镜像。
  • 检查任务网络连通性:虽然设置了assign_public_ip = true,但确认任务能正常访问外部网络(如拉取镜像时的ECR服务)。

4. ECS任务与服务事件分析

  • 查看服务事件日志:在ECS控制台服务的“事件”标签下,查看具体的部署失败事件详情,通常会包含资源不足、任务定义错误、角色权限问题等明确提示。
  • 验证任务定义参数:确认任务定义中的memory(512)和cpu(256)符合Fargate的规格要求,容器配置的内存未超过任务总内存限制。
  • 调整服务部署策略:因健康检查失败导致服务不断重启任务,需先解决核心问题(如端口不匹配),才能终止失败循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 10:54:59