

# 使用角色允许 Amazon ECS 管理集群
<a name="using-service-linked-roles-for-clusters"></a>

Amazon Elastic Container Service 使用 Amazon Identity and Access Management（IAM）[服务相关角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)。服务相关角色是一种独特类型的 IAM 角色，它与 Amazon ECS 直接相关。服务关联角色由 Amazon ECS 预定义，包含服务代表您调用其他 Amazon 服务所需的所有权限。

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

只有在首先删除相关资源后，您才能删除服务关联角色。这将保护您的 Amazon ECS 资源，因为您不会无意中删除对资源的访问权限。

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

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

Amazon ECS 使用名为 **AWSServiceRoleForECS** – Role 的服务相关角色，以允许 Amazon ECS 管理您的集群。

AWSServiceRoleForECS 服务相关角色信任以下服务以担任该角色：
+ `ecs.amazonaws.com`

名为 AmazonECSServiceRolePolicy 的角色权限策略将允许 Amazon ECS 在指定资源上完成以下操作：
+ 操作：针对您的 Amazon ECS 任务使用 `awsvpc` 网络模式时，Amazon ECS 会管理与任务关联的弹性网络接口的生命周期。这还包括 Amazon ECS 向您的弹性网络接口添加的标签。
+ 操作：通过 Amazon ECS 服务使用负载均衡器时，Amazon ECS 会管理负载均衡器中资源的注册和注销。
+ 操作：使用 Amazon ECS 服务发现时，Amazon ECS 会管理所需的 Route 53 和 Amazon Cloud Map 资源，使服务发现能正常运作。
+ 操作：使用 Amazon ECS 服务自动扩缩时，Amazon ECS 会管理所需的自动扩缩资源。
+ 操作：Amazon ECS 会创建和管理 CloudWatch 警报和日志流，以帮助监控您的 Amazon ECS 资源。
+ 操作：使用 Amazon ECS Exec 时，Amazon ECS 会管理启动任务 Amazon ECS Exec 会话所需的权限。
+ 操作：使用 Amazon ECS Service Connect 时，Amazon ECS 会管理使用该功能所需的 Amazon Cloud Map 资源。
+ 操作：使用 Amazon ECS 容量提供程序时，Amazon ECS 会管理修改自动扩缩组及其 Amazon EC2 实例所需的权限。
+ 操作：Amazon ECS 可以为 Amazon ECS 管理的服务更新 Amazon Cloud Map 服务属性。
+ 操作：在启动和停止任务时，Amazon ECS 可以调用 Amazon EC2 预置和取消预置 ENI。
+ 操作：Amazon ECS 可以获取与事件窗口关联的服务和集群的 Amazon EC2 事件窗口。

您必须配置使用户、组或角色能够创建、编辑或删除服务相关角色的权限。有关更多信息，请参阅*《IAM 用户指南》*中的[服务相关角色权限](https://docs.amazonaws.cn/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

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

您无需手动创建服务关联角色。当您创建集群或者在 Amazon Web Services 管理控制台、Amazon CLI 或 Amazon API 中创建或更新服务时，Amazon ECS 会为您创建服务相关角色。

**重要**  
 如果您在其他使用此角色支持的功能的服务中完成某个操作，此服务关联角色可以出现在您的账户中。如果在 2017 年 1 月 1 日（从此时开始支持服务相关角色）之前已使用 Amazon ECS 服务，则 Amazon ECS 已在您的账户中创建了 AWSServiceRoleForECS 角色。要了解更多信息，请参阅[我的 Amazon Web Services 账户中出现新角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_new-role-appeared)。

您还可以使用 IAM 控制台创建具有 **AWSServiceRoleForECS** 使用案例的服务相关角色。在 Amazon CLI 或 Amazon API 中，使用 IAM 创建一个服务名称为 `ecs.amazonaws.com` 的服务相关角色。有关更多信息，请参阅 *IAM 用户指南* 中的[创建服务相关角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/using-service-linked-roles.html#create-service-linked-role)。如果您删除了此服务相关角色，可以使用同样的过程再次创建角色。

如果您删除该服务关联角色，然后需要再次创建，您可以使用相同流程在账户中重新创建此角色。当您创建集群或者创建或更新服务时，Amazon ECS 会再次为您创建服务相关角色。

如果删除该服务相关角色，您可以使用相同的 IAM 过程再次创建该角色。

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

Amazon ECS 不允许您编辑 AWSServiceRoleForECS 服务相关角色。创建服务关联角色后，您将无法更改角色的名称，因为可能有多种实体引用该角色。但是可以使用 IAM 编辑角色描述。有关更多信息，请参阅《IAM 用户指南》**中的[编辑服务关联角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)。

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

您无需手动删除 AWSServiceRoleForECS 角色。当您在 Amazon Web Services 管理控制台、Amazon CLI 或 Amazon API 中删除所有区域中的集群时，Amazon ECS 会清理资源并为您删除服务相关角色。

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

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

必须先删除服务相关角色使用的所有资源，然后才能使用 IAM 删除该角色。

**注意**  
如果当您试图删除资源时 Amazon ECS 服务正在使用该角色，则删除操作可能会失败。如果发生这种情况，请等待几分钟后重试。

**删除 AWSServiceRoleForECS 使用的 Amazon ECS 资源（控制台）**

1. 将所有区域中的所有 Amazon ECS 服务缩小到预期数量 0，然后删除该服务。有关更多信息，请参阅[更新 Amazon ECS 服务](update-service-console-v2.md)和[使用控制台删除 Amazon ECS 服务](delete-service-v2.md)。

1. 强制从所有区域的所有集群中取消注册所有容器实例。有关更多信息，请参阅 [注销 Amazon ECS 容器实例](deregister_container_instance.md)。

1. 删除所有区域的所有 Amazon ECS 集群。有关更多信息，请参阅 [删除 Amazon ECS 集群](delete_cluster-new-console.md)。

**删除 AWSServiceRoleForECS 使用的 Amazon ECS 资源（Amazon CLI）**

1. 将所有区域中的所有 Amazon ECS 服务缩小到预期数量 0，然后删除该服务。有关更多信息，请参阅 Amazon Command Line Interface 参考中的 [update-service](https://docs.amazonaws.cn/cli/latest/reference/ecs/update-service.html) 和 [delete-service](https://docs.amazonaws.cn/cli/latest/reference/ecs/delete-service.html)。

1. 强制从所有区域的所有集群中取消注册所有容器实例。有关更多信息，请参阅 [deregister-container-instance](https://docs.amazonaws.cn/cli/latest/reference/ecs/deregister-container-instance.html)。

1. 删除所有区域的所有 Amazon ECS 集群。有关更多信息，请参阅 [delete-cluster](https://docs.amazonaws.cn/cli/latest/reference/ecs/delete-cluster.html)。

**删除 AWSServiceRoleForECS 使用的 Amazon ECS 资源（API）**

1. 将所有区域中的所有 Amazon ECS 服务缩小到预期数量 0，然后删除该服务。有关更多信息，请参阅《Amazon ECS API 参考》**中的 [UpdateService](https://docs.amazonaws.cn/AmazonECS/latest/APIReference/API_UpdateService.html) 和 [DeleteService](https://docs.amazonaws.cn/AmazonECS/latest/APIReference/API_DeleteService.html)。

1. 强制从所有区域的所有集群中取消注册所有容器实例。有关更多信息，请参阅 [DeregisterContainerInstance](https://docs.amazonaws.cn/AmazonECS/latest/APIReference/API_DeregisterContainerInstance.html).。

1. 删除所有区域的所有 Amazon ECS 集群。有关更多信息，请参阅 [DeleteCluster](https://docs.amazonaws.cn/AmazonECS/latest/APIReference/API_DeleteCluster.html)。

### 手动删除服务相关角色
<a name="slr-manual-delete-clusters"></a>

使用 IAM 控制台、Amazon CLI 或 Amazon API 删除 AWSServiceRoleForECS 服务相关角色。有关更多信息，请参阅《IAM 用户指南》**中的[删除服务相关角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)。

## Amazon ECS 服务相关角色支持的区域
<a name="slr-regions-clusters"></a>

Amazon ECS 支持在该服务可用的所有区域中使用服务相关角色。有关更多信息，请参阅 [Amazon 区域和端点](https://docs.amazonaws.cn/general/latest/gr/rande.html)。