404用于部署到Elastic Beanstalk的Flask应用程序的任何路线

404用于部署到Elastic Beanstalk的Flask应用程序的任何路线,flask,amazon-elastic-beanstalk,flask-restful,ebcli,Flask,Amazon Elastic Beanstalk,Flask Restful,Ebcli,我正在尝试通过eb cli,在Elastic Beanstalk上使用Flask RESTful托管一个Flask应用程序,该应用程序实现REST API。我已经成功部署了我的应用程序,在我的事件日志中没有收到任何错误消息。我可以成功地ssh到实例中并运行脚本来预填充数据库和所有内容。但每当我尝试访问任何路由时,我总是会收到404错误 我最初认为这是因为它找不到我的WSGIPath,所以我将文件名更改为application.py,并更新了EBS软件配置以指向该文件。我还在基于AWS文档的代码库

我正在尝试通过
eb cli
,在Elastic Beanstalk上使用Flask RESTful托管一个Flask应用程序,该应用程序实现REST API。我已经成功部署了我的应用程序,在我的事件日志中没有收到任何错误消息。我可以成功地ssh到实例中并运行脚本来预填充数据库和所有内容。但每当我尝试访问任何路由时,我总是会收到404错误

我最初认为这是因为它找不到我的WSGIPath,所以我将文件名更改为
application.py
,并更新了EBS软件配置以指向该文件。我还在基于AWS文档的代码库中将
app
的所有实例更新为
application
。还是没什么。有人知道会出什么问题吗

这是我的
应用程序.py

from flask import Flask

from config import Config

CONFIG = Config()

# AWS Elastic Beanstalk expects an `application` variable.
application = Flask(__name__)

if __name__ == "__main__":
    # Importing these here to avoid issue with circular imports
    from endpoints.v1.exports import exports_api
    from endpoints.v1.imports import imports_api

    application.register_blueprint(exports_api, url_prefix="/api/v1")
    application.register_blueprint(imports_api, url_prefix="/api/v1")

    application.run(debug=CONFIG.DEBUG)
下面是文件夹结构中
application.py
文件的位置:

- project root
    - ...
    - application.py
    - ... 

刚刚意识到发生了什么。我试图在
if\uuuuu name\uuuuu==“\uuuuu main\uuuuu”:
块中注册蓝图。但是由于
application.py
文件不是由Elastic Beanstalk直接运行的,因此它从未到达这些行,因此我尝试访问的端点不存在


我必须重构代码,以便将其移出该块并避免循环导入的问题,但现在它已经正常工作了。

Flask应用程序启动正确吗?您是否尝试过在不同的端口上托管应用程序(仅用于测试),并允许通过防火墙?此外,如果您将所有内容都放在操作系统根目录中,这不是最好的主意,可能会导致将来出现问题。愚蠢的问题,但你是否也确定你访问了正确的URL,因为奇怪的是没有日志。这是项目的根,而不是操作系统。我的错,我会更新问题使它更清楚。对于上下文,我对Flask和EBS都是新手,所以如何测试应用程序是否正确启动?我假设是这样,因为我没有像我读过的其他人那样在事件日志中得到WSGIPath错误。我正在访问EBS环境菜单上显示的URL。我复制并粘贴了一百万次以确保我一直得到404。所以Flask默认在端口5000上运行。你能反向代理80上的任何东西,通过WSGI连接到它吗?如果你想公开它,你能反向代理80上的任何东西吗?。否则,要使用5000,您需要允许它通过AWS防火墙。当你进入正常链接时,我不认为你正在访问Flask。另外,Flask不是一个HTML页面,因此您实际上必须从
python application.py
开始,您可能知道这一点,但这里涵盖了所有基础。