问题描述
当前状态:
我已经创建了一个 documentdb 集群。 为安全组添加了一个入站规则,以允许来自任何地方的所有流量。 为集群禁用 TLS
尝试在此之后连接到数据库 https://docs.aws.amazon.com/documentdb/latest/developerguide/connect_programmatically.html
但抛出以下错误:
(node:45892) UnhandledPromiseRejectionWarning: MongoNetworkError: Failed to connect to server [aacb-c1.cluster-c3ggyumy9pd2.us-east-2.docdb.amazonaws.com:27017] on first connect [MongoNetworkTimeoutError: connection timed out
解决方法
当你说从你的“本地 node.js 服务器”连接时,你的意思是在你自己的电脑上运行的东西吗?如果是这样,我相信即使您向入站安全组添加了规则也不会起作用,因为 DocumentDB 在其自己的 VPC 中运行。
这里有一个指南(您基本上还需要在 AWS 中运行 node.js 服务器):https://docs.aws.amazon.com/documentdb/latest/developerguide/connect-from-outside-a-vpc.html
,Amazon DocumentDB 仅限 Virtual Private Cloud (VPC),目前不支持公共终端节点。因此,如果您尝试从机器本地运行的 Node 服务器进行连接,它将无法公开访问 Amazon DocumentDB。
替代选项:
-
您可以使用 SSH 隧道从本地环境进行连接。要创建 SSH 隧道,您需要一个与 Amazon DocumentDB 集群在同一 Amazon VPC 中运行的 Amazon EC2 实例。您可以参考此处的说明:https://docs.aws.amazon.com/documentdb/latest/developerguide/connect-from-outside-a-vpc.html
-
您可以尝试从在包含 Amazon DocumentDB 集群的同一 VPC 中创建的 EC2 实例(安装了 Node)运行您的应用程序。