【问题标题】:Flask SQLAlchemy Database with AWS Elastic Beanstalk - waste of time?使用 AWS Elastic Beanstalk 烧瓶 SQLAlchemy 数据库 - 浪费时间?
【发布时间】:2015-06-17 23:51:06
【问题描述】:

我已成功将 Flask 应用程序部署到 AWS Elastic Beanstalk。该应用程序使用 SQLAlchemy 数据库,我正在使用 Flask-Security 来处理登录/注册等。我正在使用 Flask-Migrate 来处理数据库迁移。

这里的问题是,每当我使用git aws.push 时,它都会将我的本地数据库推送到 AWS 并覆盖实时数据库。我想我想做的只是从 AWS EB 中“拉”实时,并且只在极少数情况下推送。

我能否访问已推送到 AWS 的 SQLAlchemy 数据库?或者,这不可能吗?也许.gitignore.elasticbeanstalk 设置的一些组合可以工作?

我正在使用 SQLite。

【问题讨论】:

  • 我记得 SQLAlchemy 只是一个 ORM,你的 实际 数据库是什么? SQLite?还是您在谈论一些架构/迁移文件?
  • .gitignore是你的朋友

标签: sqlite amazon-web-services amazon-elastic-beanstalk flask-sqlalchemy flask-security


【解决方案1】:

关键是在 Elastic Beanstalk 环境之外托管您的数据库。如果没有,随着负载的增加,您的 Flask 应用程序的不同实例将写入它们自己的本地数据库。不会有包含所有提交的“主”数据库。

最简单的解决方案是使用 AWS 关系数据库服务 (RDS) 将您的数据库作为外部服务托管。一个很好的教程,介绍了这个确切的场景:

Deploying a Flask Application on AWS using Elastic Beanstalk and RDS

SQLAlchemy/Flask/AWS 绝对不是浪费时间!祝你好运。

【讨论】:

  • 请在此稍微描述一下教程的内容
  • 本教程是一个分步示例,说明如何在 AWS 上部署一个带有数据库的简单 Flask 应用程序。它假定事先不熟悉 AWS,并且 Flask 代码是通过 GitHub 提供的。教程中的第 3 步和第 4 步将帮助原始海报,它们展示了如何在 AWS 中设置 SQL 数据库并将其绑定到您的 Flask 应用程序。
【解决方案2】:

是的,您的数据库需要在版本控制中,它应该存在于持久存储上(很可能是the Elastic Block Storage service (EBS)),并且您应该使用类似@987654322 的方式处理架构更改(迁移) @。

AWS help article on EBS 应该可以帮助您入门,但在高层次上,您要做的是:

  • Create an EBS volume
  • 将卷附加到正在运行的实例
  • 在实例上挂载卷
  • 使用网络文件系统 (NFS) 将卷公开给其他实例
  • 确保在新 EBS 实例启动时挂载 NFS

或者,您可以:

  • 等到Elastic File System (EFS) 退出预览版(或请求访问),并在 EB 支持 EFS 后将所有 EB 启动的实例挂载到 EFS 上。
  • 切换到the Relational Database Service (RDS)(或在 EC2 上运行您自己的数据库服务器)并在本地运行(PostgreSQL|MySQL|无论您选择什么)的实例进行测试。

【讨论】:

  • 没有赞?这个答案比另一个答案更丰富,它应该排在第一位!
猜你喜欢
  • 2021-02-21
  • 2021-04-20
  • 2016-06-03
  • 2018-10-26
  • 1970-01-01
  • 2015-06-14
  • 2019-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多