从AWS Lambda函数连接到ElastiCache集群

57

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

我无法确定这是配置问题还是根本不可能。

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


更新(2015年10月9日):

亚马逊宣布为AWS Lambda函数提供VPC。详细信息请参见此处

这意味着我们现在可以访问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/


1
我知道Lambda可以连接到外部服务。问题是ElastiCache是否允许Lambda函数连接到它的集群。 - Mircea Soaica
2
如果您的安全组设置正确,则从Elastic Cache的角度来看没有任何区别。这只是一个普通的TCP连接——来自Lambda或任何其他服务的连接没有任何区别。 - Sébastien Stormacq
2
所有的ElastiCache集群只能从Amazon EC2实例访问。 - Rohit Chatterjee
1
AWS Lambda宣布了VPC计划,计划于“2015年底”发布,但没有发布。现在已经进入2016年,仍然没有ElasticCache。 - David Betts
以下是AWS提供的教程,介绍如何从AWS Lambda中访问VPC中的资源(例如ElastiCache集群或RDS实例):http://docs.aws.amazon.com/lambda/latest/dg/vpc-tutorials.html - Aditya
显示剩余2条评论
4个回答

21
截至2016年2月,AWS允许使用Lambda函数连接Elasticache。请参阅“使用AWS Lambda访问VPC内的资源”。以下是它的工作方式-“教程:配置Lambda函数以访问Amazon VPC中的Amazon ElastiCache”。链接链接

5
截至2016年2月,AWS宣布VPC for Lambda - Jordan Arsenault
7
在VPC内使用Lambda函数时需要小心。很容易迅速遇到性能问题。尽管我们在Lambda函数中提供了4个不同的子网,并有足够的IP地址可供使用,但由于ENI容量有限,我们目前只能处理25个并发Lambda调用。我们正在与AWS支持团队进行调查。 - JeremyTM
@JeremyTM,你找到解决方案了吗?计划让Lambda函数达到每秒3000个请求。 - strix25
3
@strix25 是的,2019年9月后不久他们为 Lambda 函数升级了 VPC 网络,我们的问题得到了解决。这是有关此的博客文章:https://aws.amazon.com/blogs/compute/announcing-improved-vpc-networking-for-aws-lambda-functions/ - JeremyTM

5
我已经尝试将lambda连接到memcached elasticache,它运行得很好。Redis也应该可以实现。
需要记住的几件事情:
1. Lambda和Elasticache必须在同一个VPC中。 2. 当Lambda在VPC中运行时,它无法访问Internet(因此无法访问公共API)。这需要使用NATGateway。

4

以下是为什么设置HTTP代理或iptables无法工作:

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

最好和方便的方法是在EC2机器上安装twemproxy并通过它路由您的请求。作为奖励,您还突然部署了一个很棒的分片策略。


正是我在寻找的,感谢分享!我们在 Amazon RDS 上使用 pgbouncer 做了类似的事情,现在正在寻找 Elasticache 的解决方案。将我们的 Lambda 放入 VPC 会因为额外的启动时间而导致无法接受的延迟,因为需要设置网络接口。 - rococo

2
我遇到了同样的问题。虽然没有找到直接的解决方案,但我使用了一个Lambda函数来连接使用socket.io的EC2服务器,这很容易并向该EC2服务器发出事件。
当EC2服务器收到事件时,它会执行必要的Redis任务(图像缩略图生成后的数据库清理)。
希望这可以帮助!如果有人发现如何直接从Lambda连接到ElastiCache,我仍然很想知道!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接