

# 将 IAM 角色与 Amazon Aurora MySQL 数据库集群关联
<a name="AuroraMySQL.Integrating.Authorizing.IAM.AddRoleToDBCluster"></a>

要允许 Amazon Aurora 数据库集群中的数据库用户访问其他 AWS 服务，您可以将在[创建 IAM 角色以允许 Amazon Aurora 访问AWS服务](AuroraMySQL.Integrating.Authorizing.IAM.CreateRole.md)中创建的 IAM 角色与该数据库集群关联。您还可以通过直接关联此服务让 AWS 创建新的 IAM 角色。

**注意**  
您无法将 IAM 角色与 Aurora Serverless v1 数据库集群关联。有关更多信息，请参阅 [使用 Amazon Aurora Serverless v1](aurora-serverless.md)。  
您可以将 IAM 角色与 Aurora Serverless v2 数据库集群关联。

要将 IAM 角色与数据库集群关联，您可以执行两个操作：

1. 通过使用 RDS 控制台、[add-role-to-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/add-role-to-db-cluster.html) AWS CLI 命令或 [AddRoleToDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_AddRoleToDBCluster.html) RDS API 操作，将角色添加到数据库集群的关联角色列表中。

   每个 Aurora 数据库集群最多可以添加 5 个 IAM 角色。

1. 将相关的AWS服务的集群级参数设置为关联的 IAM 角色的 ARN。

   下表介绍了用于访问其他 AWS 服务的 IAM 角色的集群级参数名称。    
<a name="aurora_cluster_params_iam_roles"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.Authorizing.IAM.AddRoleToDBCluster.html)

要关联 IAM 角色以允许您的 Amazon RDS 集群代表您与其他AWS服务通信，请执行以下步骤。

## 控制台
<a name="AuroraMySQL.Integrating.Authorizing.IAM.AddRoleToDBCluster.CON"></a>

**使用控制台将 IAM 角色与 Aurora 数据库集群关联**

1. 打开 RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 选择**数据库**。

1. 选择要与 IAM 角色关联以显示其详细信息的 Aurora 数据库集群的名称。

1. 在 **Connectivity & security**（连接和安全）选项卡的 **Manage IAM roles**（管理 IAM 角色）部分中，执行以下操作之一：
   + **Select IAM roles to add to this cluster**（选择要添加到此集群的 IAM 角色）（原定设置）
   + **Select a service to connect to this cluster**（选择一项服务连接到此集群）  
![\[将 IAM 角色与数据库集群关联\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/images/AuroraAssociateIAMRole-02.png)

1. 要使用现有 IAM 角色，请从菜单中选择该角色，然后选择 **Add role**（添加角色）。

   如果成功添加了角色，则其状态显示为 `Pending`，然后变为 `Available`。

1. 要直接连接服务，请执行以下操作：

   1. 选择 **Select a service to connect to this cluster**（选择一项服务连接到此集群）。

   1. 从菜单中选择服务，然后选择 **Connect service**（连接服务）。

   1. 在 **Connect cluster to *Service Name***（将集群连接到 Service Name）中，输入用于连接服务的 Amazon 资源名称（ARN），然后选择 **Connect service**（连接服务）。

   AWS 创建用于连接服务的新 IAM 角色。其状态显示为 `Pending`，然后变为 `Available`。

1. （可选）要停止将 IAM 角色与数据库集群关联并删除相关的权限，请选择该角色并选择 **Delete**（删除）。

**为关联的 IAM 角色设置集群级参数**

1. 在 RDS 控制台中，选择导航窗格中的**参数组**。

1. 如果您已在使用自定义数据库参数组，您可以选择使用该组而不是创建新的数据库集群参数组。如果您正在使用默认数据库集群参数组，请创建一个新的数据库集群参数组，如下列步骤中所述：

   1. 选择**创建参数组**。

   1. 对于**参数组系列**，请为 Aurora MySQL 8.0 兼容数据库集群选择 `aurora-mysql8.0`，或者为 Aurora MySQL 5.7 兼容数据库集群选择 `aurora-mysql5.7`。

   1. 对于**类型**，请选择**数据库集群参数组**。

   1. 对于**组名**，键入您的新数据库集群参数组的名称。

   1. 对于 **Description**，键入您的新数据库集群参数组的描述。  
![\[创建数据库集群参数组\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/images/AuroraAssociateIAMRole-03.png)

   1. 选择**创建**。

1. 在 **Parameter groups (参数组)** 页面上，选择您的数据库集群参数组，并为 **Parameter group actions (参数组操作)** 选择 **Edit (编辑)**。

1. 将适当的集群级[参数](#aurora_cluster_params_iam_roles)设置为相关的 IAM 角色 ARN 值。

   例如，可以只将 `aws_default_s3_role` 参数设置为 `arn:aws:iam::123456789012:role/AllowS3Access`。

1. 选择**保存更改**。

1. 要更改您的数据库集群的数据库集群参数组，请完成以下步骤：

   1. 选择 **Databases (数据库)**，然后选择 Aurora 数据库集群。

   1. 选择 **Modify (修改)**。

   1. 滚动到 **Database options (数据库选项)**，然后将 **DB cluster parameter group (数据库集群参数组)** 设置为数据库集群参数组。

   1. 选择 **Continue (继续)**。

   1. 验证您的更改，然后选择**立即应用**。

   1. 选择**修改集群**。

   1. 选择 **Databases (数据库)**，然后为您的数据库集群选择主实例。

   1. 对于**操作**，选择**重启**。

      在重新启动实例后，您的 IAM 角色将与数据库集群关联。

      有关集群参数组的更多信息，请参阅 [Aurora MySQL 配置参数](AuroraMySQL.Reference.ParameterGroups.md)。

## CLI
<a name="AuroraMySQL.Integrating.Authorizing.IAM.AddRoleToDBCluster.CLI"></a>

**使用 AWS CLI 将 IAM 角色与数据库集群关联**

1. 从 `add-role-to-db-cluster` 中调用 AWS CLI 命令，以将 IAM 角色的 ARN 添加到数据库集群中，如下所示。

   ```
   PROMPT> aws rds add-role-to-db-cluster --db-cluster-identifier my-cluster --role-arn arn:aws:iam::123456789012:role/AllowAuroraS3Role
   PROMPT> aws rds add-role-to-db-cluster --db-cluster-identifier my-cluster --role-arn arn:aws:iam::123456789012:role/AllowAuroraLambdaRole
   ```

1. 如果您正在使用默认数据库集群参数组，请创建一个新的数据库集群参数组。如果您已在使用自定义数据库参数组，您可以使用该组而不是创建新的数据库集群参数组。

   要创建新的数据库集群参数组，请从 `create-db-cluster-parameter-group` 中调用 AWS CLI 命令，如下所示。

   ```
   PROMPT> aws rds create-db-cluster-parameter-group  --db-cluster-parameter-group-name AllowAWSAccess \
        --db-parameter-group-family aurora5.7 --description "Allow access to Amazon S3 and AWS Lambda"
   ```

   对于 Aurora MySQL 5.7 兼容数据库集群，请为 `aurora-mysql5.7` 指定 `--db-parameter-group-family`。对于兼容 Aurora MySQL 8.0 的数据库集群，请为 `--db-parameter-group-family` 指定 `aurora-mysql8.0`。

1. 在数据库集群参数组中设置相应的集群级参数以及相关的 IAM 角色 ARN 值，如下所示。

   ```
   PROMPT> aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name AllowAWSAccess \
       --parameters "ParameterName=aws_default_s3_role,ParameterValue=arn:aws:iam::123456789012:role/AllowAuroraS3Role,method=pending-reboot" \
       --parameters "ParameterName=aws_default_lambda_role,ParameterValue=arn:aws:iam::123456789012:role/AllowAuroraLambdaRole,method=pending-reboot"
   ```

1. 修改数据库集群以使用新的数据库集群参数组，然后重新启动集群，如下所示。

   ```
   PROMPT> aws rds modify-db-cluster --db-cluster-identifier my-cluster --db-cluster-parameter-group-name AllowAWSAccess
   PROMPT> aws rds reboot-db-instance --db-instance-identifier my-cluster-primary
   ```

   在重新启动实例后，您的 IAM 角色将与数据库集群关联。

   有关集群参数组的更多信息，请参阅 [Aurora MySQL 配置参数](AuroraMySQL.Reference.ParameterGroups.md)。