54

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

我不知道这是配置问题还是根本不可能。

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


更新(2015 年 10 月 9 日):

亚马逊宣布了适用于 AWS Lambda 函数的 VPC。详情在这里

这意味着我们现在可以访问 AWS 中位于 VPC 安全组后面的任何资源,包括 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/

4

5 回答 5

20

自 2016 年 2 月起,AWS 允许使用 lambda 函数连接到 Elasticache。请参阅使用 AWS Lambda 访问 VPC 中的资源。这是一个如何工作的链接 -教程:配置 Lambda 函数以访问 Amazon VPC 中的 Amazon ElastiCache

于 2015-04-07T21:08:45.467 回答
4

由于以下原因,设置 HTTP 代理或 iptables 不起作用:

Redis 调用不会HTTP也不会由 HTTP 代理处理。iptables(或与此相关的任何端口转发)要么不接受域名作为目的地,要么由于每次都需要 DNS 解析而效率极低。

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

于 2015-10-08T04:36:31.707 回答
2

我尝试将 lambda 连接到 memcached elasticache,它工作正常。Redis 也应该是可行的。

要记住几件事:

  1. Lambda 和 Elasticache 必须在同一个 VPC 中。
  2. 当 lambda 在 VPC 中运行时,它将无法访问互联网(因此无法访问公共 API)。为此需要 NATGateway。
于 2018-06-22T01:51:36.067 回答
1

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

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

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

于 2015-01-17T00:58:49.537 回答
0

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

云解决方案不会有 VPC 冷启动,但会有延迟开销,因为对托管 redis 的调用是通过 Internet 进行的。当 lambda 和 redis 部署在同一区域时,额外的延迟约为 20 毫秒。这对于我的用例来说是可以管理的,我不需要担心 VPC。

于 2019-11-26T05:44:01.023 回答