AWS us-east-2区域ECR拉取镜像超时异常求助
解决EC2实例拉取us-east-2区域ECR镜像时
aws ecr get-login-password超时问题 问题概述
此前正常运行数月的ECR镜像拉取操作,当前在EC2实例上执行aws ecr get-login-password --region us-east-2时出现超时,已排除非交互式登录问题,且存在以下特征:
- 本地使用相同AWS凭证操作us-east-2区域ECR可正常推拉镜像,EC2实例执行失败
- EC2实例切换至us-east-1或us-west-1区域时,可正常获取登录密码
- EC2实例上
aws sts-caller-identity执行成功,凭证有效 - 开启调试后显示连接
api.ecr.us-east-2.amazonaws.com:443超时 - EC2使用AWS CLI 2.7.7版本,本地Mac使用2.5.6版本,账号拥有管理员权限,EC2实例无已知变更
排查方向与解决方案
1. 检查EC2实例的网络访问限制
- 安全组出站规则:确认是否允许HTTPS(443端口)访问us-east-2区域的ECR服务端点。可临时添加允许所有HTTPS出站的规则做测试,若恢复正常,再调整规则限定到ECR对应区域的IP段(可通过AWS官方IP地址范围文档获取)。
- 网络ACL:检查出站规则是否允许443端口流量,入站规则是否允许响应流量通过。
- VPC终端节点:若使用ECR的Interface终端节点,确认us-east-2区域已创建对应终端节点,且终端节点的安全组允许EC2实例访问;若未配置终端节点,排查VPC路由表是否变更导致实例无法通过公网访问ECR。
2. 验证DNS解析有效性
在EC2实例上执行nslookup api.ecr.us-east-2.amazonaws.com,查看是否能解析到正确IP:
- 若解析失败,检查EC2实例的DNS配置,确认是否使用VPC默认DNS服务器(VPC CIDR+2),或自定义DNS服务器是否能正常解析AWS服务域名。
- 尝试清空DNS缓存:Ubuntu执行
sudo systemd-resolve --flush-caches,Amazon Linux执行sudo systemctl restart nscd,之后重新测试解析。
3. 测试网络端口连通性
- 执行
nc -zv api.ecr.us-east-2.amazonaws.com 443或telnet api.ecr.us-east-2.amazonaws.com 443,验证是否能建立443端口连接。 - 若无法连通,使用
traceroute api.ecr.us-east-2.amazonaws.com追踪数据包路径,定位丢失节点,判断是VPC内部路由问题还是公网链路故障。
4. 排查AWS CLI版本兼容性
尝试在EC2实例上降级CLI至本地可用的2.5.6版本,排除新版本兼容性问题:
# 卸载当前CLI sudo rm -rf /usr/local/aws-cli sudo rm /usr/local/bin/aws # 下载并安装2.5.6版本 curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.5.6.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install # 验证版本 aws --version
5. 检查ECR资源访问策略
登录ECR控制台查看us-east-2区域对应仓库的资源策略,确认是否存在限制EC2实例IP或IAM角色的规则,避免管理员权限被资源策略覆盖。
6. 验证IAM角色权限(若使用实例角色)
若EC2实例使用IAM角色而非本地凭证,检查:
- 角色的信任策略是否正常,确保EC2服务能承担该角色。
- 角色是否包含
ecr:GetAuthorizationToken权限,同时排查是否有SCP(服务控制策略)或权限边界限制了该权限。
内容的提问来源于stack exchange,提问作者chipzx
相关产品推荐
相关产品推荐

