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

如何让API Gateway中的Lambda自定义授权器在每次请求时都被调用?已禁用授权缓存但后续请求未触发授权器的问题排查

排查API Gateway Lambda自定义授权器未触发的问题

我之前碰到过几乎一模一样的情况——明明关了授权缓存,后续请求却还是没触发授权器,给你几个实际排查的方向:

  • 确认授权器配置是否已部署到对应阶段
    这是最容易踩的坑!很多时候在控制台改了授权器的缓存设置,但忘了重新部署API Gateway的对应阶段。API Gateway的配置变更(包括授权器设置)必须部署到阶段才会生效,不然当前运行的还是旧配置。你可以到API Gateway的阶段页面,点击「部署API」,选择对应的阶段重新部署试试。

  • 检查API Gateway阶段是否开启了全API缓存
    虽然你关了授权器自身的缓存,但如果API Gateway的阶段开启了API缓存(不是授权缓存),当请求的参数、头部等缓存键匹配时,API Gateway会直接返回缓存的响应,跳过整个授权和后端Lambda调用流程。你可以到阶段的「缓存」设置里确认是否开启了API缓存,如果开了可以临时关闭测试。

  • 开启API Gateway访问日志排查细节
    光靠猜测没用,得看日志实锤。在API Gateway的阶段设置里开启「访问日志」,把日志推送到CloudWatch Logs。然后看每条请求日志里的authorizer相关字段:

    • 如果日志里没有authorizer字段,说明API Gateway完全没触发授权器;
    • 如果有authorizer.principalId但没有新的Lambda执行日志,可能是授权器的结果被某种隐含机制复用了(不过这种情况在缓存关闭时很少见);
    • 同时可以查看Lambda授权器的CloudWatch Logs,确认后续请求是否真的没有触发执行。
  • 验证请求头的deviceID是否稳定传递
    你的授权器身份源是请求头的deviceID,如果后续请求中这个头部缺失、为空或者格式异常,API Gateway可能会直接返回401而不触发授权器?不过你说首次正常后续没触发,这个可能性稍低,但可以用Postman或curl重复发送带正确deviceID的请求测试,排除头部传递问题。

  • 检查Lambda授权器的IAM角色权限
    虽然首次调用成功,但如果后续请求中角色的临时凭证出现问题?不过这个一般会导致授权器执行失败而不是不触发,所以优先级靠后,但可以确认角色的sts:AssumeRole权限是否正常,以及是否有其他IAM策略限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 23:28:10