如何根据路径参数和查询参数使API网关的缓存失效

How to invalidate the cache of an API gateway based on path parameters and query parameters

我有一个如下所示的 GET 端点:

GET /tenant/:tenantId/groups?user=userName  

现在,也有相应的 POST 端点。当 POST 端点用于更新给定用户名的组时,我想使用该用户名禁用此 GET 端点的缓存。

POST 请求可以由任何用户发出,不一定只是这个用户,这样前端就不知道用

调用 API
Cache-Control: max-age=0

我们如何根据路径参数和查询参数使API网关的缓存失效?

api gw caching is very straight forward

另一方面,缓存失效通常作为 header 传递给该端点。如果您可以接受最终一致的模型,那么默认的 300 秒通常就可以了。

假设这还不够好,并且您需要 POST 使其他 api 无效,您可以:

  1. 使用 elasticache 然后你有一个缓存,你可以使所有内容失效
  2. 运行 针对每个 api gw 的查询 缓存 其他端点的条目使它们无效,可能通过 POST 正在处理的 lambda
  3. 禁用缓存,性能可能会受到影响
  4. 联系 AWS Support 并询问您有什么选择,因为还有其他我可能错过的选择
  5. 刷新整个缓存:aws apigateway flush-stage-cache help
  6. 让一切成为POST/PUT、sec guidelines
  7. 使用 Aws AppSync 消除了处理缓存的要求(假设使用 GraphQL 而不是 REST)

您是否使用 DynamoDB 存储数据?

如果是这样,您可以使用 DynamoDB Stream 触发 Lambda 函数,该函数清除特定记录的缓存键参数的API 网关缓存。

如果您需要设置 IAM 策略或创建签名请求,请参阅此 AWS 资源。 https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-caching.html