You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅允许指定Lambda函数失效AWS API Gateway缓存?

API Gateway缓存失效权限控制的误区与解决办法

你的核心误区

你混淆了两种缓存失效机制的权限控制逻辑:

  • 给Lambda配置的execute-api:InvalidateCache策略,管的是通过AWS SDK/CLI调用API Gateway的缓存失效接口(比如主动调用InvalidateCache操作)的权限,和前端请求带Cache-Control: max-age=0触发的缓存刷新完全是两码事。
  • 默认情况下,API Gateway允许任何请求通过Cache-Control: max-age=0或Pragma: no-cache头绕过缓存,这是缓存的默认行为,不受IAM策略约束。

解决办法

1. 禁用请求头触发的缓存失效

在API Gateway的阶段缓存设置里,找到缓存设置,关闭允许通过请求头失效缓存选项(不同控制台版本名称可能略有差异,比如英文界面的Enable cache invalidation via headers)。关闭后前端发送Cache-Control: max-age=0就不会触发缓存刷新了。

2. 确保Lambda的缓存失效权限正确

你现有的IAM策略没问题,但要明确:

  • 这个权限是赋予Lambda执行角色的,用于让Lambda通过AWS SDK调用execute-api:InvalidateCache接口主动清除缓存(比如写入DynamoDB完成后调用该接口)。
  • Lambda代码里必须通过SDK调用缓存失效接口,而不是依赖请求头来触发。

验证配置

  • 关闭请求头失效后,用Postman带Cache-Control: max-age=0请求读取接口,应该返回缓存的旧数据。
  • 触发写入数据的Lambda执行,完成后调用缓存失效接口,再请求读取接口,应该能拿到最新数据。

内容的提问来源于stack exchange,提问作者Deno123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 16:54:22