Я пытаюсь развернуть приложение Flask на AWS и получаю ошибку 403 Forbidden.После долгих испытаний с AWS я, похоже, понял, что это ошибка на этом конце.Мое приложение Flask в настоящее время написано с использованием фабрики приложений и выглядит примерно так (упрощенно):
from flask import Flask
def create_app(test_config=None):
application = Flask(__name__)
app = application
@app.route('/')
def index():
return "The index page"
...
return app
Однако после того, как я настроил среду на Elastic beanstalk и развернул там свое приложение Flask, я посещаюстраница индекса, я получаю 403 Запрещенную ошибку.Я проверяю свои журналы на наличие EB и вижу сообщение: «1004 *
» «Целевой сценарий WSGI» /opt/python/current/app/server/application.py «не содержит приложения WSGI« приложение »."
Сначала я был смущен.Ранее у меня были другие ошибки с EB и я смотрел онлайн.Я не совсем понимаю, что такое стандарт WSGI, но я видел, как люди говорили, что EB будет работать только в том случае, если объект «app» Flask называется «application», который я намеренно изменил.Затем я посмотрел документацию AWS и понял, что их примеры не используют фабрику приложений, поэтому я догадывался, что не использовал фабрику приложений:
from flask import Flask
application = Flask(__name__)
app = application
...
@app.route('/')
def index():
return "The index page"
if __name__ == "__main__":
application.run()
Это сработало.Я могу только заключить, что, поскольку объект «application» определен на фабрике приложений, или тот факт, что он возвращает приложение вместо application.run (), он не регистрируется в EB.Опять же, я не очень понимаю WSGI и как это связано с ошибкой.Как я могу обойти это и развернуть с фабрикой приложений, так как я не хочу обойти переписывание большей части моего проекта?