连接到 AWS DocumentDB 时出现连接错误

Posted

技术标签:

【中文标题】连接到 AWS DocumentDB 时出现连接错误【英文标题】:connection error while connecting to AWS DocumentDB 【发布时间】:2019-06-21 04:46:32 【问题描述】:

从 node.js 连接到 AWS DocumentDB 时出现以下错误

连接错误: [MongoNetworkError: connection 1 to docdb-2019-01-28-06-57-37.cluster-cqy6h2ypc0dj.us-east-1.docdb.amazonaws.com:27017 超时]名称:'MongoNetworkError',errorLabels:[ 'TransientTransactionError']

这是我的节点 js 文件

app.js

var mongoose = require('mongoose');
mongoose.connect('mongodb://abhishek:abhishek@docdb-2019-01-28-06-57-37.cluster-cqy6h2ypc0dj.us-east-1.docdb.amazonaws.com:27017/?ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs0', 
    useNewUrlParser: true
);
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() 
    console.log("connected...");
);

【问题讨论】:

【参考方案1】:

默认情况下,aws documentdb 旨在仅从同一 VPC 进行连接。 因此,要从同一 vpc 中的 ec2 连接 nodejs 应用程序。您需要在创建数据库实例时启用 pem 文件,因为默认情况下启用了 SSL。

第 1 步:$ wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem 在所需目录中

第 2 步:使用指向 pem 文件的选项更改 mongoose 连接

mongoose.connect(database.url, 
    useNewUrlParser: true,
    ssl: true,
    sslValidate: false,
    sslCA: fs.readFileSync('./rds-combined-ca-bundle.pem'))
.then(() => console.log('Connection to DB successful'))
.catch((err) => console.error(err,'Error'));

这里使用的是 mongoose 5.4.0

要从 VPC 外部连接,请尝试遵循 aws 中的以下文档: https://docs.aws.amazon.com/documentdb/latest/developerguide/connect-from-outside-a-vpc.html

就我个人而言,我只尝试从 VPC 进行连接,并且效果很好。

更新 =====:>

要从 VPC 外部的 Robo 3T 连接,请点击链接 - AWS DocumentDB with Robo 3T (Robomongo)

【讨论】:

如何从 lambda 连接它 你能举一个禁用 tls 的例子吗?

以上是关于连接到 AWS DocumentDB 时出现连接错误的主要内容,如果未能解决你的问题,请参考以下文章

111:尝试连接到 AWS EC2 实例上的 Flask 应用程序时出现连接被拒绝错误

通过 SSH 隧道从 Java 程序连接到 AWS DocumentDB

无法从我的ubuntu EC2计算机连接到AWS DocumentDB

无法使用 SSH 隧道将 MongoDB Compass 连接到 AWS DocumentDB

尝试连接到 AWS Gateway 私有 API 时出现 UnknownHostException

将 AWS Amplify 前端连接到 AWS Elastic Beanstalk 后端时出现 CORS 问题