无服务器应用程序中的缓存失效

Cache invalidation in serverless applications

我正在尝试使用 AWS lambda、API 网关和 Dynamo 作为数据存储来实现具有 GET 和 PUT API 的用户服务

GET API 将获取给定用户 ID 的数据,PUT 将更新给定用户 ID 的用户详细信息

我的要求是

问题:

您可以在 API 网关 层缓存并通过向 API 发送 Cache-Control: max-age=0 header 使缓存无效网关(例如,来自在 PUT 请求期间更改 DynamoDB 记录的 Lambda)。您需要授予 specific IAM permissions 才能正常工作。请记住,您每月只能免费使 1000 个请求无效;之后,您需要为每条无效路径支付 0.005 美元。

CloudFront 具有类似的缓存和失效选项,但您可能可以直接从 API 网关获得所有相同的缓存选项。

另一种选择是 cache at the DynamoDB layer,使用 DynamoDB 加速器。它为 DynamoDB 请求提供了显着的检索改进,并为您处理失效。 Maintainability-wise,很难找到更好的选择。缺点是您不会像使用 CloudFront 或 API 网关缓存那样降低延迟。

最后,您还可以查看 ElastiCache,您可以从 Lambda 函数访问它。但是考虑到 writing/reading/invalidating 自己缓存的开销,从长远来看,其他选项可能更易于维护。

您可能会发现 AWS Caching Overview 有助于提出更多缓存方法,具体取决于您的需要。