AWS Elasticache 与 API 网关缓存

Tre*_*ass 4 caching amazon-web-services amazon-elasticache aws-lambda aws-api-gateway

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

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

API Gateway 可以选择启用缓存,但我也将 Elasticache 作为一个选项。它们的价格相当,但 API Gateway 缓存略贵。

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

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

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

我对这种设置仍然很陌生,因此将不胜感激任何形式的帮助或指导。谢谢!

Vis*_*hal 6

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

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

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

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

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

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

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