在 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?

在 Swift 中以编程方式创建 NSTextField

在 xib 中以编程方式自定义 UIView

获取连接到Mac Machine的设备的UDID

如何使用 NodeJs 连接到 docker compose 中的 postgres?

获取连接到 Mac 机器的设备的 UDID