

# 对 CloudWatch RUM 使用服务相关角色
<a name="using-service-linked-roles-RUM"></a>

CloudWatch RUM 使用了 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 角色，它与 RUM 直接相关。服务相关角色是由 RUM 预定义的，包含该服务代表您调用其他 AWS 服务所需的所有权限。

RUM 定义服务相关角色的权限，除非另有定义，否则只有 RUM 可以承担该角色。定义的权限包括信任策略和权限策略，而且权限策略不能附加到任何其他 IAM 实体。

只有先删除角色的相关资源，才能删除角色。此限制可保护您的 RUM 资源，因为您不会无意中删除对资源的访问权限。

有关支持服务相关角色的其它服务的信息，请参阅[使用 IAM 的 AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)，并查找**服务相关角色**列中显示为**是**的服务。选择**是**和链接，查看该服务的服务关联角色文档。

## RUM 的服务相关角色权限
<a name="service-linked-role-permissions-RUM"></a>

RUM 对您为其启用了 X-Ray 跟踪的应用程序监控使用名为 **AWSServiceRoleForCloudWatchRUM** 的服务相关角色 – 此角色允许 RUM 将 AWS X-Ray 跟踪数据发送到您的账户。

**AWSServiceRoleForCloudWatchRUM** 服务相关角色信任 X-Ray 服务来代入该角色。X-Ray 将跟踪数据发送到您的账户。

**AWSServiceRoleForCloudWatchRUM** 服务相关角色附加有名为 **AmazonCloudWatchRUMServiceRolePolicy** 的 IAM 策略。此策略向 CloudWatch RUM 授予将监控数据发布到其他相关 AWS 服务的权限。其中包括允许 RUM 完成以下操作的权限：
+ `xray:PutTraceSegments`
+ `cloudwatch:PutMetricData`

**AmazonCloudWatchRUMServiceRolePolicy** 的完整内容如下所示。

------
#### [ JSON ]

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"xray:PutTraceSegments"
			],
			"Resource": [
				"*"
			]
		},
		{
			"Effect": "Allow",
			"Action": "cloudwatch:PutMetricData",
			"Resource": "*",
			"Condition": {
				"StringLike": {
					"cloudwatch:namespace": [
						"RUM/CustomMetrics/*",
						"AWS/RUM"
					]
				}
			}
		}
	]
}
```

------

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

您无需手动为 CloudWatch RUM 创建服务相关角色。当您首次创建启用了 X-Ray 跟踪的应用程序监控，或更新应用程序监控以使用 X-Ray 跟踪时，RUM 会为您创建 **AWSServiceRoleForCloudWatchRUM**。

有关更多信息，请参阅《IAM 用户指南》**中的[创建服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#create-service-linked-role)。

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

CloudWatch RUM 不允许您编辑 **AWSServiceRoleForCloudWatchRUM** 角色。在创建这些角色后，您无法更改这些角色的名称，因为可能有不同的实体引用它们。但是，您可以使用 IAM 编辑这些角色的描述。

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

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

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

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

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

1. 在 **Role description** 的最右侧，选择 **Edit**。

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

### 编辑服务相关角色描述 (AWS CLI)
<a name="edit-service-linked-role-iam-cli-RUM"></a>

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

**更改服务相关角色描述 (AWS CLI)**

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

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

   可以在 AWS CLI 命令中使用角色名称（而不是 ARN）引用角色。例如，如果某个角色的 ARN 为 `arn:aws:iam::123456789012:role/myrole`，则将该角色称为 **myrole**。

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

   ```
   $ aws iam [update-role-description](https://docs.aws.amazon.com/cli/latest/reference/iam/update-role-description.html) --role-name role-name --description description
   ```

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

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

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

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

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

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

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

## 删除 RUM 的服务相关角色
<a name="delete-service-linked-role-RUM"></a>

如果您不再拥有启用了 X-Ray 的应用程序监控，我们建议您删除 **AWSServiceRoleForCloudWatchRUM** 角色。

这样就没有未被主动监控或维护的未使用实体。但是，您必须先清除您的服务相关角色，然后才能将其删除。

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

必须先确认服务相关角色没有活动会话并删除该角色使用的任何资源，然后才能使用 IAM 删除服务相关角色。

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

1. 通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，选择**角色**。选择 **AWSServiceRoleForCloudWatchRUM** 角色的名称（而不是复选框）。

1. 在选定角色的**摘要**页上，选择**访问顾问**并查看服务相关角色的近期活动。
**注意**  
如果您不确定 RUM 是否正在使用 **AWSServiceRoleForCloudWatchRUM** 角色，请尝试删除该角色。如果服务正在使用该角色，则删除操作会失败，并且您可以查看正在使用该角色的 区域。如果该角色已被使用，则您必须等待会话结束，然后才能删除该角色。您无法撤销服务相关角色对会话的权限。

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

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

**删除服务相关角色（控制台）**

1. 通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

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

1. 对于**角色操作**，请选择**删除角色**。

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

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

### 删除服务相关角色 (AWS CLI)
<a name="delete-service-linked-role-iam-cli-RUM"></a>

您可以从 AWS Command Line Interface 使用 IAM 命令删除服务相关角色。

**删除服务相关角色 (AWS 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 service-linked-role-name
   ```

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-RUM"></a>

您可以使用 IAM API 删除服务相关角色。

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

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

   如果服务相关角色正被使用或具有关联的资源，则无法删除它，因此您必须提交删除请求。如果不满足这些条件，该请求可能会被拒绝。您必须从响应中捕获 `DeletionTaskId` 以检查删除任务的状态。

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

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

## CloudWatch RUM 服务相关角色支持的区域
<a name="RUM-SLR-Regions"></a>

CloudWatch RUM 支持在服务可用的所有 AWS 区域中使用服务相关角色。有关更多信息，请参阅 [CloudWatch RUM service endpoints](https://docs.aws.amazon.com/general/latest/gr/cw_rum_region.html)。