Flask在Elastic Beanstalk上管理Dev Live数据库

时间:2017-09-29 09:13:55

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

我有一个Flask应用程序,我已经部署到AWS Elastic Beanstalk并且一切正常。但是,我目前将SQLAlchemy连接字符串硬编码为实时AWS字符串。我现在需要进行设置,以便AWS服务器自动获取正确的字符串,而我的本地环境使用dev(本地字符串)。我一直在阅读以下关于如何实现这一目标的帖子:

Flask: How to manage different environment databases?

这在理论上是有道理的,但我找不到任何关于如何在AWS Elastic Beanstalk上实际实现此目的的实际示例。我的 init .py代码如下所示:

from flask import Flask
from flask_debugtoolbar import DebugToolbarExtension
from flask_cors import CORS, cross_origin
from flask_sqlalchemy import SQLAlchemy

application = app = Flask(__name__)

app.config.from_object('config')
app.config.from_envvar('XXXXXPRODUCTION_CONFIG',silent=True)
db = SQLAlchemy(app)
CORS(app)

Config.py看起来像这样:

SQLALCHEMY_DATABASE_URI = 'mysql://root:xxxxxxx@localhost/xxxxx'
SQLALCHEMY_TRACK_MODIFICATIONS = False
DEBUG = True

Config_production_dev.py看起来像这样:

SQLALCHEMY_DATABASE_URI = 'mysql://xxxxxx:xxxxxx@#########.cuhrbowyd8hk.eu-west-2.rds.amazonaws.com/ebdb'
SQLALCHEMY_TRACK_MODIFICATIONS = False
DEBUG = False

所以一切都已设置但我现在不知道如何为AWS实例启动此部分:

app.config.from_envvar('XXXXXPRODUCTION_CONFIG',silent=True)

根据上面提到的帖子,我需要这样的事情:

环境= XXXXXPRODUCTION_CONFIG = “/家/ TIGRA / mycoolapp / settings_production.py”

但路径是否显示在我本地计算机上的路径?或者我的Elastic Beanstalk应用程序的路径?如果是这样,我如何找到这条路径的细节?另外,如何将此命令加载到EB环境中以便执行?我无法在任何地方找到这些信息。任何帮助将不胜感激。

我正在eb cli中使用eb deploy部署应用程序。

1 个答案:

答案 0 :(得分:1)

我已经完成了最后一步,所以如果你遇到同样的问题,请看下面的内容。 Elastic Beanstalk环境变量就是答案。在我的情况下,我需要在eb cli中运行以下命令:

eb setenv XXXXXPRODUCTION_CONFIG = / opt / python / current / app / config_production_dev.py

路径是Elastic Beanstalk服务器上app文件夹中的config_production_dev.py文件,我通过SSH导航找到了它。

也可以在此处通过浏览器设置环境变量:

登录AWS然后

服务>弹性豆茎> “你的环境”>配置>软件配置

然后向下滚动到“环境属性”。就我而言:

物业名称:XXXXXPRODUCTION_CONFIG

属性值:/opt/python/current/app/config_production_dev.py