【问题标题】:502 error deploying flask application to elastic beanstalk using CLI使用 CLI 将烧瓶应用程序部署到弹性 beanstalk 时出现 502 错误
【发布时间】: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) 没有成功。

我查看了文档,但找不到修复方法。如果人们有任何他们认为会有所帮助的建议或链接,我们将不胜感激。

【问题讨论】:

    标签: python amazon-web-services flask amazon-elastic-beanstalk


    【解决方案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。但很高兴它成功了 :-)
    猜你喜欢
    • 2019-01-25
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 2019-07-27
    • 2021-06-25
    • 2014-12-29
    相关资源
    最近更新 更多