

# 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` 管理ポリシーを使用できます。
+ Amazon ECS Service Connect サービス間のトラフィックを暗号化するには、Transport Layer Security (TLS) を使用します。

  `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. IAM ロールに使用する信頼ポリシーが含まれている `ecs-infrastructure-trust-policy.json` という名前のファイルを作成します。ファイルには次の内容が含まれます。

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

****  

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

------

1. 前のステップで作成した信頼ポリシーを使用して、`ecsInfrastructureRole` という名前のロールを作成するには、次の AWS CLI コマンドを使用します。

   ```
   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` マネージドポリシーをアタッチします。
   + Transport Layer Security (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 API](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html) を使用して、タスクのボリュームアタッチ状態と関連するステータス理由を表示できます。

ファイルを作成したら、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)」を参照してください。