繁体   English   中英

AWS API Gateway 和 Lambda 的公共 IP 地址(无 VPC)

[英]Public IP address for AWS API Gateway & Lambda (no VPC)

我已经配置了一个 AWS API 网关并创建了一个 Lambda 函数来连接到外部 REST API。 API Gateway 和 Lambda 不在 VPC 中,因此出口 IP 地址是随机的。 我面临的挑战是外部 REST API 位于防火墙后面,这需要将 Lambda 的 IP 地址或子网列入白名单。

我查看了 AWS IP 地址页面(如下),但是没有明确提及 API Gateway 或 Lambda。

https://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html#filter-json-file

有没有人以前遇到过这个问题并找到了解决办法。 出于此解决方案的目的,我不能将 API 网关和 Lambda 放在 VPC 中。

任何帮助将不胜感激!

API Gateway 似乎与此讨论无关。 如果我理解您的问题,您正在尝试从 Lambda 函数向远程 API 服务器发出 API 请求,并且您希望这些请求来自已知 IP 地址,以便您可以将该 IP 列入远程服务器的白名单。

我要说的第一件事是不要使用 IP 白名单; 请改用经过身份验证的 API 请求。

如果这不可能,则将 VPC 与 Internet 网关 (IGW) 结合使用。 创建 NAT 和弹性 IP,将 Lambda 启动到该 VPC 的私有子网中,并将子网的非本地流量路由到 NAT。 然后在远程 API 服务器上将 NAT 的弹性 IP 列入白名单。 这里这里的例子。

我知道您说过“不能将 [...] Lambdas 放入 VPC”,但如果不这样做,则您无法控制原始 IP 地址。

这是令人沮丧的是,以确保lambda函数的唯一方式是使用静态IP没有一个黑客是把LAMBDA一个VPC中,创建一个有弹性IP在NAT,因为许多其他的答案很好地解释。

但是,在我熟悉的地区,即使流量很小,NAT 的费用也约为每月 40 美元。 对于某些用例,这可能成本过高,例如如果您需要多个开发/测试/登台环境。

一种可能的解决方法(应谨慎使用)是创建一个具有弹性 IP(提供静态 IP 地址)的微型 EC2 实例,然后选择代理/路由,以便您可以通过 Lambda 函数的隧道进行 HTTP 调用通过 EC2 实例。 (例如,从 Lambda 函数 SSH 到 EC2 实例,然后从 EC2 到受许可名单保护的端点的 CURL)

这是一些额外的障碍,可能会引入应该减轻的安全漏洞(例如注意在 Lambda 函数中存储 SSH 密钥或密码,确保安全组紧密)但我想将此作为任何开发人员的可能解决方法发布谁需要经济高效的解决方法来满足连接到强制执行许可名单规则的端点的要求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM