Подключение AWS Lambda к внешнему экземпляру REDIS не работает
Я пишу функцию для подключения к экземпляру REDIS в REDISLABS. Я подключил шлюз API для вызова этого кода. Странно, но при тестировании с тестовой консоли шлюза API он не работает. К сожалению, я не вижу ошибок на тестовой консоли.
Я переместил код на локальную машину как обычный код NodeJS, и он работает без проблем. Мой код выглядит так:
exports.handler = async (event) => {
var client = require('redis').createClient({
host: 'redis-XXXXXXXX.c10.us-east-1-2.ec2.cloud.redislabs.com',
password: 'XXXXXXXXXXXXX',
port: '14021'
});
client.on('connect', () => {
return {
status: 200,
message: 'connected'
}
});
client.on('error', (error)=> {
return {
status: 404,
message: 'Something went wrong:'+ error
};
})
};
У меня настроен VPC и группа безопасности со всеми включенными портами (для тестирования) для исходящего соединения.
Может кто-нибудь подсказать, где я ошибаюсь?
1 ответ
Вы пытаетесь вернуть результат из ваших обратных вызовов, а не из самого обработчика. Я не уверен, как это сделать с async
Но без этого можно обойтись:
exports.handler = (event, context, callback) => {
var client = require('redis').createClient({
host: 'redis-XXXXXXXX.c10.us-east-1-2.ec2.cloud.redislabs.com',
password: 'XXXXXXXXXXXXX',
port: '14021'
});
client.on('connect', () => {
callback(null, {
status: 200,
message: 'connected'
});
});
client.on('error', (error)=> {
callback(null, {
status: 404,
message: 'Something went wrong:'+ error
});
});
};
Вероятно, вам следует добавить дополнительную обработку ошибок в случае возникновения исключения, чтобы вы не получили пустой ответ в этом случае.