如何使用弹性beanstalk和aws修复Flask应用程序中的内部服务器错误

问题描述 投票:-1回答:1

当我在本地运行我的烧瓶应用程序时,我可以很好地连接到MySQL RDS。但是,当我尝试使用Elastic Beanstalk部署应用程序时,出现“500 Internal Server Error”。我不知道这是否有帮助,但是当我使用本地sqlite文件时,我的应用程序在本地运行和使用Elastic Beanstalk部署时都可以正常工作。

我确实尝试和这个页面一起工作,但是当我包含环境属性时,我没有注意到任何差异。 https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-rds.html#python-rds-create

这是我的__init__.py文件。我只是注释掉我在测试时不想使用的数据库URI。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_bcrypt import Bcrypt
from flask_login import LoginManager

application = Flask(__name__)
application.config['SECRET_KEY'] = 'c4633b5a978d282104dbc44c32c9486'
application.config['SQLALCHEMY_DATABASE_URI'] =  
'mysql+pymysql://<username>:<password>@garbagero.cuz5hqf0nh5m.us-east- 
2.rds.amazonaws.com/ebdb'
#application.config['SQLALCHEMY_DATABASE_URI'] =  'sqlite:///site.db'
db = SQLAlchemy(application)
bcrypt = Bcrypt(application)
login_manager = LoginManager(application)
login_manager.login_view = 'login'
login_manager.login_message_category = 'info'

from garbageRO import routes

编辑:我终于想通了我不小心从我的requirements.txt文件中留下了1个包。我以为我在张贴之前已经仔细检查了这一点,但显然我没有。

amazon-web-services flask amazon-elastic-beanstalk
1个回答
0
投票

我建议您使用Flask和SQLAlchemy的详细模式调试您的应用程序,这样您就可以更好地了解最新情况,使用此级别或详细信息我只能建议像AWS上的权限/ IAM一样检查,以检查是否ElasticBeanstalk可以真正访问RDS,假设ELB / applcation使用一组凭据,并且您使用其他凭据进行本地测试,对吗?

关于“详细模式”,尝试将SQLALCHEMY_ECHO设置为True:http://flask-sqlalchemy.pocoo.org/2.3/config/还有这个选项尚未测试:https://github.com/pallets/flask-sqlalchemy/pull/208/files?short_path=fd40cf2

在Flask应用程序上,您也可以将调试设置为True。

另一种选择是调试,如果你可以直接在机器/容器上的客户端上连接RDS,或者至少在telnet工作时连接。

© www.soinside.com 2019 - 2024. All rights reserved.