如何在 Redis 中连接 Auth/Password NodeJs for AWS Lambda?

How connect in Redis with Auth/Password NodeJs for AWS Lambda?

我正在为 AWS Api 网关中的验证令牌创建一个 lambda 函数。但是,我需要安全地连接到 redis,但是这个配置总是失败:

var client = require('redis').createClient({
      host : 'redis-dev.amazonaws.com',
      port : 6379,
      no_ready_check: true,
      auth_pass: 'mypassword#c$blx!Na'                                                                                                                                                    
});

错误:

{ "errorMessage": "2018-06-08T17:55:38.344Z 23a4f9da-6b45-11e8-abe5-6119b1378dff Task timed out after 5.01 seconds"}

谁能帮帮我?

错误消息看起来像 lambda 是 运行 在 subnet/vpc 中,它没有对 redis 服务器的出站访问权限。 尝试 2 个选项之一来查找根本原因

1- 尝试 运行 来自本地计算机的代码并检查是否可以连接到 redis 服务器。

2- 删除 lambda 中的 vpc 设置以在 vpc 外部执行 lambda。

正如其他人所说,VPC 可能是问题所在,但我想到了另一件事。

这个超时是redis连接超时还是Lambda超时?因为,redis 连接使 nodejs 循环繁忙。而 Lambda 默认情况下会等待一切清理完毕。

如果是,请尝试设置 context.callbackWaitsForEmtpyEventLoop = false 在函数处理程序处。或者在回调之前终止 redis 连接。