![](/img/trans.png)
[英]Cert error connecting to AWS DocumentDB from Docker C# app
[英]connection error while connecting to AWS DocumentDB
从 node.js 连接到 AWS DocumentDB 时出现以下错误
连接错误:{ [MongoNetworkError: connection 1 to docdb-2019-01-28-06-57-37.cluster-cqy6h2ypc0dj.us-east-1.docdb.amazonaws.com:27017 timed out] name: 'MongoNetworkError', errorLabels: [ 'TransientTransactionError' ] }
这是我的 node.js 文件
应用程序.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...");
});
默认情况下,aws documentdb 设计为仅从同一 VPC 连接。 因此,要从同一 vpc 中的 ec2 连接 nodejs 应用程序。 您需要拥有 pem 文件,因为在创建 db 实例时默认启用 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'));
这里使用的是猫鼬 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)
在 VPC 外部使用 AWS DocumentDB 例如您的开发服务器 EC2 或从本地计算机将出现连接错误,除非您使用 ssh 隧道或端口转发
以及简单的隧道
在你的本地使用这个命令
ssh -i "ec2Access.pem" -L 27017:sample-cluster.node.us-east-1.docdb.amazonaws.com:27017 ubuntu@EC2-Host -N
在应用程序配置中使用
{ uri: 'mongodb://:@127.0.0.1:27017/Db', useNewUrlParser: true, useUnifiedTopology:true, directConnection: true }
只要确保你可以从这个隧道 ec2 和数据库连接
如果您决定在 ec2 安全组中使用端口转发步骤 0-[p 添加具有自定义 TCP 和端口 27017 的入站角色,所有流量 1- go 到您的 ec2 实例并安装 Haproxy
$ sudo apt install haproxy
2- 编辑 Haproxy 配置
$ sudo nano haproxy.cfg
3-在结束文件添加
listen mongo
bind 0.0.0.0:27017
timeout connect 10s
timeout client 1m
timeout server 1m
mode TCP
server AWSmongo <database-host-url>:27017
4- 现在重启 HaProxy
$ sudo service HaPoxy restart
5- 现在您可以使用访问您的数据库
{uri: 'mongodb://<database-user>:<database-pass>@<EC2-IP>:27017/<db>'}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.