我希望每次提出请求时都能获得新的公共IP。是否有可能故意触发我的容器回收,或以其他方式导致我的IP被重新配置?
答案 0 :(得分:13)
默认情况下,根据您的配置,从VPC中的一个或多个子网内的专用IP调用Lambda函数。它没有配置公共IP#;他们被分配了私人IP。
如果要求为Lambda函数分配公共IP号,则需要configure a NAT Gateway or NAT instance来提供Internet访问,因此需要提供公共IP。然后,Lambda流量将归因于NAT网关/实例的公共IP地址。
弹性IP地址分配给定NAT Gateway,但无法重新分配 - 它是静态的。因此,NAT网关无法满足您的需求。
您必须使用NAT instance。然后,Lambda函数需要在每个请求结束时终止/启动NAT实例。这将导致EC2为您的NAT实例分配新的公共IP - 假设它启动的子网配置为在启动时自动分配IP#。
鉴于此,您必须在每次请求后重新启动NAT实例,以便为其分配新的IP#。 此流程允许每次将每个请求归因于新的公共IP#。
请注意,在NAT实例启动/终止阶段,您的Lambda函数无法访问互联网。您可以考虑使用简单队列服务对Lambda函数进行排队,以防止争用NAT实例。
缩放也会成为一个问题,因为这些函数都需要NAT实例可用于每次调用。如果需要考虑正常运行时间和可用性,请在NAT服务级别would need to implement a HA solution。
答案 1 :(得分:2)
来自AWS lambda开发人员指南:“默认情况下,Lambda在安全的VPC中运行您的功能,并可以访问AWS服务和互联网。该VPC由Lambda拥有,并且未连接到您帐户的默认VPC。”例如,仅当我需要静态IP来将防火墙上的访问列入白名单时,才使用NAT网关方法。