我在AWS中创建了一个VPC(由于lambdas内部的RDS连接需求(,它大部分时间都可以访问互联网,但有时我的外部请求会超时(大多数情况下都发生在SES中,因为它们是大多数外部请求(。我已经按照以下方式配置了我的VPC(对不起,不是按照创建的顺序,只是从AWS中读取(:
- 具有172.30.0.0/16 CIDR的VPC
- 3个私有子网,具有172.30.0.0/24、172.30.1.0/24和172.30.2.0/24,每个(1a、1b、1c(都有一个不同的可用性区域,具有0.0.0.0/0路由以我的NAT为目标
- 1个公用子网,具有172.30.3.0/24到1a的可用性区域,具有针对我的IGW的0.0.0.0/0路由
- 2个路由表(专用和公用(,其中3个子网在专用路由表中,公用子网在自己的路由表中
- lambdas的安全组将所有出站流量定向到0.0.0.0/0
- Lambda被配置为使用这些子网和给定的安全组
我不明白为什么我的互联网请求有时会从VPC内部失败,这几乎就像lambda是在某个可用区域启动的,而那个特定的区域无法访问VPC内部的互联网。
编辑:已解决!我的lambda函数中列出了导致超时的公用子网
连接到VPC的AWS Lambda函数应始终配置为使用私有子网。
如果这些Lambda功能也需要访问互联网,它们可以使用NAT网关或NAT实例访问互联网。这些NAT服务应配置为使用公用子网。
当Lambda函数连接到一个私有子网时,目的地为互联网的流量将从私有子网通过NAT网关/NAT实例路由到互联网。如果Lambda函数连接到公用子网,这将不起作用。(Lambda功能无法直接从专有网络连接到互联网。(