FastAPI部署AWS Lambda后重定向异常:ERR_TOO_MANY_REDIRECTS
问题诊断与解决方案
1. APIRouter 使用错误(核心问题)
你直接将 APIRouter 实例作为应用传给 Mangum,但 APIRouter 是路由分组工具,并非完整的 FastAPI 应用。这种写法在本地可能通过额外挂载到 FastAPI 实例正常运行,但部署到 Lambda 时会导致路由解析异常,触发重定向循环。
修复方法:
将代码中的 APIRouter 替换为 FastAPI 实例:
import boto3 import requests import base64 from fastapi import FastAPI # 替换 APIRouter 为 FastAPI from fastapi.responses import RedirectResponse from mangum import Mangum from client import client_id, client_secret app = FastAPI() # 使用 FastAPI 实例而非 APIRouter lambda_handler = Mangum(app,lifespan='off') url = 'https://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.lambda-url.me-south-1.on.aws' @app.get("/") async def root(): return RedirectResponse("/login/") # 其余路由代码保持不变...
2. 相对路径重定向引发循环
Lambda 函数 URL 的路径处理逻辑与本地/ngrok不同,使用相对路径重定向(如 /login/)可能触发重复跳转。
修复方法:
将重定向改为绝对 URL:
@app.get("/") async def root(): return RedirectResponse(f"{url}/login/") # 使用绝对路径
3. Lambda 函数 URL 自动重定向配置
Lambda 函数 URL 默认可能开启「自动重定向」功能,当路径带/不带斜杠时会自动跳转,与 FastAPI 的路由规则冲突。
修复方法:
- 登录 AWS Lambda 控制台,找到目标函数
- 进入「配置」→「函数 URL」→「编辑」
- 关闭「自动重定向」选项(或根据你的路由风格调整)
- 保存配置
4. 验证重定向链
用 curl -v 命令跟踪重定向流程,确认循环环节:
curl -v https://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.lambda-url.me-south-1.on.aws/
观察输出中的 Location 响应头,确认是否在 / 和 /login/ 之间循环,或存在其他重复跳转。
5. 检查 Spotify 回调 URI
确保 Spotify 开发者后台配置的回调 URI 与 Lambda 函数 URL 的 /home/ 路径完全一致(包括是否带斜杠),避免因回调失败引发的间接重定向问题。
内容的提问来源于stack exchange,提问作者Mohamed Yasser
相关产品推荐
相关产品推荐

