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

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 的路由规则冲突。

修复方法:

  1. 登录 AWS Lambda 控制台,找到目标函数
  2. 进入「配置」→「函数 URL」→「编辑」
  3. 关闭「自动重定向」选项(或根据你的路由风格调整)
  4. 保存配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:20:43