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

CloudFront访问API Gateway前返回401/403问题排查求助

CloudFront转发Authorization令牌到API Gateway的解决步骤

一、先把CloudFront的请求头转发配置做对

  1. 登录CloudFront控制台,找到你的分发,进入「行为」标签,编辑对应动态接口路径的行为(比如/api/*这类匹配动态请求的路径)
  2. 缓存策略直接选CachingDisabled——动态API请求没必要缓存,避免后续出现缓存相关问题
  3. 重点配置「源请求策略」:不要用默认策略,创建自定义策略
    • 要么直接勾选「转发所有Viewer请求头」,要么精确勾选Authorization(更安全,减少不必要的头转发)
    • 注意:如果你的API是POST/PUT这类带请求体的请求,别忘了同时转发Content-Type这类必要头

二、排查403错误的核心原因

你提到API Gateway和Lambda都没生成日志,说明请求根本没到达后端,这个403是CloudFront自身返回的,大概率是以下问题:

  • OAC配置冲突:如果给API Gateway源配置了Origin Access Control(OAC),默认OAC会限制请求头转发,需要在OAC设置中明确允许转发Authorization头
  • API Gateway资源策略限制:检查API Gateway的资源策略,必须允许CloudFront的身份访问你的API
    • 给你一个可参考的模板,替换成自己的CloudFront ARN和API信息即可:
      {
        "Version": "2012-10-17",
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
              "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity 你的OAI ID"
            },
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:你的区域:账号ID:API ID/*/*/*"
          }
        ]
      }
      
  • WAF误拦截:检查是否给CloudFront配置了WAF规则,是否是规则误拦截了带Authorization头的请求,可临时关闭WAF测试验证

三、验证令牌传递状态

  1. 给CloudFront的目标行为开启实时日志,可以直接查看请求到达CloudFront时是否携带Authorization头
  2. 如果确认CloudFront已转发,但API仍未收到请求,检查源域名是否配置正确;若API部署在私有VPC内,需确保CloudFront能正常连通VPC网络

四、权限配置核心注意事项

  • 源请求策略必须明确包含Authorization,默认策略大多会自动移除该头,不要依赖默认配置
  • API Gateway的资源策略必须明确放行CloudFront的身份(OAI或OAC)
  • 如果使用Lambda授权器,需确保授权器能正确解析令牌,且返回的权限允许访问对应API资源

内容的提问来源于stack exchange,提问作者Himawari.Ksm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 16:12:12