Flask SQLAlchemy 数据库与 AWS Elastic Beanstalk - 浪费时间?
Flask SQLAlchemy Database with AWS Elastic Beanstalk - waste of time?
我已成功将 Flask 应用程序部署到 AWS Elastic Beanstalk。该应用程序使用 SQLAlchemy 数据库,我正在使用 Flask-Security 来处理 login/registration,等等。我正在使用 Flask-Migrate 来处理数据库迁移。
这里的问题是,每当我使用 git aws.push
时,它都会将我的本地数据库推送到 AWS 并覆盖实时数据库。我想我想做的只是 "pull" 来自 AWS EB 的现场直播,并且只在极少数情况下推送。
我能否访问已推送到 AWS 的 SQLAlchemy 数据库?或者,这不可能吗?也许 .gitignore
和 .elasticbeanstalk
设置的某种组合可以工作?
我正在使用 SQLite。
是的,您的数据库需要而不是在版本控制中,它应该存在于持久存储中(很可能the Elastic Block Storage service (EBS)), and you should handle schema changes (migrations) using something like Flask-Migrate。
AWS help article on EBS 应该可以让您入门,但在更高层次上,您要做的是:
- Create an EBS volume
- 将卷附加到 运行ning 实例
- 在实例上安装卷
- 使用网络文件系统 (NFS) 将卷公开给其他实例
- 确保当新的 EBS 实例启动时,它们装载 NFS
或者,您可以:
- 等到 Elastic File System (EFS) 结束预览(或请求访问),并在 EB 支持 EFS 后将所有 EB 启动的实例安装到 EFS 上。
- 切换到 the Relational Database Service (RDS)(或 运行 你自己在 EC2 上的数据库服务器)和 运行 一个实例(PostgreSQL|MySQL|无论你选择什么)本地测试。
关键是在 Elastic Beanstalk 环境之外托管您的数据库。否则,随着负载的增加,您的 Flask 应用程序的不同实例将写入它们自己的本地数据库。不会有包含所有提交的 "master" 数据库。
最简单的解决方案是使用 AWS 关系数据库服务 (RDS) 将您的数据库托管为外部服务。一个很好的教程,详细介绍了这个场景:
Deploying a Flask Application on AWS using Elastic Beanstalk and RDS
SQLAlchemy/Flask/AWS绝对不会浪费时间!祝你好运。
我已成功将 Flask 应用程序部署到 AWS Elastic Beanstalk。该应用程序使用 SQLAlchemy 数据库,我正在使用 Flask-Security 来处理 login/registration,等等。我正在使用 Flask-Migrate 来处理数据库迁移。
这里的问题是,每当我使用 git aws.push
时,它都会将我的本地数据库推送到 AWS 并覆盖实时数据库。我想我想做的只是 "pull" 来自 AWS EB 的现场直播,并且只在极少数情况下推送。
我能否访问已推送到 AWS 的 SQLAlchemy 数据库?或者,这不可能吗?也许 .gitignore
和 .elasticbeanstalk
设置的某种组合可以工作?
我正在使用 SQLite。
是的,您的数据库需要而不是在版本控制中,它应该存在于持久存储中(很可能the Elastic Block Storage service (EBS)), and you should handle schema changes (migrations) using something like Flask-Migrate。
AWS help article on EBS 应该可以让您入门,但在更高层次上,您要做的是:
- Create an EBS volume
- 将卷附加到 运行ning 实例
- 在实例上安装卷
- 使用网络文件系统 (NFS) 将卷公开给其他实例
- 确保当新的 EBS 实例启动时,它们装载 NFS
或者,您可以:
- 等到 Elastic File System (EFS) 结束预览(或请求访问),并在 EB 支持 EFS 后将所有 EB 启动的实例安装到 EFS 上。
- 切换到 the Relational Database Service (RDS)(或 运行 你自己在 EC2 上的数据库服务器)和 运行 一个实例(PostgreSQL|MySQL|无论你选择什么)本地测试。
关键是在 Elastic Beanstalk 环境之外托管您的数据库。否则,随着负载的增加,您的 Flask 应用程序的不同实例将写入它们自己的本地数据库。不会有包含所有提交的 "master" 数据库。
最简单的解决方案是使用 AWS 关系数据库服务 (RDS) 将您的数据库托管为外部服务。一个很好的教程,详细介绍了这个场景:
Deploying a Flask Application on AWS using Elastic Beanstalk and RDS
SQLAlchemy/Flask/AWS绝对不会浪费时间!祝你好运。