AWS Fargate在ap-southeast-1拉取镜像超时问题求助
问题描述
在ap-southeast-1区域通过Terraform部署ECS Fargate任务时,出现容器镜像拉取超时错误,同时无法拉取S3环境文件;切换到ap-southeast-2区域使用完全相同配置则正常运行。错误信息如下:
Task stopped at: 2024-04-28T08:22:13.519Z
CannotPullContainerError: pull image manifest has been retried 5 time(s): failed to resolve ref docker.io/library/nginx:latest: failed to do request: Head "https://registry-1.docker.io/v2/library/nginx/manifests/latest": dial tcp 54.227.20.253:443: i/o timeout
已确认任务部署在公有子网且已启用公网IP,排除常规无公网访问的场景。
排查步骤
检查子网路由表配置
确认公有子网的路由表中存在指向igw-xxx(Internet Gateway)的默认路由(0.0.0.0/0),且路由条目状态为Active;对比ap-southeast-2区域的子网路由表配置,确保规则完全一致。验证安全组出站规则
检查任务使用的安全组是否允许TCP 443端口的公网访问(或直接允许所有出站流量);确认安全组没有附加IP范围限制,避免Docker Hub或S3的IP不在允许列表内。检查VPC端点配置(若有)
如果VPC配置了S3网关端点,确认该端点在ap-southeast-1区域正常生效,且子网关联了对应的端点路由;若有Docker Hub相关接口端点,检查其可用性和路由配置是否正确。测试DNS解析能力
在ap-southeast-1区域同子网下启动一个带公网IP的EC2实例,执行以下命令测试解析:nslookup registry-1.docker.io nslookup s3.ap-southeast-1.amazonaws.com若解析失败,检查VPC的DNS设置:确认
enableDnsSupport和enableDnsHostnames均为true,且使用AWS默认VPC DNS服务器。排查区域特定限制
查看AWS Health Dashboard,确认ap-southeast-1区域是否有网络相关的服务中断或性能下降事件;检查账户在该区域的公网IP、NAT网关等网络资源配额是否充足。验证Terraform配置细节
核对ap-southeast-1区域的Terraform代码,确认子网ID、安全组ID、assign_public_ip参数(需设为ENABLED)等配置无错误;对比ap-southeast-2区域的代码,确保仅区域ID存在差异。手动测试任务启动
在ap-southeast-1区域的ECS控制台手动创建简单任务(如nginx:latest),使用相同的子网、安全组和公网IP配置,观察是否能正常启动,排除Terraform代码的潜在问题。
内容的提问来源于stack exchange,提问作者Rabin Poudyal

