使用 CLI 将烧瓶应用程序部署到弹性 beanstalk 时出现 502 错误
Posted
技术标签:
【中文标题】使用 CLI 将烧瓶应用程序部署到弹性 beanstalk 时出现 502 错误【英文标题】:502 error deploying flask application to elastic beanstalk using CLI 【发布时间】:2020-12-11 14:42:53 【问题描述】:在将非常简单的 Hello, World 类型的烧瓶应用程序部署到 AWS Elastic Beanstalk 时遇到问题。我正在使用 eb CLI 工具,安装在 Mac 上,带有 brew 和 python 3。下面的一些示例代码:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
@app.route('/<username>')
def hello_user(username):
return f'Hello, username!'
# run the app.
if __name__ == "__main__":
# Setting debug to True enables debug output. This line should be
# removed before deploying a production app.
app.debug = True
app.run(port=8000)
它按预期在本地运行,我可以通过 CLI 部署它,但是当我访问应用程序时,我得到一个 502 Bad Gateway。
我试过了:
使用控制台中的 URL 和eb open
访问应用程序。
在 URL 末尾指定端口 5000(默认烧瓶)和 8000。
使用app.run()
和app.run(port=8000)
没有成功。
我查看了文档,但找不到修复方法。如果人们有任何他们认为会有所帮助的建议或链接,我们将不胜感激。
【问题讨论】:
【参考方案1】:您的应用程序应称为application
而不是app
。
以下是更正后的application.py
文件。我验证它可以使用Python 3.7 running on 64bit Amazon Linux 2/3.1.0
平台:
from flask import Flask
application = Flask(__name__)
@application.route('/')
def hello_world():
return 'Hello, World!'
@application.route('/<username>')
def hello_user(username):
return f'Hello, username!'
# run the app.
if __name__ == "__main__":
# Setting debug to True enables debug output. This line should be
# removed before deploying a production app.
application.debug = True
application.run(port=8000)
【讨论】:
太棒了,感谢@Marcin 的建议。我在文档中找不到该详细信息,但它确实解决了我的问题。 @Shay 没问题。遗憾的是,EB 文档现在有点混乱,因为其中一些仍在谈论 Amazon Linux 1,而新的 EB 平台正在使用 Amazon Linux 2。但很高兴它成功了 :-)以上是关于使用 CLI 将烧瓶应用程序部署到弹性 beanstalk 时出现 502 错误的主要内容,如果未能解决你的问题,请参考以下文章
在 AWS 弹性 beantalk 上部署 Flask 应用程序
Flask 应用程序未在 AWS 弹性 beantalk 上部署
如何从 cli 本地连接到现有的弹性 beanstalk 实例?
重命名使用 AWS cli 生成的用于 beanstalk 部署的战争