我有一个使用AWS Lambda
群集的ElastiCache Redis
函数。
由于Redis
群集在VPC
中被“锁定”,因此Lambda
函数也必须位于VPC
内。
出于某种原因,如果Lambda
分配了一个IP
的{{1}},其中public subnet
- 它仍然无法与外界建立联系(互联网) ),因此无法使用Internet gateway
。
为此,他们建议使用Kinesis
网关,让NAT
连接到外部。
基本上,这对我有用 - 但我的问题是金钱。 这种解决方案对于大量数据传输来说是昂贵的,我正在寻找一些方法来降低它的价格。
这对于~$10
来说太多了,因为我的生产渠道将运行数百~30GB
/月。
如何建议我让gigabytes
函数在不使用Lambda
网关的情况下连接外部(特别是Kinesis
)?
谢谢!
答案 0 :(得分:2)
不使用NAT网关?
使用NAT 实例。
在VPC中,您必须拥有这两项内容之一才能从私有IP地址访问Internet。
NAT实例正是在VPC中总是这样做的,直到相对较新的NAT网关服务推出为止。
您还可以使用NAT网关,这是一种托管NAT服务,可提供更好的可用性,更高的带宽,并且需要更少的管理工作。对于常见用例,我们建议您使用NAT网关而不是NAT实例。
http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html
当然,它更容易,但成本更高。多很多。在这种情况下最显着的区别是,对于NAT实例,您支付固定费用使用硬件,这可能是便宜的t2.nano,5美元/月。
NAT网关服务是一种高功率解决方案,具有几乎无限的扩展容量,并且相应地定价。 NAT实例只能与您选择运行它的硬件一样好,但我发现t2.nano和t2.micro足以满足需要低于250 Mbit / s互联网连接的工作负载。
使用上面的链接了解更多信息。
答案 1 :(得分:1)
Lambda函数实例永远不会被分配公共IP地址,无论您放置它们的VPC子网类型如何.NAT网关是在VPC内部提供Lambda函数的唯一解决方案,可以访问驻留在VPC外部的资源。 VPC(像Kinesis)。
如果由于成本而无法为您工作,您可能会考虑在具有弹性IP的EC2实例上运行Redis服务器,这将允许Lambda函数在不在VPC内部的情况下进行连接。类似的替代方案是使用RedisLabs而不是ElastiCache。