

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

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

![\[自动将 Aurora 数据库集群与 EC2 实例连接。\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/images/auto-connect-aurora-ec2.png)


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

**Topics**
+ [与 EC2 实例的自动连接概述](#ec2-rds-connect-overview)
+ [自动连接 EC2 实例和 Aurora 数据库集群](#ec2-rds-connect-connecting)
+ [查看连接的计算资源](#ec2-rds-connect-viewing)
+ [连接到运行特定数据库引擎的数据库实例](#ec2-rds-Connect-DBEngine)

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

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

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

  如果同一 VPC 中不存在任何 EC2 实例，则控制台将提供创建一个此类实例的链接。
+ 目前，数据库集群不能是 Aurora Serverless 数据库集群，也不能是 Aurora Global Database 的一部分。
+ 设置连接的用户必须具有执行以下 Amazon EC2 操作的权限：
  + `ec2:AuthorizeSecurityGroupEgress` 
  + `ec2:AuthorizeSecurityGroupIngress` 
  + `ec2:CreateSecurityGroup` 
  + `ec2:DescribeInstances` 
  + `ec2:DescribeNetworkInterfaces` 
  + `ec2:DescribeSecurityGroups` 
  + `ec2:ModifyNetworkInterfaceAttribute` 
  + `ec2:RevokeSecurityGroupEgress` 

如果数据库实例和 EC2 实例位于不同的可用区，则您的账户可能会产生跨可用区成本。

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


****  

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

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

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

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

**自动连接 EC2 实例与 Aurora 数据库集群**

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

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

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

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

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

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

1. 选择**继续**。

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

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

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

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

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

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

  有关更多信息，请参阅 [创建 Amazon Aurora 数据库集群](Aurora.CreateInstance.md)。
+ 您可以在现有数据库和计算资源之间设置连接。

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

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

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

**查看连接到 Aurora 数据库集群的计算资源**

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

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

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

## 连接到运行特定数据库引擎的数据库实例
<a name="ec2-rds-Connect-DBEngine"></a>

有关连接到运行特定数据库引擎的数据库实例的信息，请按照数据库引擎的说明操作：
+ [连接到 Amazon Aurora MySQL 数据库集群](Aurora.Connecting.md#Aurora.Connecting.AuroraMySQL)
+ [连接到 Amazon Aurora PostgreSQL 数据库集群](Aurora.Connecting.md#Aurora.Connecting.AuroraPostgreSQL)