我希望为通过 API 网关调用的 Lambda 分配一个静态 IP。这是必需的,因为我从此 lambda 调用的下游系统仅接受来自白名单 IP 的 Web 请求。
我通过与我的 lambda 关联的 VPC 成功地实现了这一点。但是 VPC 引入了一个糟糕的冷启动时间,有时范围为 12-16 秒。所以我正在寻找一种方法来防止从 VPC 冷启动,但同时为 lambda 分配一个静态 IP。
我希望为通过 API 网关调用的 Lambda 分配一个静态 IP。这是必需的,因为我从此 lambda 调用的下游系统仅接受来自白名单 IP 的 Web 请求。
我通过与我的 lambda 关联的 VPC 成功地实现了这一点。但是 VPC 引入了一个糟糕的冷启动时间,有时范围为 12-16 秒。所以我正在寻找一种方法来防止从 VPC 冷启动,但同时为 lambda 分配一个静态 IP。
您将需要:
NAT 网关将使用弹性 IP 地址(即静态 IP 地址)。从 Lambda 函数到 Internet 的所有流量都将来自此 IP 地址,可以在白名单中使用。
您可能认为这对于简单地附加静态 IP 地址有点过头了,但是多个 Lambda 函数可以并行运行,并且它们可以在多个可用区中运行。通过 NAT 网关发送所有流量是确保它们都具有相同 IP 地址的唯一方法。(或者,更具体地说,每个启动 NAT 网关的 AZ 一个 IP 地址。)
您不能将公共/静态 IP 分配给任何Lambda 函数。
您唯一的好选择是部署到具有 Internet 网关的 VPC,并通过具有弹性 IP 的 NAT 从 Lambda 的子网配置路由。然后您的目标主机可以将弹性 IP 列入白名单。
另见:
我同意约翰关于静态 IP 白名单部分的回答。但是,它不会解决您的冷启动问题,因为 lambda,如果理想的话,实际上需要很短的时间来启动。因此,我建议您还创建一个 Cloudwatch 事件来定期命中 lambda 以解决此问题,或者编写一个简单的代码(在 lambda 或其他地方)定期发送一个空请求,以便解决冷启动问题。您可以在 X-Ray 中查看改进。这是一个开销但一次性的过程。