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

从AWS Fargate连接AWS Elasticsearch出现java.net.UnknownHostException报错如何解决

问题根因说明

java.net.UnknownHostException本质是域名解析失败,不是网络连通性问题,你需要按以下顺序排查遗漏配置:

1. 检查VPC基础DNS配置

  • 进入AWS VPC控制台,选中你的ES和Fargate所在的VPC,确认两个配置项均为启用状态:
    • 启用DNS解析(enableDnsSupport)
    • 启用DNS主机名(enableDnsHostnames)
  • 上述两个配置任意一个关闭,都无法正常解析AWS托管服务的内部域名。

2. 检查Fargate侧DNS访问权限

  • 确认Fargate任务使用的安全组出站规则允许UDP/53、TCP/53端口的访问(DNS查询默认走UDP 53,大查询会切TCP 53),如果你的安全组出站未默认全开,需要单独加这条规则。
  • 确认Fargate所在子网关联的路由表,没有拦截到VPC默认DNS地址(VPC网段第2个IP,比如VPC CIDR为10.0.0.0/16时,DNS地址为10.0.0.2)的路由。

3. 检查Spring Boot配置问题

这是非常高频的错误点:

  • 部分版本的Spring Data Elasticsearch客户端,会把uris配置里的https://协议头也算入主机名进行解析,直接导致解析失败。你可以尝试修改配置为:
spring:
  elasticsearch:
    rest:
      connection-timeout: 5000
      read-timeout: 5000
      uris: vpc-website-qa-xxxxxxxxxxxx.ap-south-1.es.amazonaws.com:443
      ssl: true
  • AWS VPC类型的Elasticsearch Service默认HTTPS访问端口为443,9200为HTTP端口,如果你开启了ES域的强制HTTPS配置,9200端口默认不可用,不要配置9200端口。

4. 检查自定义DNS配置

如果你在VPC中配置了自定义DNS服务器(比如自建BIND、AD DNS),需要确认配置了.amazonaws.com后缀的域名请求转发到VPC默认DNS地址,否则无法解析AWS托管服务的内部域名。


快速验证方法

你可以在同VPC、同子网、同安全组的EC2实例中,执行nslookup vpc-website-qa-xxxxxxxxxxxx.ap-south-1.es.amazonaws.com验证解析是否正常:

  • 如果解析失败:问题出在VPC DNS配置或DNS访问权限
  • 如果解析成功:问题出在Spring Boot配置本身

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:15:02