在 EC2 classic 中启动并连接到外部 Amazon RDS 实例 - AWS Elastic Beanstalk
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

在 EC2 classic 中启动并连接到外部 Amazon RDS 实例

如果您将 EC2 Classic (无 VPC) 与 AWS Elastic Beanstalk 结合使用,该过程会由于安全组的工作方式的差异而略微改变。在 EC2 Classic 中,数据库实例无法使用 EC2 安全组,因此会获取只适用于 Amazon RDS 的数据库安全组。

您可以向数据库安全组添加规则以允许来自 EC2 安全组的入口流量,但您无法将数据库安全组附加到环境的 Auto Scaling 组。要避免在数据库安全组和您的环境之间建立依赖关系,您必须在 Amazon EC2 中创建第三个安全组,在数据库安全组中添加一个规则以便为新安全组授予入口权限,然后将其分配给您的 Elastic Beanstalk 环境中的 Auto Scaling 组。

在 EC2 classic (无 VPC) 中启动 RDS 实例

  1. 打开 RDS 管理控制台

  2. 选择创建数据库

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

    • Master Username (主用户名)

    • Master Password

  4. 当您到达配置高级设置时,对于网络与安全性设置,选择以下选项:

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

    • 可用区No Preference

    • 数据库安全组Create new Security Group

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

    • 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. 选择创建

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

修改 RDS 实例的安全组上的入口流量规则

  1. 打开 Amazon RDS 控制台

  2. 选择数据库

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

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

  5. 在安全组详细信息中,将 Connection Type (连接类型) 设置为 EC2 Security Group (EC2 安全组)

  6. EC2 Security Group Name (EC2 安全组名称) 设置为您创建的桥接安全组的名称。

  7. 选择 Authorize

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

向环境添加安全组

  • 执行以下任一操作:

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

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

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

        注意

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

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

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

      5. EC2 安全组下面,选择 Elastic Beanstalk 创建的实例安全组以及要附加到实例的安全组。

      6. 选择 Apply

      7. 阅读警告,然后选择确认

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

接下来,使用环境属性将连接信息传递到环境。在使用 Elastic Beanstalk 控制台在环境中添加数据库实例时,Elastic Beanstalk 使用 RDS_HOSTNAME 等环境属性将连接信息传送到您的应用程序。您可以使用相同的属性,这将允许您将相同的应用程序代码与集成的数据库实例和外部数据库实例结合使用,您也可以选择自己的属性名称。

配置环境属性

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

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

    注意

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

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

  4. Software (软件) 配置类别中,选择 Edit (编辑)

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

    • RDS_DB_NAME – Amazon RDS 控制台中显示的 DB Name (数据库名称)

    • RDS_USERNAME – 向环境添加数据库时输入的 Master Username (主用户名)

    • RDS_PASSWORD – 向环境添加数据库时输入的 Master Password (主密码)

    • RDS_HOSTNAME – Amazon RDS 控制台中显示的数据库实例的 Endpoint (终端节点)

    • RDS_PORT – Amazon RDS 控制台中显示的 Port (端口)

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

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

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

重新启动您的环境的应用程序服务器

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

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

    注意

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

  3. 选择 Environment actions (环境操作),然后选择 Restart app server(s) (重新启动应用程序服务器)