无法将VPC中的AWS Lambda连接到EC2中的MongoDB

问题描述 投票:0回答:1

我在哪里

  1. 我已在 EC2 实例上成功设置 MongoDB 社区版并将其放置在 VPC 中
  2. 我没有使用Atlas,也没有集群。只需一个运行 ubuntu 并安装了 MongoDB 的 EC2 实例
  3. 数据库工作正常,我可以从我的 Windows 机器连接到它,浏览数据库等。我已经设置了绑定等。
  4. 我还在同一个 VPC 内设置了 Lambda。
  5. 在 Lambda 中,我尝试使用连接字符串建立连接
    mongodb+srv://[email protected]
    老实说,这有点猜测,我无法在该用例的文档中找到太多内容
  6. 我收到错误
    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 amazon-web-services amazon-ec2 amazon-vpc
1个回答
0
投票

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,它将无法工作。

© www.soinside.com 2019 - 2024. All rights reserved.