是否可以将 public IP 分配给 AWS 中的 Lambda 函数?
Is it possible to assign a public IP to a Lambda function in AWS?
我们需要访问公司后端中的 API,这些 API 只接受来自授权 IP 地址的调用。
此刻,我们的移动客户端正在调用一个 AWS Lambda 函数,该函数执行一些转换,然后在分配了授权 public IP 地址的 EC2 实例上调用另一个服务。第二个服务执行对企业后端的最终调用,将数据返回到 lambda,然后返回到客户端。
这工作正常,但它给我们希望避免的架构增加了一些不必要的复杂性。
是否可以通过某种方式将 public IP 分配给 lambda 函数以避免在 EC2 中使用此额外服务?
谢谢,
GA
最简单的解决方法是:
使用弹性 IP 地址创建 NAT 实例或 NAT 网关
创建一个使用 NAT 设备作为其默认路由的私有 VPC 子网
在与该私有子网关联的 VPC 中部署 Lambda 函数。
创建的每个 Lambda 容器都将在该私有子网上有一个弹性网络接口 (ENI),这意味着 NAT 设备将是其默认网关,这意味着 NAT 设备的 EIP 将是其用于内部来源的源 IP 地址绑定到 Internet 的连接。
无需更改 lambda 函数代码,它本身是必需的。
以上为官方解决方案
另请注意,使用当前技术,在 VPC 中放置 Lambda 函数将对冷启动时间产生影响,任何时候都需要分配新的弹性网络接口 (ENI)。
When a Lambda function is configured to run within a VPC, it incurs an additional ENI start-up penalty.
我们需要访问公司后端中的 API,这些 API 只接受来自授权 IP 地址的调用。
此刻,我们的移动客户端正在调用一个 AWS Lambda 函数,该函数执行一些转换,然后在分配了授权 public IP 地址的 EC2 实例上调用另一个服务。第二个服务执行对企业后端的最终调用,将数据返回到 lambda,然后返回到客户端。
这工作正常,但它给我们希望避免的架构增加了一些不必要的复杂性。
是否可以通过某种方式将 public IP 分配给 lambda 函数以避免在 EC2 中使用此额外服务?
谢谢,
GA
最简单的解决方法是:
使用弹性 IP 地址创建 NAT 实例或 NAT 网关
创建一个使用 NAT 设备作为其默认路由的私有 VPC 子网
在与该私有子网关联的 VPC 中部署 Lambda 函数。
创建的每个 Lambda 容器都将在该私有子网上有一个弹性网络接口 (ENI),这意味着 NAT 设备将是其默认网关,这意味着 NAT 设备的 EIP 将是其用于内部来源的源 IP 地址绑定到 Internet 的连接。
无需更改 lambda 函数代码,它本身是必需的。
以上为官方解决方案
另请注意,使用当前技术,在 VPC 中放置 Lambda 函数将对冷启动时间产生影响,任何时候都需要分配新的弹性网络接口 (ENI)。
When a Lambda function is configured to run within a VPC, it incurs an additional ENI start-up penalty.