我在哪里
mongodb+srv://[email protected]
老实说,这有点猜测,我无法在该用例的文档中找到太多内容querySrv ENOTFOUND _mongodb._tcp.ec2-54-xxx.compute-1.amazonaws.com
需要帮助
是否可以将 Lambda 连接到运行 mongo db 的单个 EC2 实例? 如果是这样,使用什么连接字符串?我应该使用弹性 IP 地址吗?等等
代码片段。我正在使用 NodeJS,但我认为这并不重要 - 它只是无法连接
import { MongoClient } from 'mongodb'
const client = new MongoClient('mongodb+srv://[email protected]');
await client.connect()
MongoDB 连接 URL 的
+srv
部分是错误的。仅当您希望 MongoDB 客户端查找 SRV
DNS 记录以查找服务器的实际地址和端口时,才应该使用它。您尚未创建 SRV 记录,您只是使用默认 EC2 实例的 DNS 名称,因此 SRV
查找不是您想要的。
这就是您收到特定错误消息的原因,因为它正在尝试进行 SRV 记录查找,但失败了。因此,请删除 URL 的
+srv
部分。
此外,请确保您已在 EC2 实例的安全组中打开端口,以允许来自 Lambda 函数的安全组 ID 的入站连接。
并且,您可能还希望将 URL 的
ec2-54-xxx.compute-1.amazonaws.com
主机名部分更改为 EC2 实例的私有 IP 地址。您需要确保 Lambda 正在尝试连接到 EC2 实例的私有 IP。如果它尝试连接到实例的公共 IP,它将无法工作。