在 AWS Elastic Beanstalk 中部署 Flask 应用程序

Posted

技术标签:

【中文标题】在 AWS Elastic Beanstalk 中部署 Flask 应用程序【英文标题】:Deploying Flask App in AWS Elastic Beanstalk 【发布时间】:2020-04-29 00:25:24 【问题描述】:

当我部署我的烧瓶应用程序时,它显示成功,但当我检索日志时,我看到错误“找不到烧瓶”。我的需求文件中有烧瓶。任何帮助。

[2020 年 1 月 11 日星期六 06:51:50.503908] [:error] [pid 3393] [remote 127.0.0.1:0] mod_wsgi (pid=3393): Target WSGI script '/opt/python/current/app/ application.py' 不能作为 Python 模块加载。

[2020 年 1 月 11 日星期六 06:51:50.503953] [:error] [pid 3393] [remote 127.0.0.1:0] mod_wsgi (pid=3393): 处理 WSGI 脚本 '/opt/python/current/ 时发生异常应用程序/应用程序.py'。

[2020 年 1 月 11 日星期六 06:51:50.504123] [:error] [pid 3393] [远程 127.0.0.1:0] 回溯(最后一次通话):[2020 年 1 月 11 日星期六 06:51:50.504151] [ :error] [pid 3393] [remote 127.0.0.1:0] 文件“/opt/python/current/app/application.py”,第 1 行,在 [Sat Jan 11 06:51:50.504156 2020] [:error] [pid 3393] [remote 127.0.0.1:0] from flask import Flask

[2020 年 1 月 11 日星期六 06:51:50.504170] [:error] [pid 3393] [remote 127.0.0.1:0] ModuleNotFoundError:没有名为“flask”的模块。

下面是我的application.py内容

from flask import Flask
from myapp import create_app

application = create_app()

if __name__ == "__main__":
    application.run()

下面是我的requirements.txt的内容

Click==7.0
-e git+https://github.com/xxxxxx/xxx.git@xxxx#egg=xxx
Flask==1.1.1
itsdangerous==1.1.0
Jinja2==2.10.3
MarkupSafe==1.1.1
numpy==1.18.1
PyYAML==3.13
scipy==1.4.1
Werkzeug==0.16.0

【问题讨论】:

你能分享你的需求.txt 添加了我的 requirements.txt 的内容 你的python版本是什么 你确定你已经部署了 requirements.txt,你可以下载部署的 zip 并检查 转到 Elastic beans 对话控制台 => 选择应用程序 => 选择左侧的应用程序版本,它应该会显示下载 zip 文件的链接 【参考方案1】:

您能否尝试将您运行的 Flask 对象重命名为“应用程序”:

from flask import Flask
application = Flask(__name__)
# run the app.
if __name__ == "__main__":
    application.run()

来自 Amazon EB 文档:

使用 application.py 作为文件名并提供一个可调用的 应用程序对象(在本例中为 Flask 对象)允许 AWS Elastic Beanstalk 可以轻松找到您的应用程序代码。

【讨论】:

我在原帖中添加了我的application.py的内容。【参考方案2】:

您应该在文件夹的根目录下拥有application.pyrequirements.txt。您部署的 zip 文件还应在 zip 文件的根目录中包含这两个文件。我附上了参考说明如何下载已部署的应用程序包。

参考: Download a application from AWS Elastic Beanstalk

希望这会有所帮助。

【讨论】:

以上是关于在 AWS Elastic Beanstalk 中部署 Flask 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AWS elastic-beanstalk 中更改我的 python 版本

如何在 AWS Elastic Beanstalk 中更改数据库配置

在 AWS Elastic Beanstalk 和 EKS 上部署了一个 laravel 应用程序 相同的数据库 RDS 为啥在 Elastic Beanstalk 中获得快速响应

如何在 AWS Elastic Beanstalk 中选择特定平台?

在 AWS Elastic Beanstalk 中运行 composer 命令

AWS Elastic Beanstalk 中的 HTTPS 配置