当我的 aws lambda 函数执行时如何选择弹性 IP

How to choose Elastic IP when my aws lambda function execute

我想在我的 lambda 函数执行时 select 我自己的特定弹性 IP。

我的服务必须根据用户的属性响应多种情况。 我可以在 lambda 函数中编写代码,可以选择我自己的特定弹性 IP 吗?

我搜索过这个。但旧信息说它不能做。 但最近我听说可以使用网络负载均衡器或应用程序负载均衡器。 但我不知道如何使用它来解决问题。

没有。您不能将弹性 IP (EIP) 地址与 AWS Lambda 函数相关联。

好吧,实际上你可以,但我不推荐它。当 Lambda 函数与 VPC 关联时,它通过弹性网络接口 (ENI) 进行连接。 可以将 EIP 附加到 ENI。如果连接到 public 子网,这也授予访问 Internet 的权限。

那为什么要避免呢?因为 Lambda 可能会创建额外的 ENI,特别是如果 Lambda 函数被频繁调用并且 运行 并行。这意味着它不会有一致的 ENI。

另一种方法是:

  • 将 AWS Lambda 函数附加到私有子网
  • NAT 网关 放入 public 子网
  • 将弹性 IP 地址与 NAT 网关相关联
  • 从 Lambda 函数到 Internet 的所有流量都将来自 NAT 网关的 EIP(但是,我认为您无法更改该 EIP)

查看@John Rotenstein 的回复:对于小型系统,对同一个 lambda 的有限调用向 ENI 添加一个 lambda 的 EIP 是可行的——如果你在 lambda 前面放一个队列来处理请求和将 lambda 的并发数限制为 1。这比每月使用 NAT 网关(节省大约 30 美元)便宜。对于较大的系统,这可能不是问题,您可能需要多个并发 - 在这种情况下,NAT 网关是唯一的出路。