我正在使用 serverless 使用 Nodejs 模板创建 lambda 函数。
serverless.yml
。 当我尝试
serverless invoke local -f functionName
时,它总是超时,所以我必须部署它来测试它。
是否可以在本地使用
serverless
进行测试?
默认情况下,无法从外部 AWS 环境直接访问 Elasticache。根据他们的文档,该服务被设计为只能从 AWS 内部访问。在您的情况下,
serverless invoke local
超时,因为连接本身无法建立并且 lambda 函数超时。因此,您无法按照您尝试的方式在本地运行调用来测试此连接。
要从本地计算机连接到 Elasticache redis,您可以使用公有子网中的 NAT 实例并设置安全组以打开正确的端口并启用 IP 转发以允许连接到您的 redis 缓存集群。步骤在here给出。
但是,我只需在本地安装 Redis 并使用环境变量更改连接字符串以连接到本地计算机上的本地 Redis 以及在 lambda 上运行时的实际 Elasticache 集群。
我将这个链接留在这里,因为当我遇到这个问题时它对我有帮助:
https://github.com/aws/aws-sam-cli/issues/318#issuecomment-377770815
我无法从 Lambda 访问 Elasticache(全部通过 Localstack 进行本地访问),发生这种情况是因为它们无法通过 localhost 进行内部通信