【发布时间】:2017-12-03 17:46:33
【问题描述】:
更新:我想通了,请看下面的答案。
我有一个使用各种资源和各种 GET 和 POST 方法定义的 AWS API Gateway api。
一切正常。 帖子正在通过。 GET 会返回响应(JSON 负载),但返回的值似乎是 缓存 值。
我的 GET api 调用一个调用 RDS 查询的 Lambda 函数。 我可以确认我的回复已过时,因为:
- 当我手动查询 RDS 时,我得到了更新后的值
- 我启用了 Cloud Watch 日志,但没有调用 lambda 函数(我相信我设置正确,因为当我测试调用 lambda 时,我可以获得 Cloud Watch 日志)
它确实刷新了一次,但我认为那是因为我超过了一些(比如 1 小时)缓存阈值之类的。
我了解 API Gateway 在后台生成 CloudFront。 我觉得这就是做缓存的原因。但这只是猜测,我没有证据。也许某种默认缓存 TTL?
我显然在我的 API Gateway 阶段关闭了缓存。 我什至尝试启用它,将 TTL 设置为 1,刷新缓存,然后再次禁用缓存。 该测试的每个阶段仍然返回过时的值。
我不知道这是否相关,但补充细节:
- 我启用了 CORS ("*")
- 我启用了 Cognito 授权器
- 我通过 Authorization 标头传入 JWT 令牌(一切正常)
我应该传递一些标头来请求未缓存的值吗? 我去了 CloudFront,但那里没有配置。
关于 API Gateway 缓存的所有其他帖子似乎都是关于缓存不起作用或人们询问缓存键的特异性。 无论如何,我都没有看到任何关于值总是被缓存的信息。所以我觉得我错过了一些明显的东西......
任何帮助或调试提示将不胜感激!
【问题讨论】:
标签: amazon-web-services caching aws-api-gateway