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