在本地测试 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的主要内容,如果未能解决你的问题,请参考以下文章

为 AWS Lambda 和无服务器推荐啥本地节点版本

AWS中的高Redis延迟(ElastiCache)

使用 Elastic BeanStalk + Django 设置 ElastiCache Redis

有状态服务和无状态服务

AWS:为什么Elasticache和RDS需要VPC,而Elasticsearch和DynamoDb则不需要

Opsworks:Rails 层连接到 Elasticache:Redis