Как подключиться в Redis с помощью Auth / Password NodeJs для AWS Lambda?

Я делаю лямбда-функцию для токенов проверки в AWS Api Gateway. Однако мне нужно подключиться к 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"}

Кто-нибудь может мне помочь?


person Tiago Costa    schedule 08.06.2018    source источник
comment
Находится ли сервер Redis в том же VPC, что и функция Lambda? Настроена ли группа безопасности, назначенная серверу Redis, на разрешение подключений с помощью функции Lambda?   -  person Mark B    schedule 08.06.2018
comment
безопасность с 0.0.0.0/0 разрешить все внешние приложения, такие как spring, могут подключаться, но в случае Spring, например, в свойствах есть spring.redis.ssl = true и spring.redis.password = 3455   -  person Tiago Costa    schedule 08.06.2018
comment
Тайм-аут звучит как проблема сети, а не проблема аутентификации. Вы не полностью ответили на мой вопрос, находятся ли функция Lambda и сервер Redis в одном VPC?   -  person Mark B    schedule 08.06.2018


Ответы (2)


Сообщение об ошибке выглядит так, будто лямбда-функция работает в подсети / vpc, которая не имеет исходящего доступа к серверу Redis. Попробуйте один из двух вариантов, чтобы найти первопричину

1- попробуйте запустить код со своего локального компьютера и проверьте, можете ли вы подключиться к серверу Redis.

2- удалить настройку vpc в лямбде для выполнения лямбда за пределами vpc.

person winter    schedule 10.06.2018

По словам других, проблема может быть в VPC, но на ум приходит еще одна вещь.

Это тайм-аут: тайм-аут соединения Redis или тайм-аут Lambda? Потому что соединения redis загружают цикл nodejs. А Lambda по умолчанию ждет, пока все прояснится.

Если это так, попробуйте установить context.callbackWaitsForEmtpyEventLoop = false в обработчике функции. Или перед обратным вызовом отключите соединение Redis.

person Can Sahin    schedule 10.06.2018