连接到AWS DocumentDB时发生连接错误

Abh*_*kar 2 mongodb amazon-web-services node.js

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

连接错误:{[MongoNetworkError:与docdb-2019-01-28-06-57-37.cluster-cqy6h2ypc0dj.us-east-1.docdb.amazonaws.com:27017超时的连接1]名称:'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...");
});
Run Code Online (Sandbox Code Playgroud)

Aru*_*ran 9

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

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

步骤2:使用指向pem文件的选项更改猫鼬连接

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'));
Run Code Online (Sandbox Code Playgroud)

这里正在使用猫鼬5.4.0

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

我个人只是尝试从VPC进行连接,但效果很好。

更新=====:>

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