AWS Lambda 静态 IP

AWS Lambda static IP

我正在尝试访问外部 MyQSL 数据库(不是 AWS RDS),我需要一个静态 IP 才能打开防火墙以接受连接。是否可以使用 Lambda 实例设置静态 IP?如果不是,还有哪些其他选择?

为此,您需要将 Lambda 函数部署到 VPC 中,并在 VPC 内提供 NAT 网关。然后为 NAT 网关分配一个弹性 IP(静态 IP)。这两个链接逐步描述了它:

不,这不可能。

你应该做的是:

  • 将 Lambda 函数部署到 VPC 的私有子网中
  • 将 NAT 网关(或 NAT 实例)部署到 VPC 的 public 子网中
  • 在 VPC 中部署互联网网关
  • 给 NAT 一个弹性 IP
  • 使 NAT 成为 Lambda 子网的默认路由
  • 在远程防火墙将 NAT 的弹性 IP 列入白名单

我必须每隔一两年做一次,但总是忘记怎么做 :) 幸运的是,我发现 AWS 现在有一个向导可以引导您完成这个过程:https://ap-southeast-2.console.aws.amazon.com/vpc/home?region=ap-southeast-2#wizardFullpagePublicAndPrivate:

向导没有找到我的弹性 IP 分配 ID,所以我不得不从 VPC 控制台的弹性 IP 部分手动粘贴它,但之后一切正常。 https://ap-southeast-2.console.aws.amazon.com/vpc/home?region=ap-southeast-2#Addresses:sort=PublicIp

然后您只需设置 lambda 函数即可使用该 VPC。唯一剩下的陷阱是 select 向导创建的私有子网,而不是 public 子网(当然)。

如果您使用 SAM 而不是控制台部署 Lambda 函数,您可以通过在 SAM 模板中包含 Policy 和 VpcConfig 部分来指示您的函数使用 VPC,如下所示。

再过一两年,当我不得不再次这样做时,我希望能找到这个答案:)