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

无法在私有子网EC2执行aws sts get-caller-identity的排查求助

问题根因及解决方法

核心根因

  1. STS接口端点私有DNS未启用:创建STS接口端点时若未勾选「Enable private DNS name」,VPC内的EC2实例仍会将sts.us-east-1.amazonaws.com解析为公网IP,而非接口端点的私有ENI地址,导致请求走公网路由超时。
  2. 私有子网路由表缺失STS端点路由:接口端点创建后,AWS会自动向关联子网的路由表添加前缀列表路由(目标com.amazonaws.us-east-1.sts),若路由表未关联端点或路由被误删,请求无法到达端点ENI。
  3. EC2实例DNS配置异常:若实例手动配置了外部DNS服务器,会绕过VPC内置DNS,无法解析STS端点的私有IP。

解决步骤

1. 确认STS接口端点私有DNS已启用

  • 登录AWS控制台,进入VPC > 端点,找到你的STS接口端点。
  • 检查「Details」标签下的「Private DNS name」状态为「Enabled」。若未启用,编辑端点并勾选「Enable private DNS name」保存。

2. 验证私有子网路由表配置

  • 进入VPC > 路由表,找到私有子网关联的路由表。
  • 确认路由表中存在一条路由:
    • 目标:com.amazonaws.us-east-1.sts(前缀列表)
    • 目标类型:「VPC端点」
    • 下一跳:你的STS接口端点ID
  • 若缺失该路由,手动添加:选择路由表 > 「Routes」标签 > 「Edit routes」> 「Add route」,目标输入前缀列表com.amazonaws.us-east-1.sts,下一跳选择对应的STS端点。

3. 检查EC2实例DNS设置

  • 登录私有子网内的EC2实例,查看DNS配置文件:
    cat /etc/resolv.conf
    
  • 确认nameserver为VPC默认DNS地址(通常是169.254.169.253,或VPC CIDR块的第二个IP,例如VPC为10.0.0.0/16则是10.0.0.2)。
  • 若配置了外部DNS,修改/etc/resolv.conf替换为VPC默认DNS(部分系统需通过DHCP选项集配置永久生效)。

4. 验证解析与连通性

  • 在EC2实例上执行解析测试,确认返回STS端点的私有IP(属于VPC CIDR范围):
    nslookup sts.us-east-1.amazonaws.com
    
  • 重新执行STS命令测试:
    aws sts get-caller-identity --profile Allow_Instance_Profile_EC2_to_Access_S3
    

注意:AWS VPC接口端点的ENI不响应ICMP请求,因此ping sts.us-east-1.amazonaws.com超时是正常现象,无需以此判断连通性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:22:43