带 VPC 的 AWS Lambda 函数仅在私有子网中有效

AWS Lambda Function with VPC only works when in Private Subnet

我一直致力于将 Amazon Lambda 函数与 mySQL 数据库和外部 API 的 RDS 连接集成起来。要访问 API,需要有一个互联网网关,然后是允许来自 0.0.0.0/0 的连接的安全组。

我有一个 public 子网和私有子网。 public 子网路由到互联网网关,但私有子网路由到 NAT。

这让我想到,如果我 运行 具有 Public 子网的 Lambda 函数,它将连接到互联网。但是,每次都超时。但是,当我 运行 来自私有子网的 lambda 函数时,它起作用了!所以 NAT 似乎可以工作,因为这是与私有 sunet 相关联的,但仅使用互联网网关是行不通的。

有人对此有任何解释吗?

要使 Amazon Lambda 函数连接到 Internet,需要满足以下条件之一:

  • Lambda 函数连接到 VPC,
  • Lambda 函数连接到 私有子网 并且配置了 NAT Gateway/NAT 实例,OR
  • Lambda 函数已连接到 public 子网,并且弹性 IP 地址已分配给 Lambda 函数正在使用的弹性网络接口 (ENI)子网

仅将 Lambda 函数连接到 public 子网(没有 EIP)将不会提供互联网访问。