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

时间:2019-02-15 13:35:47

标签: amazon-web-services aws-lambda ip serverless

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

我看过下面的“ AWS IP地址”页面,但是没有明确提及API网关或Lambda。

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

是否有人在此之前遇到过并找到解决方案。出于此解决方案的目的,我无法将API网关和Lambda放入VPC。

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:3)

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

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

如果不可能,则使用VPC-使用弹性IP创建NAT,将Lambda启动到该VPC,然后将其所有出站流量路由通过NAT。然后在远程API服务器上将NAT的弹性IP列入白名单。示例herehere

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

答案 1 :(得分:1)

令人沮丧的是,确保Lambda函数使用静态ip 而不会受到攻击的唯一方法是将Lambda放入VPC内,使用弹性IP创建NAT,还有许多其他答案很好地解释。

但是,在我所熟悉的地区,即使流量很少,NAT每月的费用也大约为40美元。对于某些用例,例如在您需要多个开发/测试/暂存环境的情况下,这可能会导致成本过高。

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

这是一些额外的麻烦,可能会引入一些应该缓解的安全漏洞(例如,当心在Lambda函数中存储SSH密钥或密码,请确保安全组紧密),但我想将其发布为可能的解决方法适用于需要经济高效的解决方法以连接到强制执行允许列表规则的端点的开发人员。