从AWS Lambda函数连接到ElastiCache集群

时间:2015-01-03 20:05:34

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

是否可以从AWS Lambda函数连接到Redis ElastiCache集群?

我无法弄清楚它是否是配置问题,或者根本不可能。

PS:我从EC2实例进行了测试,我可以连接到Redis节点。此外,Lambda函数和Redis节点位于同一区域。


更新(2015年10月9日):

亚马逊宣布推出适用于AWS Lambda功能的VPC。 Details here

这意味着我们现在可以访问VPC安全组后面的AWS中的任何资源,包括ElastiCache和RDS计算机。

更新(2016年2月11日): 亚马逊为AWS Lambda推出了VPC。

https://aws.amazon.com/about-aws/whats-new/2016/02/access-resources-within-a-vpc-using-aws-lambda/

5 个答案:

答案 0 :(得分:16)

截至2016年2月,AWS允许使用lambda函数连接到Elasticache。请参阅Access Resources within a VPC using AWS Lambda。以下是它的工作原理 - Tutorial: Configuring a Lambda Function to Access Amazon ElastiCache in an Amazon VPC

答案 1 :(得分:3)

设置HTTP代理或iptables不会起作用,原因如下:

Redis调用不是HTTP,HTTP代理不会处理。 iptables(或任何端口转发)将不会接受域名作为目标,或者由于每次都需要DNS解析而效率极低。

最方便的方法是在EC2计算机上安装twemproxy并通过它来路由您的请求。作为奖励,您突然也部署了一个非常棒的分片策略。

答案 2 :(得分:1)

我遇到了同样的问题。我没有找到直接的解决方案,而是使用Lambda函数连接到使用socket.io的EC2服务器,这非常简单并向该EC2服务器发出事件。

当EC2服务器收到事件时,它执行了必要的Redis任务(生成图像缩略图后清理数据库)。

希望这有帮助!如果有人发现如何直接从Lambda连接到ElastiCache,我仍然很想知道!

答案 3 :(得分:0)

我尝试将lambda连接到内存缓存的Elasticache,并且工作正常。 Redis也应该可行。

要记住的事情:

  1. Lambda和Elasticache必须在同一VPC中。
  2. 在VPC中运行lambda时,它将无法访问Internet(因此无法访问公共API)。为此需要NATGateway。

答案 4 :(得分:0)

您可以使用(Redislabs)托管云解决方案,该解决方案无需VPC即可连接。

不会使用云解决方案进行VPC冷启动,但是会产生延迟开销,因为对托管Redis的调用是通过Internet进行的。当lambda和redis部署在同一区域时,附加延迟大约为20 ms。对于我的用例,这是可管理的,并且我不必担心VPC。