如何让两个 Elastic Beanstalk 环境共享一个数据库实例
Posted
技术标签:
【中文标题】如何让两个 Elastic Beanstalk 环境共享一个数据库实例【英文标题】:How to make two Elastic Beanstalk environments share one database instance 【发布时间】:2013-04-28 09:05:18 【问题描述】:我有一个 Rails 弹性 beanstalk 应用程序,它有两个环境,暂存和生产。在使用eb init
创建应用程序和登台环境时,我创建了一个数据库实例。我使用 eb 控制台创建了生产环境并创建了一个新的数据库实例,我认为这显然是一个错误的举动。
如何让我的两个环境共享同一个数据库实例?如果发生这种情况,当我在我的应用程序中更新数据库迁移并部署到登台时怎么样?这意味着我的用户会看到它,因为登台环境使用相同的数据库。
我该如何处理这个问题?
我还注意到git aws.push
不会覆盖我的数据库,但不会删除回滚迁移。我错过了什么吗?
【问题讨论】:
【参考方案1】:我会向您推荐以下选项:在弹性 beanstalk 环境之外创建 rds 实例。为生产和暂存创建单独的模式。将连接字符串传递给您的 EBS 应用程序。 EBS 环境之间的共享 rds 实例将对您有所帮助:
降低环境成本,因为运行多个 rds 实例的成本很高。
帮助您隔离生产和暂存环境。
【讨论】:
如果我想同意你的观点,我如何将我的数据库从本地主机独立推送到新的 RDS 实例?请记住它的 rails 和git aws.push
进行部署,但不再使用您的解决方案。那怎么办?
您可以使用配置文件将 .ebextentions 添加到您的应用程序文件夹中,该配置文件将包含配置设置,例如到数据库的连接字符串和运行迁移的脚本。我建议阅读文章:docs.aws.amazon.com/elasticbeanstalk/latest/dg/…
我将尝试再解释一下我的想法,步骤如下: 1. 您可以手动创建用于生产和登台的 rds 实例和模式。 2. 您可以将弹性beantalk 配置文件添加到您的应用程序中,您可以在其中定义与暂存或生产相关的当前数据库的连接字符串,也可以在此处定义运行迁移的命令。 3. 做 git aws.push :)以上是关于如何让两个 Elastic Beanstalk 环境共享一个数据库实例的主要内容,如果未能解决你的问题,请参考以下文章
如何让 SSL 与 Rails、AWS Elastic Beanstalk 和 Cloudflare 一起使用
如何让 HTTPS 在网站上运行 - 特别是 AWS 中的 Elastic Beanstalk 网站
如何让Elastic Beanstalk nginx支持的代理服务器从HTTP自动重定向到HTTPS?
如何使用 TFS 2017 部署到 Elastic Beanstalk?
如何让 AWS S3 存储桶中的 Angular 应用程序对 AWS Elastic Beanstalk 中的服务进行 API 调用