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

Python Flask部署AWS Lambda后static静态文件访问返回403 FORBIDDEN

问题根因

本次403错误和IAM权限配置无关,核心是Flask静态资源路径配置不匹配Lambda执行环境的路径规则导致的。

修复步骤

1. 修正Flask静态文件夹路径配置

Lambda函数执行时的工作目录为部署包解压后的根目录(对应你本地项目根目录,和run.py同级),而你的static文件夹实际存放在my_app子目录下,你当前配置的相对路径static_folder="static"会让Flask从工作目录下直接寻找static文件夹,找不到就会返回访问错误。
修改my_app/__init__.py中的Flask实例初始化代码,用绝对路径定位静态文件夹:

from flask import Flask, render_template
import os


def create_app():
    # 获取当前文件所在目录(即my_app文件夹的绝对路径)
    app_root_path = os.path.abspath(os.path.dirname(__file__))
    app = Flask(__name__, 
                static_folder=os.path.join(app_root_path, "static"), 
                static_url_path="/static")

    @app.route("/", methods=["GET"])
    def index():
        sample_data = {
            'data': 'sample data'
        }
        return render_template("index.html", data=sample_data)

    return app

2. 确认静态文件纳入部署包

你当前serverless.yml的package配置仅排除了根目录下的node_modules和venv,不会影响my_app下的静态文件,如果之前添加过其他排除规则,可以主动添加include规则保证静态资源被打包:

package:
  exclude:
    - node_modules/**
    - venv/**
  include:
    - my_app/static/**
    - my_app/templates/**

3. 权限优化建议

你当前配置的AdministratorAccess等权限属于过高权限,存在严重安全风险,问题修复后建议及时调整为Lambda运行所需的最小必要权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:45:04