

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

# 对 Amazon EMR 使用服务相关角色进行清理
<a name="using-service-linked-roles-cleanup"></a>

Amazon EMR 使用 AWS Identity and Access Management (IAM) [服务相关](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)角色。服务相关角色是一种独特类型的 IAM 角色，它与 Amazon EMR 直接相关。服务相关角色由 Amazon EMR 预定义，包括该服务代表您调用 AWS 其他服务所需的所有权限。

服务相关角色与 Amazon EMR 服务角色和 Amazon EMR 的 Amazon EC2 实例配置文件配合使用。有关服务角色和实例配置文件的更多信息，请参阅[配置 IAM 服务角色以获得 Amazon EMR 对 AWS 服务和资源的权限](emr-iam-roles.md)。

服务相关角色让您可以轻松设置 Amazon EMR，因为您不必手动添加必要的权限。Amazon EMR 定义其服务相关角色的权限，除非另外定义，否则只有 Amazon EMR 可以代入该角色。定义的权限包括信任策略和权限策略，而且权限策略不能附加到任何其他 IAM 实体。

只有在删除任何相关资源并终止账户中的所有 EMR 集群后，才能删除 Amazon EMR 的服务相关角色。这将保护您的 Amazon EMR 资源，以免无意中删除访问资源的权限。

## 使用服务相关角色进行清理
<a name="using-service-linked-roles-permissions-cleanup"></a>

Amazon EMR 使用基于服务的**AWSServiceRoleForEMRCleanup**角色授予亚马逊 EMR 代表您终止和删除 Amazon EC2 资源的权限，该权限可在 Amazon EMR 服务相关角色失去该权限时代表您终止和删除 Amazon EC2 资源。如果服务相关角色不存在，Amazon EMR 会在集群创建期间自动创建该角色。

 AWSServiceRoleForEMRCleanup 服务相关角色信任以下服务来代入该角色：
+ `elasticmapreduce.amazonaws.com`

 AWSServiceRoleForEMRCleanup 服务相关角色权限策略允许 Amazon EMR 对指定资源完成以下操作：
+ 操作：`ec2` 上的 `DescribeInstances`
+ 操作：`DescribeLaunchTemplates` 上的 `ec2`
+ 操作：`DeleteLaunchTemplate` 上的 `ec2`
+ 操作：`DescribeSpotInstanceRequests` 上的 `ec2`
+ 操作：`ModifyInstanceAttribute` 上的 `ec2`
+ 操作：`TerminateInstances` 上的 `ec2`
+ 操作：`CancelSpotInstanceRequests` 上的 `ec2`
+ 操作：`DeleteNetworkInterface` 上的 `ec2`
+ 操作：`DescribeInstanceAttribute` 上的 `ec2`
+ 操作：`DescribeVolumeStatus` 上的 `ec2`
+ 操作：`DescribeVolumes` 上的 `ec2`
+ 操作：`DetachVolume` 上的 `ec2`
+ 操作：`DeleteVolume` 上的 `ec2`
+ 操作：`DescribePlacementGroups` 上的 `ec2`
+ 操作：`ec2` 上的 `DeletePlacementGroup`

必须配置权限，允许 IAM 实体（如用户、组或角色）创建、编辑或删除服务相关角色。

## 为 Amazon EMR 创建服务相关角色
<a name="create-service-linked-role"></a>

您无需手动创建 AWSServiceRoleForEMRCleanup 角色。当您启动集群时，无论是首次启动还是 AWSServiceRoleForEMRCleanup 服务相关角色不存在，Amazon EMR 都会为您创建 AWSServiceRoleForEMRCleanup 服务相关角色。您必须拥有创建服务相关角色的权限。有关将此功能添加到 IAM 实体（如用户、组或角色）的权限策略的示例语句：

将以下语句添加到需要创建服务相关角色的 IAM 实体的权限策略。

```
{
             "Sid": "ElasticMapReduceServiceLinkedRole",
             "Effect": "Allow",
             "Action": "iam:CreateServiceLinkedRole",
             "Resource": "arn:aws:iam::*:role/aws-service-role/elasticmapreduce.amazonaws.com*/AWSServiceRoleForEMRCleanup*",
             "Condition": {
                 "StringEquals": {
                     "iam:AWSServiceName": [
                         "elasticmapreduce.amazonaws.com",
                         "elasticmapreduce.amazonaws.com.rproxy.govskope.us.cn"
                     ]
                 }
             }
 }
```

**重要**  
如果您在 2017 年 10 月 24 日之前使用过 Amazon EMR，当时不支持服务相关角色，那么 Amazon EMR 会在您的账户中创建 AWSServiceRoleForEMRCleanup 服务相关角色。有关更多信息，请参阅[我的 IAM 账户中出现新角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_new-role-appeared)。

## 为 Amazon EMR 编辑服务相关角色
<a name="edit-service-linked-role"></a>

Amazon EMR 不允许您编辑 AWSServiceRoleForEMRCleanup 服务相关角色。创建服务相关角色后，您无法更改服务相关角色的名称，因为各种实体可能会引用服务相关角色。但您可以使用 IAM 编辑服务相关角色的描述。

### 编辑服务相关角色描述（IAM 控制台）
<a name="edit-service-linked-role-iam-console"></a>

您可以使用 IAM 控制台编辑服务相关角色的描述。

**编辑服务相关角色的描述（控制台）**

1. 在 IAM 控制台的导航窗格中，选择**角色**。

1. 以下代码示例显示如何将 IAM 策略附加到用户。

1. 在 **Role description (角色描述)** 的右侧，选择 **Edit (编辑)**。

1. 在框中键入新描述，然后选择 **Save changes (保存更改)**。

### 编辑服务相关角色描述（IAM CLI）
<a name="edit-service-linked-role-iam-cli"></a>

您可以使用中的 IAM 命令 AWS Command Line Interface 来编辑服务相关角色的描述。

**更改服务相关角色的描述（CLI）**

1. (可选) 要查看角色的当前描述，请使用以下命令：

   ```
   $ aws iam get-role --role-name role-name
   ```

   通过 CLI 命令使用角色名称（并非 ARN）指向角色。例如，如果某个角色的 ARN 为 `arn:aws:iam::123456789012:role/myrole`，则将该角色称为 **myrole**。

1. 要更新服务相关角色的描述，请使用以下命令之一：

   ```
   $ aws iam update-role-description --role-name role-name --description description
   ```

### 编辑服务相关角色描述（IAM API）
<a name="edit-service-linked-role-iam-api"></a>

您可以使用 IAM API 编辑服务相关角色的描述。

**更改服务相关角色的描述（API）**

1. (可选) 要查看角色的当前描述，请使用以下命令：

   IAM API：[GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html)

1. 要更新角色的描述，请使用以下命令：

   IAM API：[UpdateRoleDescription](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateRoleDescription.html)

## 删除适用于 Amazon EMR 的服务相关角色
<a name="delete-service-linked-role"></a>

如果您不再需要使用需要服务相关角色的功能或服务，建议您删除该服务相关角色。这样，您就不会有未被主动监控或维护的未使用实体。但是，您必须先清除您的服务相关角色，然后才能将其删除。

### 清除服务相关角色
<a name="service-linked-role-review-before-delete"></a>

在使用 IAM 删除服务相关角色之前，必须先确认该服务相关角色没有活动会话，并删除服务相关角色使用的所有资源。

**在 IAM 控制台中检查服务相关角色是否具有活动会话**

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在导航窗格中，选择**角色**。选择 AWSServiceRoleForEMRCleanup 服务相关角色的名称（不是复选框）。

1. 在所选服务相关角色的**摘要**页面上，选择**访问顾问**。

1. 在 **Access Advisor (访问顾问)** 选项卡上，查看服务相关角色的近期活动。
**注意**  
如果您不确定 Amazon EMR 是否 AWSServiceRoleForEMRCleanup 在使用服务相关角色，可以尝试删除该服务相关角色。如果服务正在使用服务相关角色，则删除失败，您可以查看正在使用服务相关角色的区域。如果正在使用服务相关角色，则必须等待会话结束，然后才能删除服务相关角色。您无法撤销服务相关角色对会话的权限。

**移除使用的 Amazon EMR 资源 AWSService RoleFor EMRCleanup**
+ 终止您的账户中的所有集群。有关更多信息，请参阅[终止处于启动、运行或等待状态的 Amazon EMR 集群](UsingEMR_TerminateJobFlow.md)。

### 删除服务相关角色（IAM 控制台）
<a name="delete-service-linked-role-iam-console"></a>

您可以使用 IAM 控制台删除服务相关角色。

**删除服务相关角色 (控制台)**

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在导航窗格中，选择**角色**。选中旁边的复选框 AWSService RoleForEMRCleanup，而不是名称或行本身。

1. 对于页面顶部的**角色操作**，请选择**删除角色**。

1. 在确认对话框中，查看上次访问服务的数据，该数据显示了每个选定角色上次访问 AWS 服务的时间。这样可帮助您确认角色当前是否处于活动状态。要继续，请选择 **Yes, Delete（是的，删除）**。

1. 监视 IAM 控制台通知，以监控服务相关角色的删除进度。由于 IAM 服务相关角色删除是异步的，因此在提交服务相关角色进行删除后，删除任务可能会成功，也可能会失败。如果任务失败，您可以从通知中选择 **View details** 或 **View Resources** 以了解删除失败的原因。如果因角色正在使用服务中的资源而导致删除操作失败，则失败原因将包含一个资源列表。

### 删除服务相关角色（IAM CLI）
<a name="delete-service-linked-role-iam-cli"></a>

您可以使用中的 IAM 命令 AWS Command Line Interface 删除服务相关角色。如果服务相关角色正被使用或具有关联的资源，则无法删除它，因此您必须提交删除请求。如果不满足这些条件，该请求可能会被拒绝。

**删除服务相关角色（CLI）**

1. 要查看删除任务的状态，您必须从响应中捕获 `deletion-task-id`。键入以下命令以提交服务相关角色的删除请求：

   ```
   $ aws iam [delete-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-service-linked-role.html) --role-name AWSServiceRoleForEMRCleanup
   ```

1. 键入以下命令以检查删除任务的状态：

   ```
   $ aws iam [get-service-linked-role-deletion-status](https://docs.aws.amazon.com/cli/latest/reference/iam/get-service-linked-role-deletion-status.html) --deletion-task-id deletion-task-id
   ```

   删除任务的状态可能是 `NOT_STARTED`、`IN_PROGRESS`、`SUCCEEDED` 或 `FAILED`。如果删除失败，则调用会返回失败的原因，以便您进行问题排查。

### 删除服务相关角色（IAM API）
<a name="delete-service-linked-role-iam-api"></a>

您可以使用 IAM API 删除服务相关角色。如果服务相关角色正被使用或具有关联的资源，则无法删除它，因此您必须提交删除请求。如果不满足这些条件，该请求可能会被拒绝。

**删除服务相关角色（API）**

1. 要提交服务相关角色的删除请求，请致[DeleteServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceLinkedRole.html)电。在请求中，指定 AWSServiceRoleForEMRCleanup 角色名称。

   要查看删除任务的状态，您必须从响应中捕获 `DeletionTaskId`。

1. 要检查删除的状态，请调用 [GetServiceLinkedRoleDeletionStatus](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServiceLinkedRoleDeletionStatus.html)。在请求中，指定 `DeletionTaskId`。

   删除任务的状态可能是 `NOT_STARTED`、`IN_PROGRESS`、`SUCCEEDED` 或 `FAILED`。如果删除失败，则调用会返回失败的原因，以便您进行问题排查。

## 支持的区域 AWSService RoleFor EMRCleanup
<a name="emr-slr-regions"></a>

Amazon EMR 支持在以下 AWSServiceRoleForEMRCleanup 区域使用服务相关角色。


****  

|  区域名称 | 区域标识 | Amazon EMR 支持 | 
| --- | --- | --- | 
| 美国东部（弗吉尼亚州北部） | us-east-1 | 是 | 
| 美国东部（俄亥俄州） | us-east-2 | 是 | 
| 美国西部（北加利福尼亚） | us-west-1 | 是 | 
| 美国西部（俄勒冈州） | us-west-2 | 是 | 
| 亚太地区（孟买） | ap-south-1 | 是 | 
| 亚太地区（大阪） | ap-northeast-3 | 是 | 
| 亚太地区（首尔） | ap-northeast-2 | 是 | 
| 亚太地区（新加坡） | ap-southeast-1 | 是 | 
| 亚太地区（悉尼） | ap-southeast-2 | 是 | 
| 亚太地区（东京） | ap-northeast-1 | 是 | 
| 加拿大（中部） | ca-central-1 | 是 | 
| 欧洲地区（法兰克福） | eu-central-1 | 是 | 
| 欧洲地区（爱尔兰） | eu-west-1 | 是 | 
| 欧洲地区（伦敦） | eu-west-2 | 是 | 
| 欧洲地区（巴黎） | eu-west-3 | 是 | 
| 南美洲（圣保罗） | sa-east-1 | 是 | 