将 AWS Lambda 上的 Python/Zappa 项目连接到 Mongodb Atlas

Connecting a Python/Zappa Project on AWS Lamba to Mongodb Atlas

在使用 Mongodb Atlas 在 AWS 上设置 Zappa 项目时,我是否遗漏了任何问题?我开始按照此页面上的指南进行操作,并扩展到各种其他资源,因为:https://docs.atlas.mongodb.com/security-vpc-peering/

我有一个与我的 Atlas 集群对等的 VPC。双方均表示连接已激活

我有一条路线 Table 有 2 条路线:

Destination: <My VPC CIDR>       Target: local
Destination: <My Atlas CIDR>     Target: <My Atlas Peering ID>

路由 Table 的 VPG 已将传播设置为真,但 none 的路由已传播。

有 4 个子网与该路由关联 Table。

所有 4 个子网和 VPC 都连接到 Lambda 上的 Zappa 函数。

与功能相关的还有一个非常自由的执行角色和安全组。

安全组和 VPC CIDR 在 Atlas 的 IP 白名单页面上均处于活动状态。

还有一个网络 ACL 与所有 4 个子网相关联,具有非常自由的入站和出站规则。

Atlas集群和AWS区域相同

我试过将所有 IPS 列入白名单,但没有用

API 网关没有 VPC Link,不存在 NLB(这严格来说是 EC2 的东西吗?计划是在 Lambda 上部署,因为我处于早期开发阶段还没有 select 的证书。)

问题是我的 Atlas Tier 不支持对等连接。

这里有另外两个解决方案,它们都通过互联网而不是在 AWS 内部发送流量。


1:

在 MongoDB Atlas 中将所有 IP 列入白名单(添加 0.0.0.0/0)。


2:

在您的 VPC 仪表板上:

将 Internet 网关附加到您的 VPC。

创建一个新的EIP。

创建一个 Public 子网和一个私有子网。 (这里我的意思是在名称中包含 'public' 和 'private' 。我们实际上将它们设为 public 并且在我们稍后关联 Routing Tables 时将它们设为私有)。

创建 NAT 网关并将其连接到 EIP 和 Public 子网。

创建一个私有路由 Table 将所有流量路由到 NAT 网关(保留从您的 VPC CIDR 到本地的现有路由)。

创建一个 Public 路由 Table 将所有流量路由到 Internet 网关(保留从您的 VPC CIDR 到本地的现有路由)。

将您的 Public 子网关联到 Public 路由 Table 并将您的私有子网关联到私有路由 Table。

创建网络 ACL 并根据需要与任何子网关联。

在您的 Lamda 函数仪表板上:

关联您的 VPC。

关联您的私有子网。

如果需要,关联任何安全组。

在您的 MongoDB Atlas 仪表板上:

在 MongoDB Atlas 中将您的 EIP 列入白名单。


注意:亚马逊向您收取 NAT 网关费用。如果您使用的是免费套餐,那是其中唯一的 non-free 部分。