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