无法确定与 DocumentDB 的 Mongoose SSL 连接错误
Posted
技术标签:
【中文标题】无法确定与 DocumentDB 的 Mongoose SSL 连接错误【英文标题】:Unable to determine Mongoose SSL connection error to DocumentDB 【发布时间】:2020-04-21 13:38:09 【问题描述】:我在 AWS Elastic Beanstalk (EB) 中有 2 个环境,运行一个使用 Mongoose 框架连接到 DocumentDB 的 Node.js 应用程序。其中一个环境莫名其妙地停止工作,而另一个环境工作正常。两者都是从使用 EB CLI 部署应用程序代码的 CI/CD 构建服务器部署的。
有问题的环境在nodejs.log中产生如下错误:
name: 'MongooseTimeoutError',
reason:
Error: unable to get local issuer certificate
at TLSSocket.onConnectSecure (_tls_wrap.js:1058:34)
at TLSSocket.emit (events.js:198:13)
at TLSSocket._finishInit (_tls_wrap.js:636:8)
name: 'MongoNetworkError',
[Symbol(mongoErrorContextSymbol)]: ,
[Symbol(mongoErrorContextSymbol)]:
两者都使用相同的连接字符串,因为它们连接到同一个实例mongodb://*****:*****@docdb-2019-08-**-**-**-**.cluster-**********.us-east-2.docdb.amazonaws.com:27017/db_name?ssl=true&ssl_ca_certs=/etc/ssl/certs/rds-combined-ca-bundle.pem&replicaSet=rs0
证书 pem 文件与两者使用的文件相同,并通过 EB .ebextensions 脚本部署到实例。
我尝试过的事情:
连接到问题环境的 EC2 实例,安装 mongodb shell 并能够使用 Mongo 连接字符串中指定的证书成功连接到 DocumentDB 实例。 通过 Elastic Beanstalk Web 管理控制台重建 EB 环境。目前有点卡住,没有想法。
【问题讨论】:
aws documentDB 太糟糕了 【参考方案1】:Amazon 的 DocumentDB 官方文档中有一个示例代码可以正常工作并且不会触发此错误。
https://docs.aws.amazon.com/documentdb/latest/developerguide/connect_programmatically.html
这是 Node.JS 示例,为了清楚起见做了一些修改:
const MongoClient = require('mongodb');
const fs = require('fs');
const caContent = [fs.readFileSync("/path/to/rds-combined-ca-bundle.pem")];
const options =
sslValidate: true,
sslCA: caContent,
useNewUrlParser: true
;
const connUri = 'mongodb://user:pass@sample-cluster.node.us-east-1.docdb.amazonaws.com:27017/sample-database?ssl=true&replicaSet=rs0&readPreference=secondaryPreferred';
const client = new MongoClient(connUri, options);
const client = await MongoClient.connect();
【讨论】:
这对我有用。谢谢。【参考方案2】:有同样的问题..不确定这是否会随着 cert 到 2019 的更改而中断..无论如何我必须通过更改代码来解决这个问题(将 sslCA 参数添加到下面的 Mongoose 连接方法)并删除来自连接字符串的 ssl 证书位置。
connect(uri, useNewUrlParser: true,
useFindAndModify: false,
sslCA: [fs.readFileSync("rds-combined-ca-bundle.pem")], (err: any)
【讨论】:
是的..这是一种方法;)..无论如何,我是AWS论坛响应中的同一用户。我想我也会在这里发布。以上是关于无法确定与 DocumentDB 的 Mongoose SSL 连接错误的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 pySpark 从 Databricks 在 Cosmos DB/documentDB 中写入数据帧
无法使用microsoft.azure.documentdb.core更新Azure CosmosDB中的文档
在 DocumentDB 中处理每秒请求单位 (RUs/s) 峰值
DocumentDB OfferThroughput 是不是应该在代码中设置?