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

从AWS Glue连接本地MongoDB遇SSL证书验证失败问题求助

解决AWS Glue连接本地MongoDB的SSL证书验证问题

问题核心

报错提示PKIX路径构建失败,本质是AWS Glue的Java运行环境未信任本地MongoDB的SSL证书,而Glue控制台创建MongoDB连接时无证书上传入口,需通过自定义脚本或环境配置解决。

可行解决方案

方案1:测试环境临时禁用证书验证

仅用于测试连通性,生产环境严禁使用:

from awsglue.context import GlueContext
from pyspark.context import SparkContext

sc = SparkContext.getOrCreate()
glueContext = GlueContext(sc)

# 配置MongoDB连接选项,添加证书验证跳过参数
mongo_conn_options = {
    "uri": "mongodb://<your-mongo-address>:27017",
    "database": "<target-db>",
    "collection": "<target-collection>",
    "ssl": "true",
    "sslAllowInvalidCertificates": "true",
    "sslInvalidHostNameAllowed": "true"
}

# 读取MongoDB数据
df = glueContext.create_dynamic_frame.from_options(
    connection_type="mongodb",
    connection_options=mongo_conn_options
)

方案2:生产环境导入证书到Glue信任存储

  1. 导出本地MongoDB CA证书:获取集群使用的CA证书(.pem或.crt格式)。
  2. 上传证书到S3:将证书文件上传至私有S3桶,确保Glue作业角色拥有该桶的读取权限。
  3. 编写初始化脚本:创建Shell脚本install_mongo_cert.sh,内容如下:
#!/bin/bash
# 从S3下载证书到临时目录
aws s3 cp s3://<your-bucket-path>/<cert-file>.pem /tmp/

# 将证书导入Glue默认Java信任存储
keytool -import -trustcacerts -alias mongodb-ca -file /tmp/<cert-file>.pem -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -noprompt
  1. 配置Glue作业:在作业的「安全配置、脚本库和作业参数」中,将「初始化脚本」设置为S3上的脚本路径。
  2. 修改Glue脚本:仅保留ssl: "true"参数,移除证书跳过相关配置。

方案3:自定义Glue连接器(进阶复用)

若需多作业复用证书配置,可基于官方MongoDB连接器源码改造:

  • 将CA证书添加到连接器项目资源目录
  • 修改代码逻辑,在初始化时加载自定义证书到信任存储
  • 编译打包为JAR文件,上传至S3后注册为Glue自定义连接器

额外校验项

  • 确认Glue作业的VPC、子网、安全组配置可访问本地MongoDB的27017端口
  • 确认本地MongoDB的SSL证书域名/IP与连接URI匹配
  • 验证Glue角色具备VPC访问、S3读取(方案2需要)权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 19:17:11