Ben*_*rel 26 amazon-rds elastic-beanstalk
在创建 Elastic Beanstalk 环境之前,我已经创建了我的 RDS 实例。两者一起工作没有问题,但我希望它们链接在一起,并且可以通过RDS_*
环境变量访问 RDS 参数。
Elastic Beanstalk 配置页面说:
尽管第一个链接就地创建 RDS 实例并将其链接到当前环境,但第二个链接只是重定向到此文档页面。,不幸的是,它只解释了如何创建一个新的 RDS 实例,而不是如何链接一个现有的实例。
如何将现有 RDS 实例关联到我的 Elastic Beanstalk 环境?
rga*_*eth 26
“选定”的答案是正确的,但我想添加一些额外的信息,因为大多数同时使用 EB 和 RDS 的人也应该有相同的要求——即使他们还不知道。
第一个问题:为什么要让RDS实例存在于EB环境之外? 答:这样 RDS 实例的生命周期就不会与 EB 环境的生命周期相关联。即当你删除一个环境时,你不想用它破坏数据库。您想要将 RDS 实例实际绑定到您的环境的原因很少。
独立于 EB 设置 RDS 的一个问题是您不会自动填充 RDS_* 变量,因此需要检索它们的值并通过 Web 控制台或 .ebextensions 自己填充它们。但是,不建议您向代码添加凭据,因为这可能是一个安全漏洞。
但是,接下来的问题是,如果您想以编程方式创建环境(例如蓝绿零停机部署),那么您需要一个解决方案来解决如何每次填充敏感的 RDS 值(例如密码)。不幸的是,这需要您进一步降低 AWS 堆栈并使用 CloudFormation 模板。
理想的解决方案是对 EB 的增强,以便问题中提到的“使用现有数据库”链接实际上让您手动关联现有的 RDS 数据库,然后再次自动填充 RDS_* 环境变量,而不是将您重定向到无用的文档. AWS Support 表示,这是作为一项功能请求提出的,但当然没有给出时间表。
Ben*_*rel 20
来自AWS 支持的回答:
为了将现有数据库关联到 EB 环境,您必须通过管理控制台拍摄它的快照,然后在数据层下选择“创建新的 RDS 数据库”。由于 RDS 实例绑定到 Beanstalk 环境的底层 Cloudformation 堆栈的方式,似乎没有一种方法可以将正在运行的 RDS 实例关联到现有的 EB 环境,而无需从快照启动新的实例。如果您拍摄当前 RDS 实例的快照,您可以根据需要在 EB 中重新启动它。
如果您希望 RDS 实例存在于环境之外,您只需通过 EB 控制台提供连接参数作为环境变量:配置 -> Web 层 -> 软件配置。然后,您可以通过 PHP 读取环境变量。
归档时间: |
|
查看次数: |
22886 次 |
最近记录: |