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

AWS API Gateway Lambda授权器返回Allow策略仍报403错误求助

排查AWS API Gateway Lambda授权器返回Allow仍403的问题

针对你遇到的问题——Lambda授权器明确返回Allow策略但请求仍被403拒绝,可按以下步骤逐一排查:

1. 修正Handler的异步/回调混用问题

你的Handler是async函数,但同时声明了callback参数,这会导致Lambda运行时混淆响应传递逻辑,API Gateway可能无法正确接收授权策略。请移除callback参数,简化Handler定义:

export const handler = async function (event: any, context: Context): Promise<APIGatewayAuthorizerResult> {
  // 原有业务逻辑保留,仅移除callback参数
};

2. 校验授权响应格式的严格合规性

API Gateway对授权器的响应格式有强校验,任何格式错误都会触发默认拒绝:

  • 确认principalId字段为驼峰式拼写(大小写不能错)
  • 确保policyDocument.Version是精确字符串"2012-10-17"(不能使用其他版本号)
  • 检查Statement数组中的Action为"execute-api:Invoke",Effect为"Allow",Resource与event.methodArn完全一致(包括API ID、阶段、HTTP方法、路径,无拼写或格式偏差)

3. 确认授权器是否被正确触发

查看Lambda函数的CloudWatch日志,验证:

  • 存在日志输出,说明API Gateway确实调用了授权器
  • 日志中打印的event.methodArn与请求的目标资源ARN完全匹配
  • 最终返回的策略JSON结构完整,无语法错误

4. 排查授权器缓存影响

如果API Gateway启用了授权器缓存,可能缓存了历史拒绝策略:

  • 临时关闭授权器缓存(在API Gateway控制台的授权器设置中),重新测试请求
  • 若关闭缓存后恢复正常,需调整缓存键配置或等待缓存过期

5. 检查CORS与OPTIONS方法配置

如果是OPTIONS请求返回403,大概率是CORS配置问题:

  • 将OPTIONS方法的授权类型设为NONE(无需经过Lambda授权)
  • 确认CORS配置允许请求携带的自定义头(如Authorization)

6. 验证API Gateway方法与授权器的关联

检查API Gateway的方法请求设置:

  • 授权类型已选择正确的Lambda授权器
  • 若为TOKEN模式,确认Token Source头名称(如Authorization)与请求中携带的头一致
  • 授权器已部署到当前测试的API阶段

7. 确认Lambda执行角色的基础权限

确保Lambda执行角色具备:

  • 写入CloudWatch Logs的权限(便于排查日志)
  • 若授权器需调用其他AWS服务(如KMS解密JWT密钥),需添加对应权限

内容的提问来源于stack exchange,提问作者Furkan Özmen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 02:59:58