![](/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.