我们需要在公司后端访问API,这些API只接受来自授权IP地址的呼叫。
目前,我们的移动客户端正在调用AWS Lambda函数执行某些转换,然后在分配了授权公共IP地址的EC2实例上调用另一个服务。第二个服务执行对公司后端的最终调用,将数据返回到lambda,然后返回给客户端。
这很好用,但它为我们希望避免的架构增加了一些不必要的复杂性。
是否有可能以某种方式将公共IP分配给lambda函数以避免在EC2中使用此额外服务?
谢谢,
GA
答案 0 :(得分:11)
直截了当的解决方案是:
创建具有弹性IP地址的NAT实例或NAT网关
创建一个私有VPC子网,该子网使用NAT设备作为其默认路由
在VPC中部署与该私有子网关联的Lambda函数。
创建的每个Lambda容器在该私有子网上都有一个弹性网络接口(ENI),这意味着NAT设备将成为其默认网关,这意味着NAT设备的EIP将成为其内部的源IP地址 - 为互联网绑定的原始连接。
不需要更改lambda函数代码本身。
以上是官方解决方案。
另请注意,使用当前技术,只要需要分配新的弹性网络接口(ENI),将Lambda函数放在VPC内就会对冷启动时间产生影响。
当Lambda函数配置为在VPC内运行时,会产生额外的ENI启动惩罚。
答案 1 :(得分:0)
你可以得到" source_ip"或者" X-Forwarded-For"来自方法请求标头。然后转换为事件,然后在lambda函数上处理它。