无法通过网关VPC终端节点连接到S3存储桶
问题描述
默认VPC内的us-east-2区域EC2实例,尝试通过网关VPC终端节点连接同区域S3存储桶失败,执行aws s3 ls时出现以下错误:
[ec2-user@ip-172-31-37-114 ~]$ aws s3 ls Connect timeout on endpoint URL: "https://s3.amazonaws.com/" [ec2-user@ip-172-31-37-114 ~]$
已确认的配置项:
- VPC DNS解析功能已开启
- VPC路由表已配置通过网关终端节点访问S3的规则
- EC2安全组出站规则允许全端口/全流量
- VPC网络ACL允许所有进出流量
- 存储桶策略开放公网访问权限
- EC2实例绑定了附加
S3FullAccess策略的IAM角色 - 存储桶与EC2实例同属us-east-2区域
排查与解决步骤
修正AWS CLI区域配置
S3网关终端节点仅对区域特定端点(如s3.us-east-2.amazonaws.com)生效,而默认的s3.amazonaws.com是全局端点,会走公网路由而非终端节点。- 先检查当前CLI区域配置:
aws configure get region - 若输出不是
us-east-2,执行命令设置区域:aws configure set region us-east-2 - 也可在单次命令中指定区域参数测试:
aws s3 ls --region us-east-2
- 先检查当前CLI区域配置:
验证终端节点DNS解析有效性
在EC2实例上执行nslookup,确认区域端点解析到VPC内网IP:nslookup s3.us-east-2.amazonaws.com若返回公网IP,需再次检查:
- VPC的
DNS主机名和DNS解析是否均已开启(默认VPC通常已开启,但需确认) - 网关终端节点是否已关联到EC2实例所在子网的路由表
- VPC的
检查路由表条目优先级
确保路由表中指向S3前缀列表(pl-xxxx)的终端节点路由,优先级高于默认路由(0.0.0.0/0)。若默认路由优先级更高,流量会优先走公网而非终端节点。直接测试区域端点连通性
用curl直接访问区域端点验证网络连通性:curl -v https://s3.us-east-2.amazonaws.com若返回XML格式的权限提示(如
AccessDenied),说明网络连通正常,问题出在CLI配置;若仍超时,需重新检查终端节点的关联状态和路由规则。
补充说明
S3网关终端节点不依赖安全组配置(仅网络ACL和路由表生效),因此之前的安全组配置无问题。另外,存储桶开放公网访问不是必要条件——通过终端节点的内网访问仅依赖EC2绑定的IAM角色权限。
内容的提问来源于stack exchange,提问作者meallhour
相关产品推荐
相关产品推荐

