Sur*_*ith 6 amazon-dynamodb aws-lambda aws-api-gateway serverless-framework serverless
我正在尝试使用 AWS lambda、API 网关和 Dynamo 作为数据存储来实现具有 GET 和 PUT API 的用户服务
GET API 将获取给定 userId 的数据,PUT 将更新给定 userId 的用户详细信息
我的要求是
由于 GET API 的吞吐量很大,我需要缓存 API 响应,以便减少后续请求中的响应时间。缓存还需要有一个 TTL。
对同一个 userId 的任何成功 put 请求都会使缓存无效,随后的 GET 请求将从 DB 中获取并再次缓存它
我可能会使用 redis 集群进行缓存。但这可能会增加额外的 VPC 调用开销
题:
您可以在API Gateway层进行缓存,并通过向Cache-Control: max-age=0
API Gateway发送标头(例如,来自在 PUT 请求期间更改 DynamoDB 记录的 Lambda)来使缓存无效。您需要授予特定的 IAM 权限才能使其工作。请记住,您每月只能免费使 1000 个请求无效;之后,您需要为每条无效路径支付 0.005 美元。
CloudFront具有类似的缓存和失效选项,但您可能可以直接从 API Gateway 获得所有相同的缓存选项。
另一种选择是使用DynamoDB Accelerator在 DynamoDB 层进行缓存。它为 DynamoDB 请求提供了显着的检索改进并为您处理失效。在可维护性方面,很难找到更好的选择。缺点是您不会像使用 CloudFront 或 API 网关缓存那样降低延迟。
最后,您还可以查看ElastiCache,您可以从您的 Lambda 函数访问它。但考虑到自己写入/读取/使缓存失效的开销,从长远来看,其他选项可能更易于维护。
您可能会发现AWS 缓存概述有助于根据您的需要提出更多缓存方法。
归档时间: |
|
查看次数: |
2072 次 |
最近记录: |