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

Posted

技术标签:

【中文标题】当我的 aws lambda 函数执行时如何选择弹性 IP【英文标题】:How to choose Elastic IP when my aws lambda function execute 【发布时间】:2019-09-10 06:27:14 【问题描述】:

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

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

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

【问题讨论】:

“选择”是什么意思?举个例子 为什么您希望这样做?对于想要使用多个公共 IP 地址的人来说,大多数用例是对阻止来自给定 IP 地址的过多流量的网站执行抓取。我们不支持或鼓励违反网站的条款和条件。 【参考方案1】:

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

嗯,实际上你可以,但我不建议这样做。当 Lambda 函数与 VPC 关联时,它通过弹性网络接口 (ENI) 进行连接。 可以将 EIP 附加到 ENI。如果 Internet 连接到公共子网,这也会授予对 Internet 的访问权限。

那为什么要避免呢?因为 Lambda 可能会创建额外的 ENI,尤其是在频繁调用和并行运行 Lambda 函数的情况下。这意味着它不会有一致的 ENI。

另一种方法是:

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

【讨论】:

您能提供免费解决方案的链接吗?在不使用 NAT 网关或 NAT 实例的情况下将弹性 IP 附加到 Lambda 函数【参考方案2】:

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

【讨论】:

您能提供免费解决方案的链接吗?在不使用 NAT 网关或 NAT 实例的情况下将弹性 IP 附加到 Lambda 函数

以上是关于当我的 aws lambda 函数执行时如何选择弹性 IP的主要内容,如果未能解决你的问题,请参考以下文章

从 AWS API Gateway Web 界面配置 AWS Lambda 时无法选择/查看 Lambda 函数

如何从 lambda 调用 IAM 授权的 AWS ApiGateway 端点?

AWS Cloud9:一次只部署一个 Lambda 函数

如何在另一个 lambda 之后执行 AWS lambda

C# 使用 AWS lambda 时,我可以确定函数中的析构函数会被执行吗?

无法为执行AWS :: CloudFormation :: CustomResource的aws lambda函数设置环境变量