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

如何使用FastAPI与Mangum在AWS Lambda上正确挂载静态文件?

解决FastAPI+Mangum部署AWS Lambda后静态文件403问题

1. 修正静态文件路径为绝对路径

Lambda执行环境的工作目录是/var/task,相对路径容易出现定位错误,改用绝对路径指向静态目录:

from pathlib import Path
from fastapi import FastAPI, Request, HTMLResponse
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from mangum import Mangum

app = FastAPI()
# 获取当前文件所在目录的绝对路径,拼接static文件夹
BASE_DIR = Path(__file__).parent
path_static = BASE_DIR / "static"
app.mount("/static", StaticFiles(directory=path_static), name="static")

# 补充模板配置(你代码中缺失的关键部分)
templates = Jinja2Templates(directory=BASE_DIR / "templates")

@app.get("/about/", response_class=HTMLResponse)
async def get_about(request: Request):
    return templates.TemplateResponse("about.html", {"request": request})

handler = Mangum(app)

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app="main:app", reload=True)

2. 确保静态文件被正确打包进部署包

  • 手动打包ZIP时,要将static文件夹、templates文件夹与main.py放在同一层级,确保ZIP包内包含完整的静态文件目录。
  • 若使用SAM/Serverless Framework,需在配置文件中明确包含静态目录:
    • SAM模板(template.yaml)示例:
      Resources:
        MyFunction:
          Type: AWS::Serverless::Function
          Properties:
            CodeUri: .
            Handler: main.handler
            Runtime: python3.11
            Metadata:
              BuildMethod: python3.11
      
    • Serverless Framework(serverless.yml)示例:
      package:
        include:
          - static/**
          - templates/**
          - main.py
      

3. 检查静态文件权限设置

Lambda执行环境对文件权限有要求,确保静态文件(如styles.css)权限为644(全局可读),文件夹权限为755,打包前在本地执行:

chmod -R 755 static/
chmod 644 static/*.css

4. 升级Mangum到兼容版本

Mangum v0.17+完全支持FastAPI的StaticFiles功能,确保使用最新版本:

pip install --upgrade mangum

额外排查步骤

  • 在Lambda控制台测试功能中直接请求/static/styles.css,查看具体错误细节。
  • 在代码中添加日志输出静态目录路径,确认路径有效性:
    import logging
    logger = logging.getLogger(__name__)
    logger.info(f"Static directory path: {path_static}")
    logger.info(f"Files in static dir: {list(path_static.glob('*'))}")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 07:43:18