有没有办法在没有 VPC 的情况下将静态 IP 分配给 AWS Lambda?

inf*_*lad 13 cold-start amazon-web-services amazon-vpc aws-lambda aws-api-gateway

我希望为通过 API 网关调用的 Lambda 分配一个静态 IP。这是必需的,因为我从此 lambda 调用的下游系统仅接受来自白名单 IP 的 Web 请求。

我通过与我的 lambda 关联的 VPC 成功地实现了这一点。但是 VPC 引入了一个糟糕的冷启动时间,有时范围为 12-16 秒。所以我正在寻找一种方法来防止这种从 VPC 冷启动,但同时为 lambda 分配一个静态 IP。

Joh*_*ein 19

您将需要:

  • 创建具有 Internet 网关、公有子网和私有子网的VPC
  • AWS Lambda 函数附加到私有子网
  • 在公共子网中启动NAT 网关并更新私有子网的路由表以使用 NAT 网关

NAT 网关将使用弹性 IP 地址(静态 IP 地址)。从 Lambda 函数到 Internet 的所有流量都将来自此 IP 地址,可以在白名单中使用。

您可能认为这对于简单地附加静态 IP 地址有点过分,但多个 Lambda 函数可以并行运行,并且它们可以在多个可用区中运行。通过 NAT 网关发送所有流量是确保它们都具有相同 IP 地址的唯一方法。(或者,更具体地说,启动 NAT 网关的每个可用区有一个 IP 地址。)


jar*_*mod 6

您不能为任何Lambda 函数分配公共/静态 IP 。

您唯一的好选择是部署到具有 Internet 网关的 VPC 中,并通过具有弹性 IP 的 NAT 配置来自 Lambda 子网的路由。然后您的目标主机可以将弹性 IP 列入白名单。

另见:

  • 感谢您收录我的文章! (3认同)

deo*_*sha 6

我同意 John 对静态 IP 白名单部分的回答。但是,它不会解决您的冷启动问题,因为 lambda(如果理想)实际上需要很短的时间才能启动。所以我建议你也创建一个 Cloudwatch 事件来定期点击 lambda 来解决这个问题,或者编写一个简单的代码(在 lambda 或其他地方),它会定期发送一个空请求,以便解决冷启动问题。您可以在 X-Ray 中查看改进。这是一个开销但一次性的过程。