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

为什么我的Lambda函数仅偶尔向DynamoDB表写入数据?

问题根因

你遇到的现象核心是301永久重定向的浏览器缓存机制导致的,和代码逻辑、DynamoDB权限无关:

  • 301状态码的定义是资源永久转移,浏览器会对该响应做长期本地缓存
  • 用户首次访问链接时,请求会正常到达API Gateway触发Lambda执行,跳转正常同时写入DynamoDB
  • 后续用户再次访问同一个链接时,浏览器直接读取本地缓存的重定向地址完成跳转,不会向后端发送任何请求,Lambda没有被触发,自然不会产生新的DynamoDB写入记录
  • 清空浏览器缓存后,首次请求会重新发送到后端,所以写入能力恢复一次,之后又被缓存就再次失效,完全匹配你描述的故障表现

修复方案

  • 把Lambda返回的statusCode从301修改为302(临时重定向),该状态码默认不会被浏览器永久缓存
  • 在Lambda的响应headers中添加缓存禁用规则,强制浏览器每次都向后端发起新请求:
headers: { 
  Location: redirectURL,
  "Cache-Control": "no-store, no-cache, must-revalidate, max-age=0"
}
  • 检查API Gateway的对应接口配置,如果开启了接口缓存,关闭缓存或者将缓存TTL设置为0

调试验证建议

  • 查看Lambda对应的CloudWatch日志,确认故障时段是否只有首次请求的调用日志,如果后续访问没有产生新的Lambda日志,即可确认请求没有到达后端,属于缓存问题
  • 用curl工具重复多次调用你的API接口,curl默认不会缓存301响应,如果每次调用都能成功写入DynamoDB,即可实锤是浏览器缓存导致的问题
  • 在浏览器开发者工具的「网络」面板中勾选「禁用缓存」,重复访问测试,如果每次都能正常写入DynamoDB,即可确认根因

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:15:02