AWS Elastic Beanstalk更改RDS端点

时间:2014-05-14 19:44:25

标签: amazon-web-services amazon-rds elastic-beanstalk

如何更改AWS Elastic Beanstalk环境的已配置RDS端点? 例如。删除RDS数据库后或应将其替换为新的RDS数据库。

3 个答案:

答案 0 :(得分:13)

更新

主题仍然很复杂,AWS Elastic Beanstalk (EB)文档仍然可以更好地澄清可用选项。问题是如何更改RDS端点,这似乎是以两种不同的方式阅读:

  1. 有人可以解释如何将现有的外部管理的RDS端点附加到现有的(不是新的!)EB环境 - 这确实是不可能的,而是需要诉诸于此例如,应用程序内部的场景在Using Amazon RDS with Python在Python中使用现有Amazon RDS数据库实例一节中概述。
  2. 相反,OP在RDS数据库被删除后应该知道如何做,或者应该用新的RDS数据库替换,即在过程中暗示RDS端点的变化为已有的的现有EB环境创建新的RDS数据库 - 这确实可以通过DBSnapshotIdentifier Option Value来实现,这表示数据库快照的标识符从恢复。 EB文档再一次并不完全具有决定性意义,但是,EB正在使用AWS CloudFormationAWS::RDS::DBInstance - DBSnapshotIdentifier的条目提供了更多详细信息:

      

    通过指定此属性,您可以从中创建数据库实例   指定数据库快照。如果DBSnapshotIdentifier属性是   空字符串或AWS :: RDS :: DBInstance声明没有   DBSnapshotIdentifier属性,数据库创建为新的   数据库。如果属性包含值(空字符串除外),   AWS CloudFormation从指定的快照创建数据库。如果   数据库中不存在具有指定名称的快照   创建失败,堆栈回滚。

  3.      换句话说,为现有EB环境更新命名空间aws:rds:dbinstance中的任何General Option Values的典型结果是创建由EB管理的相应调整的RDS实例,从而创建新的RDS端点。 p>

    • 一个特定的子场景是使用DBSnapshotIdentifier,它根据引用的快照生成由EB管理的新RDS实例,因此可用于迁移(而不是附加)现有外部管理的RDS实例,尽管基于快照大小的停机时间相当长。

    初步答复

    虽然遗憾的是Configuring Databases with AWS Elastic Beanstalk未明确解决,但可选AWS Elastic Beanstalk数据库的Amazon RDS设置是通过Option Values处理的,请参阅aws:rds:dbinstance内的--option-settings 3}}

    虽然General Options隐藏了其UI背后的许多选项值,但您可以通过其他方式明确指定它们,无论是在创建环境时还是在更新环境时(这都是您要做的)更改RDS数据库实例的任何设置) - 参见例如来自AWS Management Consoleupdate-environment的参数{{1}}:

      

    如果已指定,AWS Elastic Beanstalk将更新与正在运行的环境关联的配置集,并将指定的配置选项设置为请求的值。

答案 1 :(得分:0)

不鼓励在环境中热插拔数据层,因为它会破坏环境的完整性。您要做的是使用RDS实例的还原快照克隆环境。这意味着您将拥有一个具有不同网址和主机的相同环境,如果一切顺利,那么您可以交换环境网址以启动DNS交换。

交换发生后,一切都很好,你可以继续缩小旧环境

答案 2 :(得分:0)

我在.ebextensions文件夹下创建了一个配置文件,其内容如下:

option_settings:
  - namespace: aws:rds:dbinstance
    option_name: DBSnapshotIdentifier
    value: <name-of-snapshot>

上传和部署,它将使用此快照创建一个新的RDS数据库。