

# Amazon ECS 基础设施 IAM 角色
<a name="infrastructure_IAM_role"></a>

Amazon ECS 基础设施 IAM 角色允许 Amazon ECS 代表您管理集群中的基础设施资源，并在以下情况使用：
+ 您想将 Amazon EBS 卷附加到您的 Fargate 或 EC2 启动类型 Amazon ECS 任务。基础设施角色允许 Amazon ECS 为您的任务管理 Amazon EBS 卷。

  您可以使用 `AmazonECSInfrastructureRolePolicyForVolumes` 托管策略。
+ 您想使用传输层安全性协议（TLS）加密您的 Amazon ECS Service Connect 服务之间的流量。

  您可以使用 `AmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity` 托管策略。
+ 您想要创建 Amazon VPC Lattice 目标组。

  您可以使用 `AmazonECSInfrastructureRolePolicyForVpcLattice` 托管策略。
+ 您希望在 Amazon ECS 集群中使用 Amazon ECS 托管实例。基础设施角色允许 Amazon ECS 管理托管实例的生命周期。

  您可以使用 `AmazonECSInfrastructureRolePolicyForManagedInstances` 托管策略。
+ 您想要使用 Express Mode。基础设施角色使 Amazon ECS 能够预置和管理 Express Mode 服务所需的基础设施组件，包括负载均衡、安全组、SSL 证书和自动扩缩配置。

  您可以使用 `AmazonECSInfrastructureRoleforExpressGatewayServices` 托管策略。

 当 Amazon ECS 担任此角色代表您采取行动时，这些事件将在 AWS CloudTrail 中可见。如果 Amazon ECS 使用该角色来管理附加到任务的 Amazon EBS 卷，则 CloudTrail 日志 `roleSessionName` 将为 `ECSTaskVolumesForEBS`。如果此角色用于加密您的 Service Connect 服务之间的流量，则 CloudTrail 日志 `roleSessionName` 将为 `ECSServiceConnectForTLS`。如果该角色用于为 VPC Lattice 创建目标组，则 CloudTrail 日志 `roleSessionName` 将是 `ECSNetworkingWithVPCLattice`。如果该角色用于管理 Amazon ECS 托管实例，则 CloudTrail 日志 `roleSessionName` 将为 `ECSManagedInstancesForCompute`。您可以使用此名称通过筛选**用户名**在 CloudTrail 控制台中搜索事件。

Amazon ECS 提供了托管策略，其中包含卷挂载、TLS、VPC Lattice 和托管实例所需的权限。有关更多信息，请参阅《AWS 托管式策略参考指南》**中的 [AmazonECSInfrastructureRolePolicyForVolumes](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonECSInfrastructureRolePolicyForVolumes.html)、[AmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity.html)、[AmazonECSInfrastructureRolePolicyForVpcLattice](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonECSInfrastructureRolePolicyForVpcLattice.html)、[AmazonECSInfrastructureRolePolicyForManagedInstances](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonECSInfrastructureRolePolicyForManagedInstances.html) 和 [AmazonECSInfrastructureRoleforExpressGatewayServices](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonECSInfrastructureRoleforExpressGatewayServices.html)。

## 创建 Amazon ECS 基础设施角色
<a name="create-infrastructure-role"></a>

将所有*用户输入*替换为您自己的信息。

1. 创建一个名为 `ecs-infrastructure-trust-policy.json` 的文件，其中包含要用于 IAM 角色的信任策略。该文件应包含以下内容：

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	  
     "Statement": [ 
       {
         "Sid": "AllowAccessToECSForInfrastructureManagement", 
         "Effect": "Allow", 
         "Principal": {
           "Service": "ecs.amazonaws.com" 
         }, 
         "Action": "sts:AssumeRole" 
       } 
     ] 
   }
   ```

------

1. 使用您在上一步中创建的信任策略，并使用以下 AWS CLI 命令创建一个名为 `ecsInfrastructureRole` 的角色。

   ```
   aws iam create-role \
         --role-name ecsInfrastructureRole \
         --assume-role-policy-document file://ecs-infrastructure-trust-policy.json
   ```

1. 根据您的使用案例，请将托管策略附加到 `ecsInfrastructureRole` 角色。
   + 要将 Amazon EBS 卷附加到 Fargate 或 EC2 启动类型的 Amazon ECS 任务，请附加 `AmazonECSInfrastructureRolePolicyForVolumes` 托管策略。
   + 要使用传输层安全性协议（TLS）加密 Amazon ECS Service Connect 服务之间的流量，请附加 `AmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity` 托管策略。
   + 要创建 Amazon VPC Lattice 目标组，请附加 `AmazonECSInfrastructureRolePolicyForVpcLattice` 托管策略。
   + 如果您想要在 Amazon ECS 集群中使用 Amazon ECS 托管实例，请附加 `AmazonECSInfrastructureRolePolicyForManagedInstances` 托管策略。

   ```
   aws iam attach-role-policy \
         --role-name ecsInfrastructureRole \
         --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSInfrastructureRolePolicyForVolumes
   ```

   ```
   aws iam attach-role-policy \
         --role-name ecsInfrastructureRole \
         --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity
   ```

   ```
   aws iam attach-role-policy \
         --role-name ecsInfrastructureRole \
         --policy-arn arn:aws:iam::aws:policy/AmazonECSInfrastructureRolePolicyForManagedInstances
   ```

您也可以使用 IAM 控制台的**自定义信任策略**工作流程来创建该角色。有关更多信息，请参阅《IAM 用户指南》**中的[使用自定义信任策略创建角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)。

**重要**  
如果 Amazon ECS 使用基础设施角色来管理附加到您的任务的 Amazon EBS 卷，则请在停止使用 Amazon EBS 卷的任务之前确保满足以下条件。  
该角色未被删除。
该角色的信任策略不会被修改为删除 Amazon ECS 访问权限（`ecs.amazonaws.com`）。
托管策略 `AmazonECSInfrastructureRolePolicyForVolumes` 未被删除。如果您必须修改角色的权限，则请至少保留 `ec2:DetachVolume`、`ec2:DeleteVolume` 和 `ec2:DescribeVolumes` 用于卷删除。
在停止带有附加 Amazon EBS 卷的任务之前删除或修改角色将导致任务陷入 `DEPROVISIONING` 状态，并且关联的 Amazon EBS 卷无法删除。Amazon ECS 将定期自动重试以停止任务并删除该卷，直到恢复必要的权限。您可以使用 [DescribeTasks](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html) API 查看任务的卷附加状态和关联的状态原因。

创建该文件后，您必须向用户授予将该角色传递给 Amazon ECS 的权限。

## 授予将基础设施角色传递给 Amazon ECS 的权限
<a name="pass_infrastructure_role_to_service"></a>

要使用 ECS 基础设施 IAM 角色，您必须授予用户将该角色传递给 Amazon ECS 的权限。将以下 `iam:PassRole` 权限附加到您的用户。将 *ecsInfrastructureRole* 替换为您创建的基础设施角色的名称。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
    
        {
            "Action": "iam:PassRole",
            "Effect": "Allow",
            "Resource": ["arn:aws:iam::*:role/ecsInfrastructureRole"],
            "Condition": {
                "StringEquals": {"iam:PassedToService": "ecs.amazonaws.com"}
            }
        }
    ]
}
```

------

有关 `iam:Passrole` 和更新用户权限的更多信息，请参阅《AWS Identity and Access Management 用户指南》**中的[向用户授予权限以将角色传递给 AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)和[更改 IAM 用户的权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html)。