AWS Elasticache 与 API 网关缓存

AWS Elasticache Vs API Gateway Cache

我是使用 AWS Lambda 的无服务器架构的新手,并且仍在尝试弄清楚其中的一些部分如何组合在一起。我已将我的网站从 EC2(React 客户端和节点 API)转换为无服务器架构。 React 客户端现在使用 s3 静态网络托管,并且 API 已转换为使用 AWS Lambda 和 API 网关。

在我之前的实现中,我使用 redis 作为缓存来缓存来自其他第三方 API 的响应。

API 网关可以选择启用缓存,但我也将 Elasticache 作为一个选项进行了研究。它们的价格相当,API 网关缓存稍微贵一些。

我在尝试使用 Elasticache 时 运行 遇到的一个问题是它需要 运行 在 VPC 中,我无法再呼叫我的第三方 API的。

我想知道使用一个比另一个有什么好处吗?现在我缓存的主要目的是减少对 API 的请求,但这可能会随着时间的推移而改变。让一个 Lambda 专门用于首先检查 Elasticache 以查看是否存储了一个值,如果没有触发另一个 Lambda 从 API 检索信息是否有意义,或者这是否可能。或者对于我的用例,API 网关缓存是更好的选择吗?

或者可能是一个完全不同的解决方案。有点遗憾,主要是其他所有东西都符合免费套餐的条件,但拥有某种缓存每月会增加大约 15 美元。

我对这种设置还是很陌生,所以如果能提供任何帮助或指导,我将不胜感激。谢谢!

我想知道使用一个比另一个有什么好处吗?

Apigateway 在内部使用 Elasticache 来支持缓存,因此在功能上它们的行为方式相同。使用 api 网关缓存的优点是 ApiGateway 在调用后端 lambda 之前会检查 chache,因此您可以节省 lambda 调用以响应由缓存提供的响应的成本。

另一个区别是,当您使用 api 网关缓存时,缓存查找时间将不计入缓存未命中情况的“29 秒集成超时”限制。

现在我缓存的主要目的是减少对 API 的请求,但这可能会随着时间的推移而改变。

我会建议您根据当前用例做出有关缓存的决定。您可能会使用全新的缓存或不同的解决方案来满足其他缓存需求。

让 Lambda 专门用于首先检查 Elasticache 以查看是否存储了值,如果没有触发另一个 Lambda 从 API 检索信息是否有意义这甚至可能。或者对于我的用例,API 网关缓存是更好的选择吗?

一般来说,我不会建议为了检查缓存值而增加额外的lambda(只是为了避免延迟和加剧lambda的冷启动问题)。无论哪种方式,如上所述,即使对于由缓存提供服务的请求,您最终也会为 lambda 调用付费。如果您使用 api 网关缓存,缓存的请求甚至不会到达 lambda。