【问题标题】:How to invalidate the cache of an API gateway based on path parameters and query parameters如何根据路径参数和查询参数使 API 网关的缓存失效
【发布时间】:2021-08-16 23:34:15
【问题描述】:

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

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

现在,还有一个相应的 POST 端点。当 POST 端点用于更新给定用户名的组时,我想用该用户名取消此 GET 端点的缓存。

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

Cache-Control: max-age=0

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

【问题讨论】:

    标签: amazon-web-services caching aws-api-gateway api-gateway amazon-api-gateway


    【解决方案1】:

    您是否使用 DynamoDB 来存储您的数据?

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

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

    【讨论】:

      【解决方案2】:

      api gw caching is very straight forward

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

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

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

      【讨论】:

        猜你喜欢
        • 2022-01-11
        • 1970-01-01
        • 2015-09-07
        • 2019-05-27
        • 2021-02-24
        • 2022-01-24
        • 1970-01-01
        • 2021-11-15
        • 1970-01-01
        相关资源
        最近更新 更多