是否可以将公共IP分配给AWS中的Lambda函数?

时间:2016-12-22 07:50:17

标签: amazon-web-services amazon-ec2 aws-lambda

我们需要在公司后端访问API,这些API只接受来自授权IP地址的呼叫。

目前,我们的移动客户端正在调用AWS Lambda函数执行某些转换,然后在分配了授权公共IP地址的EC2实例上调用另一个服务。第二个服务执行对公司后端的最终调用,将数据返回到lambda,然后返回给客户端。

这很好用,但它为我们希望避免的架构增加了一些不必要的复杂性。

是否有可能以某种方式将公共IP分配给lambda函数以避免在EC2中使用此额外服务?

谢谢,

GA

2 个答案:

答案 0 :(得分:11)

直截了当的解决方案是:

  • 创建具有弹性IP地址的NAT实例或NAT网关

  • 创建一个私有VPC子网,该子网使用NAT设备作为其默认路由

  • 在VPC中部署与该私有子网关联的Lambda函数。

创建的每个Lambda容器在该私有子网上都有一个弹性网络接口(ENI),这意味着NAT设备将成为其默认网关,这意味着NAT设备的EIP将成为其内部的源IP地址 - 为互联网绑定的原始连接。

不需要更改lambda函数代码本身。

以上是官方解决方案。

另请注意,使用当前技术,只要需要分配新的弹性网络接口(ENI),将Lambda函数放在VPC内就会对冷启动时间产生影响。

  

当Lambda函数配置为在VPC内运行时,会产生额外的ENI启动惩罚。

     

https://docs.aws.amazon.com/lambda/latest/dg/vpc.html

答案 1 :(得分:0)

你可以得到" source_ip"或者" X-Forwarded-For"来自方法请求标头。然后转换为事件,然后在lambda函数上处理它。