【问题标题】:How connect in Redis with Auth/Password NodeJs for AWS Lambda?如何在 Redis 中使用 AWS Lambda 的 Auth/Password NodeJs 连接?
【发布时间】:2018-06-08 18:06:18
【问题描述】:

我正在为 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"}

有人可以帮我吗?

【问题讨论】:

  • Redis 服务器和 Lambda 函数在同一个 VPC 中吗?分配给 Redis 服务器的安全组是否配置为允许来自 Lambda 函数的连接?
  • 安全性为 0.0.0.0/0 允许所有外部应用程序(如 spring)能够连接,但以 spring 为例,在属性中有 spring.redis.ssl=true 和 spring .redis.password="3455"
  • 超时听起来像是网络问题,而不是身份验证问题。您没有完全回答我的问题,Lambda 函数和 Redis 服务器在同一个 VPC 中吗?

标签: node.js redis aws-lambda node-redis


【解决方案1】:

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

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

2- 移除 lambda 中的 vpc 设置以在 vpc 之外执行 lambda。

【讨论】:

    【解决方案2】:

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

    这个超时是 redis 连接超时还是 Lambda 超时?因为,redis 连接使 nodejs 循环保持忙碌。并且 Lambda 默认会等待一切清理完毕。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-15
      • 2013-04-26
      • 2021-11-08
      • 2020-08-06
      • 1970-01-01
      • 2020-06-20
      • 2021-05-21
      • 2018-07-23
      相关资源
      最近更新 更多