AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 540828
Accepted
BenMorel
BenMorel
Asked: 2013-09-23 08:57:47 +0800 CST2013-09-23 08:57:47 +0800 CST 2013-09-23 08:57:47 +0800 CST

如何将现有 RDS 实例关联到 Elastic Beanstalk 环境?

  • 772

我在创建 Elastic Beanstalk 环境之前创建了我的 RDS 实例。两者一起工作没有问题,但我希望将它们链接在一起,并通过RDS_*环境变量访问 RDS 参数。

Elastic Beanstalk 配置页面说:

您没有数据库。 您可以创建新的 RDS 数据库或使用现有数据库。

虽然第一个链接就地创建了一个 RDS 实例并将其链接到当前环境,但第二个链接只是重定向到此文档页面。,不幸的是,它只解释了如何创建一个新的 RDS 实例,而不是如何链接现有的实例。

如何将现有 RDS 实例关联到我的 Elastic Beanstalk 环境?

amazon-rds
  • 6 6 个回答
  • 25022 Views

6 个回答

  • Voted
  1. rgareth
    2014-02-25T14:00:59+08:002014-02-25T14:00:59+08:00

    “选择”的答案是正确的,但我想添加一些额外的信息,因为大多数同时使用 EB 和 RDS 的人也应该有相同的要求——即使他们还不知道。

    第一个问题:为什么要RDS实例存在于EB环境之外? 答:这样 RDS 实例的生命周期与 EB 环境的生命周期无关。即当你删除一个环境时,你不想用它破坏数据库。您想要将 RDS 实例实际绑定到您的环境的原因很少。

    独立于 EB 设置 RDS 的一个问题是您不会自动填充 RDS_* 变量,因此需要检索它们的值并通过 Web 控制台或 .ebextensions 自行填充它们。不过,不建议您在代码中添加凭据,因为这可能是一个安全漏洞。

    但是,下一个问题是,如果您想以编程方式创建环境(例如蓝绿零停机部署),那么您需要一个解决方案来解决如何每次都填充敏感的 RDS 值(例如密码)。不幸的是,这需要您进一步降低 AWS 堆栈并使用 CloudFormation 模板。

    理想的解决方案是对 EB 的增强,以便问题中提到的“使用现有数据库”链接实际上允许您手动关联现有 RDS 数据库,然后再次自动填充 RDS_* 环境变量,而不是将您重定向到无用的文档. AWS Support 表示,这已作为一项功能请求提出,但当然没有给出时间表。

    • 29
  2. Best Answer
    BenMorel
    2013-09-24T00:17:31+08:002013-09-24T00:17:31+08:00

    AWS 支持人员的回答:

    为了将现有数据库与 EB 环境相关联,您必须通过管理控制台对其进行快照,然后在数据层下选择“创建新的 RDS 数据库”。由于 RDS 实例绑定到 Beanstalk 环境的底层 Cloudformation 堆栈的方式,似乎没有一种方法可以将正在运行的 RDS 实例与现有的 EB 环境相关联,而无需从快照启动新实例。如果您拍摄当前 RDS 实例的快照,您可以根据需要在 EB 中重新启动它。

    如果您希望 RDS 实例存在于环境之外,您只需通过 EB 控制台将连接参数作为环境变量提供:配置 -> Web 层 -> 软件配置。然后,您可以通过 PHP 读取环境变量。

    • 24
  3. Torsten
    2017-01-11T16:58:21+08:002017-01-11T16:58:21+08:00

    我最近需要这样做,并且还想使用 AWS CLI/EB CLI 自动执行这些步骤。无论如何,这基本上是我遵循的步骤(假设您已经创建了一个 RDS 实例):

    1. 确保您为 RDS 实例设置了不同的安全组(不是 VPC 默认组)。您可以使用aws ec2 create-security-group(AWS CLI) 并使用 (AWS CLI) 将其与 RDS 实例相关联aws rds modify-db-instance。
    2. 初始化您的 beanstalk 应用程序(我为此使用eb init了 (EB CLI))。
    3. 从您的 RDS 数据库中读取相关配置数据(数据库名称、主机名、端口等)。我用过aws rds describe-db-instances。
    4. RDS_*当您创建环境(或稍后部署环境)时,使用该数据在 EB 实例上设置环境变量。您可以使用eb create/ eb deploy(EB CLI) 执行此操作。当您最初创建环境时,它会降级,因为访问 RDS 数据库的安全组没有正确设置。
    5. 从 EB 配置中获取相关的安全组。您需要一个用于自动缩放组和弹性负载均衡器。您可以为此使用aws elasticbeanstalk describe-configuration-settings(AWS CLI)。
    6. 为您在步骤 1 中设置的安全组授权您的自动扩展组,以将入站流量传入您的数据库。为此,我使用了aws ec2 authorize-security-group-ingress(AWS CLI),它使用 VPC 安全组(而不是数据库安全组)。如果您所在的地区支持数据库安全组,您可能可以实现相同的效果。设置入站流量规则时,请确保为数据库引擎使用正确的协议和端口。
    7. 将弹性负载均衡器组添加到您的 RDS 实例的安全组(再次使用aws rds modify-db-instance(AWS CLI))。
    8. 重新启动或重新部署 Elastic Beanstalk 应用程序(例如使用eb deploy(EB CLI))。我不得不重新部署,因为我在部署上运行迁移。

    主要是这样。现在,只要您保持主机名和数据库凭证相同,您就应该能够在不关心 EB 实例的情况下扩大/缩小 RDS 实例。您也可以使用该方法进行蓝/绿部署(但您可能需要执行一些额外的步骤来撤销安全组访问)。

    • 2
  4. pba
    2018-10-21T01:57:08+08:002018-10-21T01:57:08+08:00

    通过配置向 EB EC2 实例添加现有安全组的最简单方法是使用https://github.com/awsdocs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/中描述的简单文件安全配置/安全组-addexisting.config

    例如:

    $ cat .ebextensions/securitygroup-addexisting.config
    option_settings:
      - namespace: aws:autoscaling:launchconfiguration
        option_name: SecurityGroups
        value: rds-launch-wizard-1
    
    • 0
  5. vaquar khan
    2019-08-30T19:15:07+08:002019-08-30T19:15:07+08:00

    我面临同样的问题并使用以下步骤修复:

    1) 转到 EC2 实例并记下您的安全组示例“sg-121212121212”

    2) 转到 RDS 安全组 ad=nd 入站流量

    3)编辑规则选择所有流量并添加新的ebs安全组“sg-121212121212”

    希望它会有所帮助

    • 0
  6. max
    2015-09-11T09:11:01+08:002015-09-11T09:11:01+08:00

    在 Elastic 下创建 RDS;它将添加新的正确安全组;修改旧有RDS的安全组;在网络配置中设置正确的连接字符串,一切正常......

    • -2

相关问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve