嘿伙计们在AWS Api Gateway中为验证令牌制作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"}
任何可以帮助我吗?
答案 0 :(得分:1)
错误消息看起来像lambda正在子网/ vpc中运行,该子网没有对redis服务器的出站访问权限。 尝试使用2个选项中的一个来查找根本原因
1-尝试从本地计算机运行代码并检查是否可以连接到redis服务器。
2-删除lambda中的vpc设置以在vpc外执行lambda。
答案 1 :(得分:1)
正如其他人所说,VPC可能是个问题,但还有另外一个想法。
此超时是redis连接超时还是Lambda超时?因为,redis连接使nodejs循环忙。并且Lambda默认等待清理所有内容。
如果是,请尝试设置
context.callbackWaitsForEmtpyEventLoop = false
在函数处理程序中。或者在回调之前杀死redis连接。