У меня есть лямбда-функция, которая использует специальное промежуточное программное обеспечение.
const middy = require('middy');
const authMiddleware = require('../../../../src/middleware/authMiddleware');
const originalHandler = (event, context, callback) => {
callback(null, {msg: "Done"});
};
module.exports.testFunction1 = middy(originalHandler).use(authMiddleware());
Я пытаюсь подключить Redis из этого промежуточного программного обеспечения, поскольку в Redis хранится токен пользователя, который я проверяю перед каждым вызовом лямбда-функции.
const authMiddleware = (config) => {
return ({
before: (handler, next) => {
handler.context.callbackWaitsForEmptyEventLoop = false;
var redis = require('redis');
var redisClient = redis.createClient('xxxx', 'xx.xx.xx');
redisClient.on('ready', function () {
console.log("Redis ready");
next();
});
},
})
}
module.exports = authMiddleware
Моя лямбда-функция возвращает тайм-аут, потому что из промежуточного программного обеспечения нет никакого обратного вызова. Я не могу вызвать handler.callback () из промежуточного программного обеспечения, потому что мне нужно вызвать next (), чтобы запустить мою лямбда-функцию.
Что мне здесь не хватает? Как подключить Redis из промежуточного ПО, а затем запустить функцию лямбда без тайм-аута?