

# 自动连接 EC2 实例和多可用区数据库集群
<a name="multiaz-ec2-rds-connect"></a>

您可以使用 RDS 控制台来简化在 Amazon Elastic Compute Cloud（Amazon EC2）实例和多可用区数据库集群之间设置连接的过程。通常，多可用区数据库集群位于私有子网中，而 EC2 实例位于 VPC 内的公有子网中。您可以在 EC2 实例上使用 SQL 客户端来连接到多可用区数据库集群。EC2 实例还可以运行用于访问私有多可用区数据库集群的 Web 服务器或应用程序。

![自动连接多可用区数据库集群以及 EC2 实例](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/multi-az-ec2-connect-overview.png)


如果您想连接到与多可用区数据库集群不在同一 VPC 中的 EC2 实例，请参阅[在 VPC 中访问数据库实例的场景](USER_VPC.Scenarios.md)中的相应方案。

**Topics**
+ [与 EC2 实例的自动连接概述](#multiaz-ec2-rds-connect-overview)
+ [自动连接 EC2 实例和多可用区数据库集群](#multiaz-ec2-rds-connect-connecting)
+ [查看连接的计算资源](#multiaz-ec2-rds-connect-viewing)

## 与 EC2 实例的自动连接概述
<a name="multiaz-ec2-rds-connect-overview"></a>

当您自动在 EC2 实例和多可用区数据库集群之间设置连接时，Amazon RDS 会为您的 EC2 实例和数据库集群配置 VPC 安全组。

以下是将 EC2 实例与多可用区数据库集群连接的要求：
+ EC2 实例必须与多可用区数据库集群存在于同一 VPC 中。

  如果同一 VPC 中不存在任何 EC2 实例，控制台将提供创建一个此类实例的链接。
+ 设置连接的用户必须具有执行以下 EC2 操作的权限：
  + `ec2:AuthorizeSecurityGroupEgress` 
  + `ec2:AuthorizeSecurityGroupIngress` 
  + `ec2:CreateSecurityGroup` 
  + `ec2:DescribeInstances` 
  + `ec2:DescribeNetworkInterfaces` 
  + `ec2:DescribeSecurityGroups` 
  + `ec2:ModifyNetworkInterfaceAttribute` 
  + `ec2:RevokeSecurityGroupEgress` 

当您设置与 EC2 实例的连接时，Amazon RDS 会根据与多可用区数据库集群和 EC2 实例关联的安全组的当前配置采取操作，如下表所述。


| 当前 RDS 安全组配置 | 当前 EC2 安全组配置 | RDS 操作 | 
| --- | --- | --- | 
|  有一个或多个安全组与多可用区数据库集群 [其名称与模式 `rds-ec2-{{n}}`（其中 `{{n}}` 是数字）相匹配] 关联。尚未修改与此模式匹配的安全组。该安全组只具有一条以 EC2 实例的 VPC 安全组作为源的入站规则。  |  有一个或多个安全组与 EC2 实例关联，此实例的名称与模式 `rds-ec2-{{n}}`（其中 `{{n}}` 是数字）相匹配。尚未修改与此模式匹配的安全组。该安全组只具有一条以多可用区数据库集群的 VPC 安全组作为源的出站规则。  |  Amazon RDS 不执行任何操作。 已在 EC2 实例和多可用区数据库集群之间自动配置了连接。由于 EC2 实例和 RDS 数据库之间已经存在连接，因此不会修改安全组。  | 
|  以下任一条件适用： [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/multiaz-ec2-rds-connect.html)  |  以下任一条件适用： [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/multiaz-ec2-rds-connect.html)  |  [RDS action: create new security groups](ec2-rds-connect.md#rds-action-create-new-security-groups)  | 
|  有一个或多个安全组与多可用区数据库集群（其名称与模式 `rds-ec2-{{n}}` 相匹配）关联。尚未修改与此模式匹配的安全组。该安全组只具有一条以 EC2 实例的 VPC 安全组作为源的入站规则。  |  有一个或多个安全组与 EC2 实例（名称与模式 `ec2-rds-{{n}}` 匹配）关联。但是，这些安全组都不能用于与多可用区数据库集群的连接。如果安全组没有一条以多可用区数据库集群的 VPC 安全组作为源的出站规则，则无法使用该安全组。如果已修改了安全组，也不能使用它。  |  [RDS action: create new security groups](ec2-rds-connect.md#rds-action-create-new-security-groups)  | 
|  有一个或多个安全组与多可用区数据库集群（其名称与模式 `rds-ec2-{{n}}` 相匹配）关联。尚未修改与此模式匹配的安全组。该安全组只具有一条以 EC2 实例的 VPC 安全组作为源的入站规则。  |  存在用于连接的有效 EC2 安全组，但它与 EC2 实例不关联。此安全组的名称与模式 `rds-ec2-{{n}}` 相匹配。尚未修改它。它只具有一条以多可用区数据库集群的 VPC 安全组作为源的出站规则。  |  [RDS action: associate EC2 security group](ec2-rds-connect.md#rds-action-associate-ec2-security-group)  | 
|  以下任一条件适用： [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/multiaz-ec2-rds-connect.html)  |  有一个或多个安全组与 EC2 实例关联，此实例的名称与模式 `rds-ec2-{{n}}` 相匹配。尚未修改与此模式匹配的安全组。该安全组只具有一条以多可用区数据库集群的 VPC 安全组作为源的出站规则。  |  [RDS action: create new security groups](ec2-rds-connect.md#rds-action-create-new-security-groups)  | 

**RDS 操作：创建新的安全组**  
Amazon RDS 执行以下操作：
+ 创建与模式 `rds-ec2-{{n}}` 匹配的新安全组。该安全组具有一条以 EC2 实例的 VPC 安全组作为源的入站规则。该安全组与多可用区数据库集群关联，并允许 EC2 实例访问多可用区数据库集群。
+ 创建与模式 `ec2-rds-{{n}}` 匹配的新安全组。该安全组具有一条以多可用区数据库集群的 VPC 安全组作为源的出站规则。该安全组与 EC2 实例相关联，并允许 EC2 实例向多可用区数据库集群发送流量。

**RDS 操作：关联 EC2 安全组**  
Amazon RDS 将有效的现有 EC2 安全组与 EC2 实例关联。该安全组允许 EC2 实例向多可用区数据库集群发送流量。

## 自动连接 EC2 实例和多可用区数据库集群
<a name="multiaz-ec2-rds-connect-connecting"></a>

在 EC2 实例与 RDS 数据库之间设置连接之前，请确保满足[与 EC2 实例的自动连接概述](ec2-rds-connect.md#ec2-rds-connect-overview)中所述的要求。

如果您在配置连接后更改安全组，则这些更改可能会影响 EC2 实例与 RDS 数据库之间的连接。

**注意**  
您只能使用 AWS 管理控制台自动在 EC2 实例与 RDS 数据库之间设置连接。您无法使用 AWS CLI 或 RDS API 自动设置连接。

**自动连接 EC2 实例与 RDS 数据库**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择 **Databases**（数据库），然后选择 RDS 数据库。

1. 从**操作**中，选择**设置 EC2 连接**。

   将出现 **Set up EC2 connection**（设置 EC2 连接）页面。

1. 在 **Set up EC2 connection**（设置 EC2 连接）页上，选择 EC2 实例。  
![“设置 EC2 连接”页面。](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/auto-connect-rds-ec2-set-up.png)

   如果同一 VPC 中不存在任何 EC2 实例，请选择 **Create EC2 instance**（创建 EC2 实例）来创建一个此类实例。在这种情况下，请确保新的 EC2 实例与 RDS 数据库位于同一 VPC 中。

1. 选择**继续**。

   将出现 **Review and confirm**（检查并确认）页面。  
![“EC2 连接检查和确认”页面。](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/auto-connect-rds-ec2-confirm.png)

1. 在 **Review and confirm**（检查并确认）页面上，检查 RDS 为设置与 EC2 实例的连接而将进行的更改。

   如果更改正确，请选择**确认并设置**。

   如果更改不正确，请选择 **Previous**（上一步）或 **Cancel**（取消）。

## 查看连接的计算资源
<a name="multiaz-ec2-rds-connect-viewing"></a>

您可以使用 AWS 管理控制台查看连接到 RDS 数据库的计算资源。显示的资源包括自动设置的计算资源连接。您可以通过以下方式自动设置与计算资源的连接：
+ 您可以在创建数据库时选择计算资源。

  有关更多信息，请参阅[创建 Amazon RDS 数据库实例](USER_CreateDBInstance.md)和[创建 Amazon RDS 的多可用区数据库集群](create-multi-az-db-cluster.md)。
+ 您可以在现有数据库和计算资源之间设置连接。

  有关更多信息，请参阅 [自动连接 EC2 实例和 RDS 数据库](ec2-rds-connect.md#ec2-rds-connect-connecting)。

列出的计算资源不包括手动连接到数据库的计算资源。例如，您可以通过向与数据库关联的 VPC 安全组添加规则来允许计算资源手动访问数据库。

要列出计算资源，必须满足以下条件：
+ 与计算资源关联的安全组的名称与模式 `ec2-rds-{{n}}` 相匹配（其中 `{{n}}` 是数字）。
+ 与计算资源关联的安全组具有出站规则，其端口范围设置为 RDS 数据库使用的端口。
+ 与计算资源关联的安全组具有出站规则，源设置为与 RDS 数据库关联的安全组。
+ 与 RDS 数据库关联的安全组的名称与模式 `rds-ec2-{{n}}`（其中 `{{n}}` 是数字）相匹配。
+ 与 RDS 数据库关联的安全组具有入站规则，其端口范围设置为 RDS 数据库使用的端口。
+ 与 RDS 数据库关联的安全组有一条入站规则，其源设置为与计算资源关联的安全组。

**查看连接到 RDS 数据库的计算资源**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择 **Databases**（数据库），然后选择 RDS 数据库的名称。

1. 在 **Connectivity & security**（连接和安全）选项卡上，在 **Connected compute resources**（连接的计算资源）中查看计算资源。  
![连接的计算资源。](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/ec2-connected-compute-resources.png)