我在 aws lambda 服務上部署了我的 Flask 應用程式,雖然該應用程式作業正常,但它無法從static檔案夾中獲取 .css 和 .js 檔案,403 FORBIDDEN嘗試訪問它們時會回傳錯誤。
我認為問題可能出在我用于部署應用程式的 IAM 用戶角色中。我給了他以下作用:AmazonAPIGatewayInvokeFullAccess,AdministratorAccess和AmazonAPIGatewayAdministrator以及IAMFullAccess用戶群,但沒有效果。我正在serverless用來部署我的應用程式。
這是我的應用程式檔案:
serverless.yml
service: serverless-flask
plugins:
- serverless-python-requirements
- serverless-wsgi
custom:
wsgi:
app: run.app
packRequirements: false
pythonRequirements:
dockerizePip: non-linux
provider:
name: aws
runtime: python3.9
stage: dev
region: eu-central-1
package:
exclude:
- node_modules/**
- venv/**
functions:
app:
handler: wsgi_handler.handler
events:
- http: ANY /
- http: "ANY {proxy }"
專案檔案:
├── my_app
│ ├── __init__.py
│ ├── static
│ │ ├── css
│ │ │ └── main.css
│ │ ├── js
│ │ │ └── main.js
│ │ ├── package.json
│ │ └── package-lock.json
│ ├── templates
│ │ ├── index.html
│ │ └── layout.html
│ └── utils
│ ├── reader.py
│ └── __init__.py
├── package.json
├── package-lock.json
├── requirements.txt
├── run.py
└── serverless.yml
應用程式創建檔案:
from flask import Flask, render_template
import os
def create_app():
app = Flask(__name__, static_folder="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
uj5u.com熱心網友回復:
好的,我想通了。只需要將檔案夾重命名static為其他名稱,出于某種原因,AWS 阻止訪問名為static. 我將檔案夾重命名為,public但它可以使用任何名稱,只要不是static
這是我更新的專案結構:
├── my_app
│ ├── __init__.py
│ ├── public
│ │ ├── css
│ │ │ └── main.css
│ │ ├── js
│ │ │ └── main.js
│ │ ├── package.json
│ │ └── package-lock.json
│ ├── templates
│ │ ├── index.html
│ │ └── layout.html
│ └── utils
│ ├── reader.py
│ └── __init__.py
├── package.json
├── package-lock.json
├── requirements.txt
├── run.py
└── serverless.yml
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/349231.html
標籤:Python 亚马逊网络服务 烧瓶 aws-lambda
