从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
相关产品推荐
相关产品推荐

