我有一个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部署应用程序。
答案 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