在 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.py
和requirements.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 中选择特定平台?