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

Amazon web services 有没有办法在没有VPC的情况下将静态IP分配给AWS Lambda?,amazon-web-services,aws-lambda,aws-api-gateway,amazon-vpc,cold-start,Amazon Web Services,Aws Lambda,Aws Api Gateway,Amazon Vpc,Cold Start,我希望将静态IP分配给我的Lambda,该Lambda通过API网关调用。这是必需的,因为我从这个lambda调用的下游系统只接受来自白名单IP的web请求 我通过与我的lambda关联的VPC成功实现了这一点。但是VPC引入了一个糟糕的冷启动时间,有时范围为12-16秒。因此,我正在寻找一种方法来防止VPC冷启动,但同时为lambda分配一个静态IP。您不能为任何lambda功能分配公共/静态IP 您唯一的好选择是部署到具有Internet网关的VPC中,并配置从Lambda子网到具有弹性IP

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


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

您不能为任何lambda功能分配公共/静态IP

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

另见:

    • 您需要:

      • 创建一个具有Internet网关、公用子网和专用子网的VPC
      • 将AWS Lambda函数连接到专用子网
      • 在公用子网中启动NAT网关,并更新专用子网的路由表以使用NAT网关
      NAT网关将使用弹性IP地址(静态IP地址)。从Lambda功能到Internet的所有流量都将来自此IP地址,该地址可用于白名单


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

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

      在没有VPC的情况下分配静态IP地址的方法是AWS应用程序负载平衡器:

    • 转到负载平衡器
    • 选择应用程序负载平衡器
    • 选择Lambda作为目标

    • 有关详细说明,请访问。

      谢谢。我很确定VPC会帮我分配一个静态IP。但我不会缓解冷启动时间一点。所以,正如我在问题中所说,我不想走专有网络的路线。我将尝试定期向lambda提出请求。如果答案对您有效,您可能希望接受:-)VPC中的冷启动时间现在应该大大减少,因为需要VPC,因为它需要为出站internet访问添加NAT,并且NAT对于非常低的容量来说非常昂贵应用程序,例如测试环境。lambda通过DX调用prem服务器的场景如何?这一步骤是否也适用于此备选方案?或者白名单应该是子网CIDR范围吗?@jbooker上述内容对于直接连接不起作用,因为流量不会通过NAT网关(假设将其配置为私有子网连接到DX)。我喜欢你将Lambda使用的子网的CIDR白名单的想法。谢谢你John!你太棒了!我最近在我关注的所有帖子上都看到了你的答案,你是最棒的!!我发誓!来自您的高质量回答和评论,始终只要我们有此设置,是否可以从该专有网络之外的另一个Lambda调用私有子网中的Lambda?如果是这样的话,我们可以使用这个Lambda作为路由请求的一种方式,这样它们就可以得到一个静态IP,而不需要将我们所有的逻辑都放在Lambda/VPC中。@pir是的,那就行了。你可以在互联网上的任何地方调用Lambda函数。谢谢你包含我的文章!你好,你能详细解释一下吗?