EC2上的ECS任务调用AWS服务遇连接超时,需满足哪些条件?
EC2上ECS任务调用AWS服务超时的排查要点
以下是EC2+ECS环境下,容器调用AWS服务需要满足的关键条件及排查方向:
网络安全组与NACL配置
虽然容器能ping通公网,但AWS服务API依赖HTTPS(443端口),需确认:- EC2实例的安全组出站规则允许443端口访问(可先放开
0.0.0.0/0的HTTPS出站测试); - VPC的网络访问控制列表(NACL)出站规则允许443端口流量,入站规则允许对应临时端口的响应流量(通常AWS服务响应会用1024-65535范围的端口)。
- EC2实例的安全组出站规则允许443端口访问(可先放开
容器网络模式与iptables规则
- 若使用
bridge网络模式:检查EC2实例的iptables规则是否阻断了容器的HTTPS出站流量,可通过iptables -L -n查看是否存在拒绝443端口的规则,同时确认ECS代理是否正确配置了端口转发; - 若使用
host网络模式:确保容器的默认路由与EC2实例一致,且实例的网络配置无异常。
- 若使用
AWS服务端点访问配置
- 若使用VPC端点:需确认VPC端点的安全组允许EC2实例/容器的IP访问对应服务端点,且VPC路由表已配置指向该端点的路由;
- 若使用公网端点:确认EC2实例拥有公网IP(公有子网下需开启自动分配公网IP),且能正常解析AWS服务域名(如在容器内执行
nslookup s3.amazonaws.com测试); - 检查容器内的AWS区域配置是否正确,确保Boto3调用的是对应区域的服务端点(可通过环境变量
AWS_REGION指定,或在Boto3客户端初始化时明确指定区域)。
ECS代理与容器DNS配置
- 确认EC2实例上的
ecs-agent运行正常,可通过systemctl status ecs查看状态,或查看日志/var/log/ecs/ecs-agent.log排查网络相关错误; - 检查容器的DNS解析是否正常,若无法解析AWS服务域名,需确认VPC的DNS服务器配置(优先使用AWS提供的DNS服务器
VPC_CIDR+2),或自定义DNS服务器是否支持解析AWS域名。
- 确认EC2实例上的
任务角色凭证传递验证
虽然权限已配置为AdministratorAccess,但需确认任务角色凭证是否正确注入容器:在容器内执行curl http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI,若能获取到临时凭证则说明角色传递正常,排除凭证获取导致的间接问题。
内容的提问来源于stack exchange,提问作者JK0
相关产品推荐
相关产品推荐

