【问题标题】:Connecting to Mongodb Amazon EC2 instance programmatically in Nodejs在 Nodejs 中以编程方式连接到 Mongodb Amazon EC2 实例
【发布时间】:2023-03-07 05:38:01
【问题描述】:

我正在制作一个 NodeJS 网络应用程序。我想使用 Amazon 的弹性 beanstalk 部署应用程序,我想使用 MongoDB 作为数据库。目前我对解决方案的理解是:

  1. 在 Amazon EC2 实例上设置 MongoDB 实例(我已经这样做了)
  2. 在 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。

标签: node.js mongodb amazon-web-services amazon-ec2


【解决方案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 只能在此处访问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-21
      • 2011-11-17
      • 2019-04-03
      • 1970-01-01
      • 2019-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多