我可以在每个请求上更改我的 AWS Lambda 公共 IP 吗?

Posted

技术标签:

【中文标题】我可以在每个请求上更改我的 AWS Lambda 公共 IP 吗?【英文标题】:Can I change my AWS Lambda's public IP on every request? 【发布时间】:2016-10-13 23:35:16 【问题描述】:

每次我提出请求时,我都希望获得一个新的公共 IP。是否可以有目的地触发我的 IP 重新配置?

【问题讨论】:

我不认为这是可能的......因为他们用完了 IPv4 地址。你可以要求支持这是可能的。我唯一知道的是您必须重新启动服务器才能获得新 IP AWS Lambda 首先是否有公共 IP? 【参考方案1】:

来自 AWS lambda 开发人员指南:“默认情况下,Lambda 在安全的 VPC 中运行您的函数,可以访问 AWS 服务和互联网。 VPC 归 Lambda 所有,不连接到您账户的默认 VPC。”例如,仅当我需要静态 IP 来将防火墙上的访问列入白名单时,我才使用 NAT 网关方法。

【讨论】:

【参考方案2】:

默认情况下,根据您的配置,Lambda 函数会从您的 VPC 中一个或多个子网内的私有 IP 调用。没有配置公网IP#;他们被分配了私有 IP。

如果要求为 Lambda 函数分配一个公共 IP 号,您需要configure a NAT Gateway or NAT instance 来提供互联网访问,因此需要一个公共 IP。然后,Lambda 流量将归属于 NAT 网关/实例的公共 IP 地址。

使用给定的NAT Gateway 分配了弹性 IP 地址,但无法重新分配 - 它是静态的。因此,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。

【讨论】:

以上是关于我可以在每个请求上更改我的 AWS Lambda 公共 IP 吗?的主要内容,如果未能解决你的问题,请参考以下文章

在 aws lambda 中获取请求参数

在AWS Lambda中获得“内部流位置意外更改”

如何为 AWS RDS 凭证创建配置文件并将其导入我的 AWS Lambda API?

如何从AWS Lambda检索数据并将其显示在AWS S3托管的静态网站上?

AWS Lambda 中的 HTTP 请求

通过AWS lambda在EC2实例上执行python脚本