具有 RDS 和 Internet 连接的 VPC 中的 AWS Lambda
AWS Lambda in VPC with RDS and Internet Connection
我在新创建的 VPC 中设置了一个 Aurora 数据库(已配置),但没有 public 可访问性。因为我想 运行 VPC 中的 Lambda 函数能够同时访问 RDS 实例和 Internet,所以我将 RDS 实例的路由 table 更改为允许来自我放置在同一 VPC 中的 public 子网中的 NAT 网关。
对于 Lambda 函数本身,我创建了一个单独的私有子网,也只允许来自路由中 NAT 网关的流量 table。我在 Lambda 设置中将此子网和 VPC 分配给 Lambda 函数。互联网连接适用于此配置,但我无法访问数据库。这就是为什么我遵循此 post (https://serverfault.com/questions/941886/connect-an-aws-lambda-function-triggered-by-api-gateway-to-aurora-serverless-mys) 并将 Lambda 子网的 IP CIDR 添加到 RDS 实例的安全组(称为 rds-launch-wizard)。
仍然,Lambda 函数能够与 public 互联网交互,但无法连接到 RDS 实例(超时)。我 运行 没主意了,这里有什么问题吗?
配置应该是:
- 一个 Public 子网 带有一个 NAT 网关(根据定义,一个 Internet 网关)
- 具有 Amazon RDS 实例的私有子网
- 与 Lambda 函数
关联的相同或不同的私有子网
- 私有子网配置了路由Table,目的地
0.0.0.0/0
到NAT网关
然后考虑安全组:
- Lambda 函数的安全组 (
Lambda-SG
) 允许所有出站访问
- RDS 实例的 安全组 (
RDS-SG
) 应允许从 Lambda-SG
在适当的数据库端口上进行入站访问
也就是说,RDS-SG
允许来自 Lambda-SG
(按名称)的传入流量。 无需在安全组中使用 CIDR。
Lambda 函数将通过弹性网络接口 (ENI) 连接到私有子网,并且能够与 RDS 实例(直接)和互联网(通过 NAT 网关)通信。
请注意,您不是在指挥 "traffic from the NAT Gateway"。相反,您正在将 Internet 绑定流量 引导至 NAT 网关。也不存在 "routing tables of the RDS instances" 这样的东西,因为路由 Table 与 子网 关联,而不是 RDS。
我在新创建的 VPC 中设置了一个 Aurora 数据库(已配置),但没有 public 可访问性。因为我想 运行 VPC 中的 Lambda 函数能够同时访问 RDS 实例和 Internet,所以我将 RDS 实例的路由 table 更改为允许来自我放置在同一 VPC 中的 public 子网中的 NAT 网关。
对于 Lambda 函数本身,我创建了一个单独的私有子网,也只允许来自路由中 NAT 网关的流量 table。我在 Lambda 设置中将此子网和 VPC 分配给 Lambda 函数。互联网连接适用于此配置,但我无法访问数据库。这就是为什么我遵循此 post (https://serverfault.com/questions/941886/connect-an-aws-lambda-function-triggered-by-api-gateway-to-aurora-serverless-mys) 并将 Lambda 子网的 IP CIDR 添加到 RDS 实例的安全组(称为 rds-launch-wizard)。
仍然,Lambda 函数能够与 public 互联网交互,但无法连接到 RDS 实例(超时)。我 运行 没主意了,这里有什么问题吗?
配置应该是:
- 一个 Public 子网 带有一个 NAT 网关(根据定义,一个 Internet 网关)
- 具有 Amazon RDS 实例的私有子网
- 与 Lambda 函数 关联的相同或不同的私有子网
- 私有子网配置了路由Table,目的地
0.0.0.0/0
到NAT网关
然后考虑安全组:
- Lambda 函数的安全组 (
Lambda-SG
) 允许所有出站访问 - RDS 实例的 安全组 (
RDS-SG
) 应允许从Lambda-SG
在适当的数据库端口上进行入站访问
也就是说,RDS-SG
允许来自 Lambda-SG
(按名称)的传入流量。 无需在安全组中使用 CIDR。
Lambda 函数将通过弹性网络接口 (ENI) 连接到私有子网,并且能够与 RDS 实例(直接)和互联网(通过 NAT 网关)通信。
请注意,您不是在指挥 "traffic from the NAT Gateway"。相反,您正在将 Internet 绑定流量 引导至 NAT 网关。也不存在 "routing tables of the RDS instances" 这样的东西,因为路由 Table 与 子网 关联,而不是 RDS。