是否可以在没有VPC的情况下将静态IP分配给AWS Lambda?

时间:2019-06-19 21:40:50

标签: amazon-web-services aws-lambda aws-api-gateway vpc cold-start

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

我通过与lambda相关联的VPC成功实现了这一目标。但是VPC引入了不良的冷启动时间,有时范围为12-16秒。因此,我正在寻找一种防止VPC冷启动的方法,但同时要为lambda分配一个静态IP。

4 个答案:

答案 0 :(得分:3)

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

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

另请参阅:

答案 1 :(得分:2)

您将需要:

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

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

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

答案 2 :(得分:1)

我同意约翰的回答,称其具有静态IP白名单部分。但是,它不能解决您的冷启动问题,因为lambda(如果理想)实际上需要花费很少的时间来启动。因此,我建议您还创建一个Cloudwatch事件来定期打入lambda来解决此问题,或编写一个简单的代码(在lambda或其他地方),该代码会定期发送空请求,以便解决冷启动问题。您可以查看X射线的改进。这是一个开销,但是需要一次的过程。

答案 3 :(得分:0)

不使用VPC分配静态IP地址的方法是AWS Network balancer。