是否可以从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/
答案 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也应该可行。
要记住的事情:
答案 4 :(得分:0)
您可以使用(Redislabs)托管云解决方案,该解决方案无需VPC即可连接。
不会使用云解决方案进行VPC冷启动,但是会产生延迟开销,因为对托管Redis的调用是通过Internet进行的。当lambda和redis部署在同一区域时,附加延迟大约为20 ms。对于我的用例,这是可管理的,并且我不必担心VPC。