使用 Elastic Beanstalk 在EC2经典版中启动并连接外部亚马逊RDS实例(已停用) - AWS Elastic Beanstalk

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Elastic Beanstalk 在EC2经典版中启动并连接外部亚马逊RDS实例(已停用)

重要

亚马逊 EC2-经典版已于 2022 年 8 月 15 日终止其标准支持。有关更多信息,请参阅 “EC2经典网络即将停用——以下是如何准备” 博客文章。

如果您将 EC2 Classic (noVPC) 与 AWS Elastic Beanstalk Classic (no) 一起使用,则由于安全组的工作方式不同,过程会略有变化。在 EC2 Classic 中,数据库实例无法使用EC2安全组,因此它们会获得仅适用于 Amazon 的数据库安全组RDS。

您可以向数据库安全组添加规则,允许来自EC2安全组的入站访问。但是,您不能将数据库安全组附加到与环境关联的 Auto Scaling 组。为避免在数据库安全组和您的环境之间产生依赖关系,您必须在 Amazon 中创建第三个安全组EC2。然后,您需要在数据库安全组中添加规则以授予对新安全组的入站访问权限。最后,您应该将其分配给您的 Elastic Beanstalk 环境中的 Auto Scaling 组。

注意
  • 如果您从 Elastic Beanstalk 创建并随后与 Beanstalk 环境解耦的数据库开始,则可以跳过第一组步骤,然后按 To create a bridge security group(创建桥接安全组)下分组的步骤继续。

  • 如果您计划为生产环境使用解耦数据库,请验证数据库使用的存储类型适合您的工作负载。有关更多信息,请参阅 Amazon RDS 用户指南中的数据库实例存储和修改数据库实例。

要启动EC2经典版RDS实例(否VPC)
  1. 打开 RDS 管理控制台

  2. 选择 Create database(创建数据库)。

  3. 继续执行向导。记下为以下选项输入的值:

    • Master Username(主用户名)

    • Master Password(主密码)

  4. 当您到达 Configure advanced settings(配置高级设置)时,对于 Network and Security(网络与安全性)设置,选择以下选项:

    • VPCNot in VPC。如果此选项不可用,则您的账户可能不支持 EC2-Classic,或者您可能选择了仅在中VPC可用的实例类型

    • Availability Zone(可用区)– No Preference

    • DB Security Group(s)(数据库安全组)–Create new Security Group

  5. 配置剩余选项并选择 Create database(创建数据库)。记下为以下选项输入的值:

    • Database Name(数据库名称)

    • Database Port(数据库端口)

在 EC2-Classic 中,您的数据库实例使用的是数据库安全组,而不是VPC安全组。您无法将数据库安全组附加到 Elastic Beanstalk 环境。相反,您需要创建一个新安全组,您可为其授予访问数据库实例的权限并将其附加到环境。我们将此安全组称为桥接安全组 并将其命名为 webapp-bridge

创建桥接安全组
  1. 打开 Amazon EC2 控制台

  2. 在导航侧边栏中的 Network & Security(网络与安全性)下,选择 Security Groups(安全组)。

  3. 选择 Create Security Group(创建安全组)。

  4. 对于 Security group name(安全组名称),请键入 webapp-bridge

  5. 对于 Description(描述),键入 Provide access to DB instance from Elastic Beanstalk environment instances.

  6. 对于 VPC,请将默认值保留为选中状态。

  7. 选择 Create(创建)。

接下来,修改附加到数据库实例的安全组以允许来自桥接安全组的入站流量。

修改您的RDS实例安全组的入口规则
  1. 打开 Amazon RDS 控制台

  2. 选择 Databases(数据库)。

  3. 选择您的数据库实例的名称以查看其详细信息。

  4. Connectivity(连接)部分中,在 Security(安全性)下,与数据库实例关联的安全组将会显示。打开链接,在 Amazon EC2 控制台中查看安全组。

  5. 在安全组详细信息中,将连接类型设置为EC2安全组

  6. EC2安全组名称设置为您创建的网桥安全组的名称。

  7. 选择 Authorize(授权)。

接下来,将桥接安全组添加到您的运行环境。此过程要求使用附加的其他安全组重新配置环境中的所有实例。

向环境添加安全组
  • 请执行以下操作之一:

    • 使用 Elastic Beanstalk 控制台添加安全组

      1. 打开 Elastic Beanstalk 控制台,然后在 “区域” 列表中,选择您的。 AWS 区域

      2. 在导航窗格中,选择 Environments(环境),然后从列表中选择环境的名称。

        注意

        如果您有多个环境,请使用搜索栏筛选环境列表。

      3. 在导航窗格中,选择 Configuration(配置)。

      4. Instances(实例)配置类别中,选择 Edit(编辑)。

      5. EC2安全组下,除了 Elastic Beanstalk 创建的实例安全组外,还要选择要附加到实例的安全组。

      6. 要保存更改,请选择页面底部的 Apply(应用)。

      7. 阅读警告,然后选择 Confirm(确认)。

    • 要使用配置文件添加安全组,请使用 securitygroup-addexisting.config 示例文件。

接下来,使用环境属性将连接信息传递到环境。当您使用 El astic Beanstalk 控制台向环境中添加数据库实例时,Elastic Beanstalk 会使用环境RDS属性(例如 _)将连接信息传递给您的应用程序。HOSTNAME您可以使用相同的属性,这将允许您将相同的应用程序代码与集成的数据库实例和外部的数据库实例结合使用,您也可以选择自己的属性名称。或者,您可以选择自己的属性名称。

配置环境属性
  1. 打开 Elastic Beanstalk 控制台,然后在 “区域” 列表中,选择您的。 AWS 区域

  2. 在导航窗格中,选择 Environments(环境),然后从列表中选择环境的名称。

    注意

    如果您有多个环境,请使用搜索栏筛选环境列表。

  3. 在导航窗格中,选择 Configuration(配置)。

  4. Updates, monitoring, and logging(更新、监控和日志记录)配置类别中,选择 Edit(编辑)。

  5. Environment Properties(环境属性)部分中,定义应用程序读取的用于构建连接字符串的变量。为了与具有集成RDS实例的环境兼容,请使用以下内容:

    • RDS_DB_ NAME — 亚马逊RDS控制台中的数据库名称

    • RDS_ USERNAME — 向环境中添加数据库时输入的主用户名

    • RDS_ PASSWORD — 向环境中添加数据库时输入的主密码

    • RDS_ HOSTNAME — Amazon RDS 控制台中数据库实例的终端节点

    • RDS_ PORT — Amazon RDS 控制台中的端口

    添加了属性的环境RDS属性配置部分
  6. 选择 Apply(应用)

如果您尚未将应用程序编程为读取环境属性和构建连接字符串,请参阅以下特定于语言的主题以获得指导:

最后,根据应用程序读取环境变量的时间,您可能需要在环境中的实例上重新启动应用程序服务器。

重新启动您的环境的应用程序服务器
  1. 打开 Elastic Beanstalk 控制台,然后在 “区域” 列表中,选择您的。 AWS 区域

  2. 在导航窗格中,选择 Environments(环境),然后从列表中选择环境的名称。

    注意

    如果您有多个环境,请使用搜索栏筛选环境列表。

  3. 选择 Actions(操作),然后选择 Restart app server(s)(重启应用程序服务器)。