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

AWS Fargate无法访问互联网拉取镜像失败 停留在PENDING状态排查

故障根因分析

最高概率原因:Fargate安全组未放行出方向流量

你提供的安全组配置仅配置了入方向80端口来自负载均衡安全组的访问规则,未显式配置出方向规则。terraform-aws-modules/security-group/aws v4.x版本若未显式指定任何egress规则,会默认禁用所有出方向流量,导致Fargate无法访问公网拉取镜像:

  • 拉取Docker Hub镜像需要出方向TCP 443端口访问公网镜像仓库
  • DNS解析需要出方向UDP 53端口访问VPC DNS服务器
    同子网EC2能正常访问公网,是因为EC2绑定的安全组出方向规则默认放行了所有流量,和Fargate使用的安全组规则不一致。

其他可能原因

  • VPC未开启DNS解析支持:虽然你配置了enable_dns_hostnames = true,但需确认VPC的enable_dns_support参数也为true(该参数在terraform aws vpc模块中默认值为true,可手动核对)
  • 公有子网的公网IP分配实际失效:可在ECS控制台查看运行失败的任务详情,确认是否成功分配到公网IP
  • Fargate平台版本兼容性问题:使用过老的Fargate平台版本可能存在网络适配异常,建议升级到最新稳定版平台版本
排查解决步骤
  1. 首先修改Fargate安全组配置,添加出方向放行规则,示例Terraform配置如下:
module "fg_sg" {
  source  = "terraform-aws-modules/security-group/aws"
  version = "~> 4.0"
  name    = "${var.namespace}-sg"
  vpc_id  = module.vpc.vpc_id
  ingress_with_source_security_group_id = [
    {
      rule                     = "http-80-tcp"
      source_security_group_id = module.lb_sg.security_group_id
    }
  ]
  // 新增出方向规则,允许所有出站流量,生产环境可按需收敛到指定端口和目标地址
  egress = [
    {
      from_port   = 0
      to_port     = 0
      protocol    = "-1"
      cidr_blocks = ["0.0.0.0/0"]
    }
  ]
}
  1. 应用配置后重新部署Fargate服务,验证是否可以正常拉取镜像
  2. 若问题仍存在,登录AWS控制台查看VPC属性,确认DNS解析和DNS主机名两项均为启用状态
  3. 查看失败的Fargate任务详情,确认公网IP已正常分配,且子网路由表确实绑定了IGW的默认路由

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:06:03