AWS Elasticache Vs API Gateway Cache
我是使用AWS Lambda的无服务器架构的新手,但仍在尝试弄清楚其中的某些部分是如何组合在一起的。我已经将网站从EC2(React客户端和节点API)转换为无服务器架构。 React Client现在正在使用s3静态网站托管,并且该API已转换为使用AWS Lambda和API Gateway。
在我以前的实现中,我使用redis作为缓存来缓存来自其他第三方API的响应。
API网关可以选择启用缓存,但是我也选择了Elasticache作为选项。它们的价格都差不多,API Gateway缓存的价格稍高一些。
在尝试使用Elasticache时遇到的一个问题是它需要在VPC中运行,并且我无法再调用第三方API了。
我想知道一个使用另一个是否有好处?现在,我的缓存的主要目的是减少对API的请求,但是随着时间的推移可能会发生变化。有一个专用于检查Elasticache的Lambda是否有意义,如果它不触发另一个Lambda从API检索信息,则是否有可能首先检查Elasticache?或者对于我的用例,API网关缓存会是更好的选择吗?
或者可能是一个完全不同的解决方案。有点可惜的是,基本上所有其他东西都符合免费套餐的资格,但是拥有某种缓存将每月增加约15美元。
对于这种设置,我还是很陌生,因此非常感谢您提供任何帮助或指导。谢谢!
我想知道一个使用另一个是否有好处?
Apigateway内部使用Elasticache支持缓存,因此在功能上它们两者的行为均相同。使用api网关缓存的优点是ApiGateway在调用后端lambda之前检查了chache,从而节省了由缓存提供服务的lambda调用的响应成本。
另一个区别是,当您使用api网关缓存时,对于缓存未命中情况,缓存查找时间将不计入" 29s集成超时"限制。
现在,我的缓存的主要目的是减少对API的请求,但是随着时间的推移可能会发生变化。
我建议您根据当前用例对缓存做出决定。您可能使用全新的缓存或其他解决方案来满足其他缓存要求。
让Lambda专用于首先检查Elasticache来查看是否存储了值是否有意义,如果不触发另一个Lambda从API检索信息,是否可行?或者对于我的用例,API网关缓存会是更好的选择吗?
通常,我不建议仅使用额外的lambda来检查缓存值(只是为了避免延迟并加剧lambda的冷启动问题)。无论哪种方式,如上所述,您都将最终为lambda调用付费,即使是对于由缓存提供服务的请求也是如此。如果您使用api网关缓存,则缓存的请求甚至不会到达lambda。