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

创建AWS Glue与DocumentDB连接失败的问题排查求助

解决AWS Glue连接DocumentDB报错(错误码30)的实操方案

1. 先修正URL格式,这是最常见的问题

AWS Glue对MongoDB兼容的URL有严格要求,DocumentDB的正确格式必须包含这些关键参数:

mongodb://<用户名>:<密码>@<集群端点>:27017/<认证数据库>?ssl=true&ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred
  • 必须显式添加replicaSet=rs0:DocumentDB默认副本集名称就是rs0,Glue连接不指定的话会直接连接失败
  • 认证数据库不能省略:如果你的用户是在admin库创建的,URL里必须写/admin,不能只填目标业务数据库
  • 密码含特殊字符要URL编码:比如密码里有@、/这类字符,要转成%40、%2F这种编码格式

2. 检查网络与安全组配置

  • 确认Glue连接使用的子网、安全组和DocumentDB集群在同一VPC,或已通过VPC peering打通网络
  • DocumentDB的安全组要开放27017端口给Glue的安全组,别只开放了本地和Athena的IP范围
  • Glue的子网要有直接指向DocumentDB的路由,别绕NAT网关(DocumentDB是VPC内服务,走公网连接会失败)

3. 权限与用户配置要匹配

  • 用于连接的DocumentDB用户必须拥有目标数据库的读取权限,且用户要在对应的认证库创建(比如在admin库创建的用户,URL里的认证库就得是admin)
  • 测试时可以先用超级用户(如root)尝试连接,排除权限不足的问题

4. SSL配置要保持一致

  • 如果开启TLS:Glue连接里要启用SSL选项,同时URL里添加ssl=true&ssl_ca_certs=rds-combined-ca-bundle.pem(Glue默认能识别AWS官方CA证书路径)
  • 如果关闭TLS:除了在DocumentDB集群设置中禁用TLS,还要在URL里添加ssl=false,同时在Glue连接配置里关闭SSL选项,两边配置必须统一

5. 用Glue作业替代连接测试,获取详细日志

连接测试的报错信息过于模糊,直接写个简单的Glue作业测试,能在CloudWatch中查看具体错误:

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

sc = SparkContext()
glueContext = GlueContext(sc)

# 替换为你的连接参数
conn_opts = {
    "uri": "mongodb://<用户名>:<密码>@<集群端点>:27017/admin?ssl=true&ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs0",
    "database": "你的目标数据库",
    "collection": "任意测试集合"
}

df = glueContext.create_dynamic_frame.from_options(
    connection_type="mongodb",
    connection_options=conn_opts
)

df.printSchema()

运行后去CloudWatch的Glue日志中查看具体错误,比如副本集解析失败、认证超时等,便于定位问题

6. 确认Glue版本与DocumentDB兼容性

  • 使用Glue 3.0及以上版本,对DocumentDB 4.0+的兼容性更好
  • 旧版本Glue的Mongo驱动可能不支持DocumentDB的协议,容易出现无明确提示的连接失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 01:48:20