AWS DocumentDB本地服务器连接可行性及代码问题咨询
嘿,我来帮你理清这个DocumentDB本地连接的问题:
本地连接AWS DocumentDB的可行性
首先明确:不需要把本地服务器迁移到EC2也能连接DocumentDB,但默认情况下DocumentDB集群部署在AWS VPC内部,本地网络无法直接访问。你可以通过以下两种常用方式打通网络:
- 配置VPC VPN连接(AWS VPN或第三方VPN服务),建立本地网络到目标VPC的安全通道
- 在VPC内部署一台** bastion主机(EC2实例)**,通过SSH隧道将DocumentDB的27017端口转发到本地,借助隧道实现本地访问
你的Mongoose连接代码存在的问题
我梳理了你的代码,有几个关键问题需要调整:
连接URL的参数冗余与格式错误
你在URL里写了&(HTML转义字符),应该直接用&,否则Mongoose会解析失败;同时URL中包含的ssl=true和ssl_ca_certs参数,和你在mongoose.connect选项里设置的ssl: true、sslCA: ca重复,完全可以移除URL里的这些冗余参数。证书路径的跨平台兼容性问题
你用了Windows风格的反斜杠\\拼接路径,如果后续代码需要部署到Linux环境(比如EC2)会出错。建议用path.join()来处理路径,记得先引入path模块。关闭SSL验证的安全风险
你设置了sslValidate: false,这会跳过SSL证书验证,大幅降低连接安全性。既然你已经传入了官方CA证书,应该把这个参数设为true,确保连接的合法性。
修正后的代码示例
const mongoose = require('mongoose') const fs = require('fs'); const path = require('path'); // 新增path模块处理跨平台路径 mongoose.Promise = global.Promise // 跨平台读取CA证书文件 const caCertPath = path.join(__dirname, 'rds-combined-ca-bundle.pem'); const ca = [fs.readFileSync(caCertPath)]; // 修正URL格式,移除冗余的SSL参数 const url = 'mongodb://**********:*****************@docdb-2019-07-30-08-45-53.cluster-czognfvnmvja.us-east-1.docdb.amazonaws.com:27017/?replicaSet=rs0' mongoose.connect(url, { ssl: true, sslCA: ca, sslValidate: true, // 开启SSL验证,保障连接安全 useNewUrlParser: true }).then(() => { console.log("Connection Successfull") }).catch((err) => { console.log("Error " + err); })
内容的提问来源于stack exchange,提问作者Alpit Anand
相关产品推荐
相关产品推荐

