有没有办法在没有NAT的情况下从VPC外部的Lambda查询VPC中的RDS DB
Is there a way to query RDS DB in VPC from Lambda outside VPC without NAT
我一直在寻找一些好的设计理念,但尚未找到最佳选择。基本上我正在为现有数据库开发无服务器 API(VPC 内部的 RDS MySQL,私有安全组)。所以我想从多个 Lambda 函数查询数据库。我知道以下实现方法:
- 将所有 Lambda 放在同一个 VPC 中。但由于 Lambda 冷启动缓慢(我需要让它们保持温暖)和并发限制,这种情况并不好。另外,我需要调用其他服务(S3、SES、第三方服务)=> 配置会困难得多。所以最好将它们保留在 VPC 之外。
- 在同一个 VPC 内放置一个 Lambda(它只会查询数据库),并使用私有 API 网关从 VPC 外的其他 Lambda 调用它。 VPC 内部的 Lambda 会一直很热,但由于对这个 Lambda 的大量并发请求,它似乎是一个瓶颈。我知道可以创建多个安全组并请求更多的IP,但是需要不断地监控情况,这是不可接受的。
- 打开 RDS 使其可以从 Internet 访问不是解决方案。
- Aurora serverless 也需要 VPC...
有什么想法或建议吗?
谢谢!
回答你标题中的问题,不,不可能。
根据您的描述,您希望调用可以访问 VPC 内部和外部资源的 lambda。你的前两个选项几乎描述了你在这里的唯一选择。
关于您的选项 1。您可以将 lambda 表达式放在 VPC 中,并使用 NAT 返回互联网。我假设这就是您所说的 'configuration will be much more difficult' 的意思。但至少您的 VPC 外部没有任何东西可以启动与 VPC 内部的连接。我不认为添加 NAT 网关(参见 https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)是 'much more difficult',但我想这是主观的。
关于您的选项 2。您可以有一个 non-VPC Lambda,直接在 VPC 中调用 Lambda(反向不起作用)。因此,实际上并不需要 API 网关(私有或其他)形式的附加组件。 VPC 内的 Lambda 将自动扩展,但受限于您指定的 sub-net 中的可用 IP 数量。因此需要进行一些容量规划。
NB - 每个选项都需要在 VPC 中至少有一个 lambda。这些 lambda 的冷启动将导致 ENI(弹性网络接口)稍微延迟 set-up.
我一直在寻找一些好的设计理念,但尚未找到最佳选择。基本上我正在为现有数据库开发无服务器 API(VPC 内部的 RDS MySQL,私有安全组)。所以我想从多个 Lambda 函数查询数据库。我知道以下实现方法:
- 将所有 Lambda 放在同一个 VPC 中。但由于 Lambda 冷启动缓慢(我需要让它们保持温暖)和并发限制,这种情况并不好。另外,我需要调用其他服务(S3、SES、第三方服务)=> 配置会困难得多。所以最好将它们保留在 VPC 之外。
- 在同一个 VPC 内放置一个 Lambda(它只会查询数据库),并使用私有 API 网关从 VPC 外的其他 Lambda 调用它。 VPC 内部的 Lambda 会一直很热,但由于对这个 Lambda 的大量并发请求,它似乎是一个瓶颈。我知道可以创建多个安全组并请求更多的IP,但是需要不断地监控情况,这是不可接受的。
- 打开 RDS 使其可以从 Internet 访问不是解决方案。
- Aurora serverless 也需要 VPC...
有什么想法或建议吗?
谢谢!
回答你标题中的问题,不,不可能。
根据您的描述,您希望调用可以访问 VPC 内部和外部资源的 lambda。你的前两个选项几乎描述了你在这里的唯一选择。
关于您的选项 1。您可以将 lambda 表达式放在 VPC 中,并使用 NAT 返回互联网。我假设这就是您所说的 'configuration will be much more difficult' 的意思。但至少您的 VPC 外部没有任何东西可以启动与 VPC 内部的连接。我不认为添加 NAT 网关(参见 https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)是 'much more difficult',但我想这是主观的。
关于您的选项 2。您可以有一个 non-VPC Lambda,直接在 VPC 中调用 Lambda(反向不起作用)。因此,实际上并不需要 API 网关(私有或其他)形式的附加组件。 VPC 内的 Lambda 将自动扩展,但受限于您指定的 sub-net 中的可用 IP 数量。因此需要进行一些容量规划。
NB - 每个选项都需要在 VPC 中至少有一个 lambda。这些 lambda 的冷启动将导致 ENI(弹性网络接口)稍微延迟 set-up.