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

通过CloudFront部署的AWS Lambda Function URL托管GraphQL API无法加载

问题排查与解决方案

核心问题分析

你的问题出在CloudFront与Lambda Function URL的路径转发、请求头配置不匹配,加上FastAPI的根路径重定向逻辑在CloudFront层没被正确处理。之前的REST API根路径有静态页面,不需要路径转发和重定向处理;而当前GraphQL API依赖根路径重定向到/graphql,且所有GraphQL请求都落在/graphql端点,这就要求CloudFront能正确传递路径和请求头。

具体解决步骤

1. 修正CloudFront Origin配置

  • 清空Origin Path:之前设置的/graphql会让所有请求被转发到Lambda Function URL的/graphql/graphql路径,完全不符合API路由逻辑,直接删除这个配置。
  • 添加Host请求头:Lambda Function URL对Host头有严格要求,必须是它自身的域名au5u4btytgem5kqqs4p6j325mq0yigcb.lambda-url.us-east-1.on.aws。CloudFront默认会转发自己的Host头,导致Lambda无法正确识别请求。在CloudFront源的自定义头里添加:
    • 键:Host
    • 值:au5u4btytgem5kqqs4p6j325mq0yigcb.lambda-url.us-east-1.on.aws

2. 调整CloudFront缓存行为

  • 覆盖路径模式:确保缓存行为的路径模式设为/*,让所有路径的请求都能转发到Lambda源。
  • 允许必要HTTP方法:勾选GET、POST(GraphQL执行查询/突变需要POST)、HEAD,保证所有核心请求方法能通过CloudFront。
  • 转发关键请求头:在缓存行为设置里,将“转发所有请求头”设为是,至少要转发Location头,这样FastAPI返回的重定向响应能正确传递给客户端。

3. 优化根路径访问体验(可选)

如果希望用户访问graphql.website.com时直接进入GraphQL界面,有两种方案:

  • 方案一:不设置CloudFront默认根对象,让根路径请求直接转发到Lambda,触发FastAPI的重定向逻辑跳转到/graphql。
  • 方案二:新增一条缓存行为,路径模式设为/,将“转发到源的路径”设为/graphql,这样访问根路径时直接转发到Lambda的/graphql端点,跳过重定向步骤。

4. 验证与清缓存

  • 修改配置后等待5-10分钟,让CloudFront完成部署。
  • 手动清除CloudFront缓存:在分发的“缓存”选项卡创建无效化,路径填/*,避免旧缓存干扰测试结果。

额外验证手段

  • 直接访问CloudFront分发的/graphql路径(https://d3jfnr6hstw717.cloudfront.net/graphql),如果能正常返回GraphQL界面,说明根路径的问题是CloudFront没正确转发根请求到Lambda,此时检查缓存行为的路径模式是否包含/。
  • 查看CloudFront访问日志,确认请求路径、转发到源的路径以及返回状态码,精准定位问题点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 15:54:41