在本地测试 Elasticache 和无服务器 AWS Lambda

问题描述 投票:0回答:2

我正在使用 serverless 使用 Nodejs 模板创建 lambda 函数。

  1. 为了连接到我的 Elasticache Redis,我设置了一个 VPC 并添加了安全组和子网 ID,以及将区域添加到我的 lambda
    serverless.yml
  2. 我部署了它并确认我可以设置并从 Redis 获取密钥。

当我尝试

serverless invoke local -f functionName
时,它总是超时,所以我必须部署它来测试它。

是否可以在本地使用

serverless
进行测试?

node.js amazon-web-services aws-lambda amazon-elasticache serverless-framework
2个回答
8
投票

默认情况下,无法从外部 AWS 环境直接访问 Elasticache。根据他们的文档,该服务被设计为只能从 AWS 内部访问。在您的情况下,

serverless invoke local
超时,因为连接本身无法建立并且 lambda 函数超时。因此,您无法按照您尝试的方式在本地运行调用来测试此连接。

要从本地计算机连接到 Elasticache redis,您可以使用公有子网中的 NAT 实例并设置安全组以打开正确的端口并启用 IP 转发以允许连接到您的 redis 缓存集群。步骤在here给出。

但是,我只需在本地安装 Redis 并使用环境变量更改连接字符串以连接到本地计算机上的本地 Redis 以及在 lambda 上运行时的实际 Elasticache 集群。


0
投票

我将这个链接留在这里,因为当我遇到这个问题时它对我有帮助:

https://github.com/aws/aws-sam-cli/issues/318#issuecomment-377770815

我无法从 Lambda 访问 Elasticache(全部通过 Localstack 进行本地访问),发生这种情况是因为它们无法通过 localhost 进行内部通信

© www.soinside.com 2019 - 2024. All rights reserved.