从AWS Glue连接Heroku Postgres数据库遇SSL问题
解决AWS Glue连接Heroku Postgres的SSL及超时问题
我之前在对接Heroku Postgres和AWS Glue的时候,也碰到过几乎一模一样的SSL报错和超时问题,折腾了好一阵才搞定,给你几个亲测有效的解决方向:
1. 修正JDBC URL的SSL参数,适配Heroku的强制SSL要求
Heroku Postgres默认强制SSL连接,这也是你碰到“主机匹配失败”“SSL连接失败”的核心原因。你可以调整JDBC URL的参数来解决:
- 如果是因为主机证书验证不通过,尝试在URL末尾添加
&sslmode=require&sslfactory=org.postgresql.ssl.NonValidatingFactory,这个配置会跳过主机名的证书验证,直接建立SSL连接,能快速解决“主机匹配失败”的问题(注意:这会略降低安全性,但对于Heroku托管的合规数据库来说,风险可控)。 - 确保你用的是Heroku官方提供的最新连接信息:可以通过Heroku CLI执行
heroku pg:credentials:url命令获取完整的JDBC URL,避免手动输入时出错。
2. 排查网络超时问题
org.postgresql.util.PSQLException: Connection attempt timed out 基本都是网络不通导致的,你可以从这几个方面检查:
- 如果你的Glue作业是在VPC内运行的,要确认VPC的安全组出站规则允许访问5432端口(Postgres默认端口),同时NACL也要放开对应的出站流量。
- 如果Glue用的是公共端点,检查AWS账号是否有网络ACL或安全组限制了对公网5432端口的访问。
3. 复用DBeaver的SSL解决思路
你之前在DBeaver里碰到的SSL问题,本质和Glue是一样的,当时的解决方案可以复用:
- 在DBeaver的连接设置里,把SSL模式改为「Require」或者「Verify CA」;如果还是报错,可以暂时切换到「Non Validating」模式跳过验证,先确认连接能通,再逐步调整到更安全的模式。
4. 优化AWS Glue的连接配置
- 尽量不要手动拼接JDBC URL,用Glue控制台的连接向导填写主机、端口、数据库名等信息,然后在「额外JDBC参数」里添加键值对:
- 键:
sslmode,值:require - 键:
sslfactory,值:org.postgresql.ssl.NonValidatingFactory
- 键:
- 检查Glue使用的PostgreSQL JDBC驱动版本,如果是默认的旧版本,建议上传最新的驱动包到S3,然后在Glue作业中指定使用这个自定义驱动,旧驱动可能对新的SSL协议支持不好。
内容的提问来源于stack exchange,提问作者CpILL
相关产品推荐
相关产品推荐

