如何让两个 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 调用

如何将 Elastic Beanstalk 获取到服务器编译的资产?