在 Nodejs 中以编程方式连接到 Mongodb Amazon EC2 实例
Posted
技术标签:
【中文标题】在 Nodejs 中以编程方式连接到 Mongodb Amazon EC2 实例【英文标题】:Connecting to Mongodb Amazon EC2 instance programmatically in Nodejs 【发布时间】:2017-01-19 07:56:40 【问题描述】:我正在制作一个 NodeJS 网络应用程序。我想使用 Amazon 的弹性 beanstalk 部署应用程序,我想使用 MongoDB 作为数据库。目前我对解决方案的理解是:
-
在 Amazon EC2 实例上设置 MongoDB 实例(我已经这样做了)
在 server.js 中以编程方式连接到此数据库以读取和写入数据库
这个解决方案有意义吗?如果是这样,我如何以编程方式连接到 EC2 MongoDB 实例?
我找到了node的官方MongoDB包:https://www.npmjs.com/package/mongodb
但文档只提到连接到本地 MongoDB 实例:
// Connection URL
var url = 'mongodb://localhost:27017/myproject';
// Use connect method to connect to the Server
MongoClient.connect(url, function(err, db)
assert.equal(null, err);
console.log("Connected correctly to server");
db.close();
);
目前我可以通过 ssh 连接到我的 EC2 MongoDB 实例,但我不明白如何进行下一步并以编程方式连接到它。
当我 ssh 进入 EC2 MongoDB 实例时,我需要提供一个 .pem 密钥文件,当我以编程方式连接时是否需要做类似的事情?
【问题讨论】:
确保您的 EC2 安全组允许通过 MongoDB 端口连接到您的实例。此外,您可能需要考虑为您的应用创建单独的 VPC。 【参考方案1】:根据您的用例,您的 Mongodb 在 EC2 实例上是本地的。因此,当您连接到 Mongodb 时,您必须使用 pem 密钥通过 SSH 连接到 EC2 实例才能连接到 Mongodb。如果您想避免每次都使用 pem key,您可以创建一个 SSH 用户,该用户可以使用 UN 和密码 SSH 到实例。
这是实现它的有用指南:
https://coderwall.com/p/j5nk9w/access-ec2-linux-box-over-ssh-without-pem-file
或者另一种方式是使用 SSH 密钥进行连接。
【讨论】:
【参考方案2】:不,您不需要 .pem 密钥来连接 MongoDB 实例。
确保您的 Ec2 实例具有公共域或 IP。此 IP 可用于代替节点数据库配置中的 localhost。
mongo 服务器应该在实例上运行。检查 mongo shell 以确认。
创建 VPC 以更好地管理实例并定义具有所需端口的安全组。 在您的数据库配置文件中使用安全凭证。我建议始终为数据库实例使用私有 IP,并且运行 HTTP 服务器的实例应该具有与 DNS 提供程序映射的公共 IP。在数据库服务器上打开最小端口,主要是 :27017 使其安全。这两个实例都应该在一个 VPC 中,因为私有 IP 只能在此处访问。
【讨论】:
以上是关于在 Nodejs 中以编程方式连接到 Mongodb Amazon EC2 实例的主要内容,如果未能解决你的问题,请参考以下文章
如何首先在 Xamarin.Android 中以编程方式连接到特定的 SSID?