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

两个AWS API Gateway资源共用同一Lambda授权器异常求助

排查方案

1. 核对第二个资源的授权器绑定配置

  • 确认第二个API资源的方法请求中,“授权”选项确实选中了目标Lambda授权器,而非“NONE”或其他授权方式。
  • 检查两个资源的授权器调用模式一致:如果是令牌验证,确保都设置为“TOKEN”模式,避免第二个资源误设为“REQUEST”模式且参数提取规则错误。
  • 临时关闭授权器缓存测试:若授权器开启了缓存,检查缓存键是否依赖第一个资源独有的请求参数/头,导致第二个资源请求命中无效缓存。关闭缓存后重新验证是否还能绕过授权。

2. 检查阶段配置的授权覆盖

进入API Gateway的“阶段”页面,确认当前部署阶段没有对第二个资源设置授权覆盖(Override Authorization)——阶段级配置会直接覆盖资源级的授权规则,若被强制设为允许访问,就会跳过授权器验证。

3. 排查Lambda授权器的逻辑与日志

  • 给授权器添加详细日志:在代码中记录每个请求的资源路径、HTTP方法、令牌内容,确认第二个资源的请求是否真的触发了授权器。如果授权器没收到请求,问题出在API Gateway配置。
  • 验证授权器返回的IAM策略:检查策略中是否错误地给第二个资源的ARN授予了Allow权限。比如:
{
  "principalId": "user",
  "policyDocument": {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Action": "execute-api:Invoke",
        "Effect": "Allow", // 此处应为Deny
        "Resource": "arn:aws:execute-api:us-east-1:1234567890:abc123/prod/GET/second-resource"
      }
    ]
  }
}
  • 检查授权器是否有路径相关的条件逻辑:比如代码中是否对特定路径做了跳过验证的处理,导致第二个资源被放行。

4. 确认资源路径与策略ARN的匹配性

  • 核对授权器策略中的资源ARN是否覆盖了第二个资源的路径:如果策略用了精确路径,而第二个资源带路径参数(如/second-resource/{id}),需确保策略中包含对应的ARN(比如用通配符/second-resource/*)。
  • 检查第二个资源的方法配置:如果用了ANY方法,需确认授权器策略对所有HTTP方法(GET/POST等)都设置了拒绝,避免遗漏。

5. 独立测试Lambda授权器

用AWS CLI直接模拟第二个资源的请求调用授权器,查看返回策略:

aws lambda invoke --function-name your-authorizer-lambda-name --payload '{
  "type": "TOKEN",
  "authorizationToken": "your-test-token",
  "methodArn": "arn:aws:execute-api:your-region:your-account-id:your-api-id/your-stage/GET/second-resource"
}' output.json

如果返回的策略是Allow,问题出在授权器代码;如果是Deny,则问题在API Gateway的配置环节。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 19:23:09