【问题标题】:Testing Elasticache and Serverless AWS Lambda locally在本地测试 Elasticache 和无服务器 AWS Lambda
【发布时间】:2017-10-07 21:06:19
【问题描述】:
我正在使用无服务器来使用 nodejs 模板创建 lambda 函数。
- 为了连接到我的 Elasticache Redis,我设置了一个 VPC 并将安全组和子网 ID 以及区域添加到我的 lambda
serverless.yml。
- 我部署了它并确认我可以从 Redis 设置和获取密钥。
当我尝试serverless invoke local -f functionName时,它总是超时,所以我必须部署它来测试它。
是否可以在本地使用 serverless 进行测试?
【问题讨论】:
标签:
node.js
amazon-web-services
aws-lambda
amazon-elasticache
serverless-framework
【解决方案1】:
默认情况下,无法从外部 AWS 环境直接访问 Elasticache。根据他们的documentation,该服务旨在仅从 AWS 内部访问。在您的情况下,serverless invoke local 超时,因为无法建立连接本身并且 lambda 函数超时。因此,您无法按照您尝试的方式在本地运行调用来测试此连接。
要从本地计算机连接到 Elasticache redis,您可以在公有子网中使用 NAT 实例并设置安全组以打开正确的端口并启用 IP 转发以允许连接到您的 redis 缓存集群。步骤为here。
但是,我只是在本地安装 redis 并使用环境变量更改连接字符串以连接到本地机器上的本地 redis 和在 lambda 上运行时的实际 Elasticache 集群。