我正在为通过API网关调用的Lambda分配一个静态IP。这是必需的,因为我从此lambda调用的下游系统仅接受来自列入白名单的IP的Web请求。
我通过与lambda相关联的VPC成功实现了这一目标。但是VPC引入了不良的冷启动时间,有时范围为12-16秒。因此,我正在寻找一种防止VPC冷启动的方法,但同时要为lambda分配一个静态IP。
答案 0 :(得分:3)
您不能将公共/静态IP分配给任何 Lambda函数。
您唯一的好选择是使用Internet网关部署到VPC中,并配置从Lambda子网通过具有弹性IP的NAT进行路由。然后您的目标主机可以将弹性IP列入白名单。
另请参阅:
答案 1 :(得分:2)
您将需要:
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。