

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Rôle IAM d'instance de conteneur Amazon ECS
<a name="instance_IAM_role"></a>

Les instances de conteneur Amazon ECS, y compris Amazon EC2 et les instances externes, exécutent l'agent de conteneur Amazon ECS et utilisent un rôle IAM pour indiquer au service que l'agent vous appartient. Avant de pouvoir lancer des instances de conteneur et de les enregistrer dans un cluster, vous devez créer le rôle IAM qu'elles utiliseront. Le rôle est créé dans le compte que vous utilisez pour vous connecter à la console ou exécuter les AWS CLI commandes.

**Important**  
Si vous enregistrez des instances externes dans votre cluster, le rôle IAM que vous utilisez nécessite également des autorisations Systems Manager. Pour de plus amples informations, veuillez consulter [Rôle IAM Amazon ECS Anywhere](iam-role-ecsanywhere.md).

Amazon ECS fournit le fichier de stratégie IAM gérée `AmazonEC2ContainerServiceforEC2Role` qui contient les autorisations nécessaires à l'utilisation de l'ensemble complet de fonctions Amazon ECS. Cette stratégie gérée peut être attachée à un rôle IAM et associée à vos instances de conteneur. Sinon, vous pouvez utiliser la stratégie gérée comme guide lorsque vous créez une stratégie personnalisée à utiliser. Le rôle d'instance de conteneur fournit les autorisations nécessaires pour que l'agent de conteneur Amazon ECS et le daemon Docker puissent appeler en votre AWS APIs nom. Pour de plus amples informations sur la stratégie gérée, veuillez consulter [EC2ContainerServiceforEC2Rôle Amazon](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonEC2ContainerServiceforEC2Role).

## Création du rôle d’instance de conteneur
<a name="instance-iam-role-create"></a>

**Important**  
Si vous enregistrez des instances externes dans votre cluster, veuillez consulter [Rôle IAM Amazon ECS Anywhere](iam-role-ecsanywhere.md).

Vous pouvez créer et associer manuellement le rôle à la politique IAM gérée pour les instances de conteneur afin de permettre à Amazon ECS d'ajouter des autorisations pour les futures fonctionnalités et améliorations au fur et à mesure qu'elles sont introduites. Utilisez la procédure suivante pour attacher la politique IAM gérée si nécessaire.

------
#### [ AWS Management Console ]

**Pour créer un rôle de service Elastic Container Service (console IAM)**

1. Connectez-vous à la console IAM AWS Management Console et ouvrez-la à [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)l'adresse.

1. Dans le volet de navigation de la console IAM, sélectionnez **Roles** (Rôles), puis **Create role** (Créer un rôle).

1. Pour **Trusted entity** (Entité de confiance), choisissez **Service AWS**.

1. Pour **Service ou cas d’utilisation**, choisissez **Elastic Container Service**, puis choisissez le cas d’utilisation **Rôle EC2 pour Elastic Container Service**.

1. Choisissez **Suivant**.

1. Dans la section **Politiques d'autorisations**, vérifiez que la politique **Amazon EC2 ContainerServicefor EC2 Role** est sélectionnée.
**Important**  
La politique gérée par **Amazon EC2 ContainerServicefor EC2** Role doit être attachée au rôle IAM de l'instance de conteneur, sinon vous recevrez une erreur en utilisant le AWS Management Console pour créer des clusters.

1. Choisissez **Suivant**.

1.  Pour **Nom du rôle**, entrez **ecsInstanceRole**

1. Passez en revue les informations du rôle, puis choisissez **Create role** (Créer un rôle).

------
#### [ AWS CLI ]

Remplacez tous les *user input* par vos propres valeurs.

1. Créez un fichier nommé `instance-role-trust-policy.json` avec le contenu suivant.  
****  

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

1. Utilisez la commande suivante pour créer le rôle IAM de l’instance à l’aide du document de stratégie d’approbation.

   ```
   aws iam create-role \
       --role-name ecsInstanceRole \
       --assume-role-policy-document file://instance-role-trust-policy.json
   ```

1. Créez un profil d'instance nommé `ecsInstanceRole-profile` à l'aide de la [create-instance-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/create-instance-profile.html)commande. 

   ```
   aws iam create-instance-profile --instance-profile-name ecsInstanceRole-profile
   ```

   Exemple de réponse

   ```
   {
       "InstanceProfile": {
           "InstanceProfileId": "AIPAJTLBPJLEGREXAMPLE",
           "Roles": [],
           "CreateDate": "2022-04-12T23:53:34.093Z",
           "InstanceProfileName": "ecsInstanceRole-profile",
           "Path": "/",
           "Arn": "arn:aws:iam::123456789012:instance-profile/ecsInstanceRole-profile"
       }
   }
   ```

1. Ajoutez le rôle `ecsInstanceRole` au profil d’instance `ecsInstanceRole-profile`.

   ```
   aws iam add-role-to-instance-profile \
       --instance-profile-name ecsInstanceRole-profile \
       --role-name ecsInstanceRole
   ```

1. Attachez la politique gérée par `AmazonEC2ContainerServiceForEC2Role` au rôle à l’aide de la commande suivante.

   ```
   aws iam attach-role-policy \
       --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role \
       --role-name ecsInstanceRole
   ```

------

Après avoir créé le rôle, ajoutez-y des autorisations supplémentaires pour les fonctionnalités suivantes.


|  Fonctionnalité  |  Autorisations supplémentaires  | 
| --- | --- | 
|  Amazon ECR contient l’image du conteneur  |  [Autorisations Amazon ECR](#container-instance-role-ecr)  | 
| Demandez à CloudWatch Logs de surveiller les instances de conteneur | [Autorisations pour la surveillance des instances de conteneur](#cwl_iam_policy) | 
| Héberger les fichiers de configuration dans un compartiment Amazon S3 | [Accès en lecture seule à Amazon S3](#container-instance-role-s3) | 

## Autorisations Amazon ECR
<a name="container-instance-role-ecr"></a>

Le rôle d’instance de conteneur Amazon ECS que vous utilisez avec vos instances de conteneur doit disposer des autorisations de politique IAM suivantes pour Amazon ECR.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecr:BatchCheckLayerAvailability",
                "ecr:BatchGetImage",
                "ecr:GetDownloadUrlForLayer",
                "ecr:GetAuthorizationToken"
            ],
            "Resource": "*"
        }
    ]
}
```

------

Si vous utilisez la stratégie gérée `AmazonEC2ContainerServiceforEC2Role` pour vos instances de conteneurs, votre rôle possède les autorisations appropriées.

## Autorisations requises pour définir le paramètre du compte awsvpcTrunking
<a name="container-instance-role-awsvpcTrunking-setting"></a>

Amazon ECS prend en charge le lancement d'instances de conteneur avec une augmentation de la densité ENI et utilisant des types d'instances Amazon EC2 pris en charge. Lorsque vous utilisez cette fonctionnalité, nous vous recommandons de créer deux rôles d’instance de conteneur. Activez le paramètre de compte `awsvpcTrunking` pour un rôle et utilisez ce rôle pour les tâches qui nécessitent la jonction ENI. Pour en savoir plus sur le paramètre de compte `awsvpcTrunking`, consultez la section [Accès aux fonctionnalités d’Amazon ECS avec les paramètres du compte](ecs-account-settings.md).

Le rôle d’instance de conteneur que vous utilisez avec vos instances de conteneur doit disposer des autorisations de politique IAM suivantes pour définir les paramètres de compte 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:ListAccountSettings", 
                "ecs:ListAttributes", 
                "ecs:PutAccountSetting" 
            ],
            "Resource": "*"
        }
    ]
}
```

------

Pour utiliser le rôle d’instance de conteneur, ajoutez ce qui suit aux données utilisateur de l’instance :

```
#!/bin/bash
aws ecs put-account-setting --name awsvpcTrunking --value enabled --region region
ECS_CLUSTER=MyCluster>> /etc/ecs/ecs.config
EOF
```

Pour plus d’informations sur l’ajout de données utilisateur à vos instances EC2, consultez la section [Exécuter des commandes sur votre instance Linux au démarrage](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) dans le *Guide de l’utilisateur Amazon EC2*.

## Accès en lecture seule à Amazon S3
<a name="container-instance-role-s3"></a>

Stocker les informations de configuration dans un compartiment privé d'Amazon S3 et accorder un accès en lecture seule au rôle IAM de votre instance de conteneur est un moyen pratique et sécurisé d'autoriser la configuration d'une instance de conteneur au moment du lancement. Vous pouvez stocker une copie de votre `ecs.config` fichier dans un compartiment privé, utiliser les données utilisateur Amazon EC2 pour l'installer, AWS CLI puis copier vos informations de configuration au `/etc/ecs/ecs.config` moment du lancement de l'instance.

Pour plus d'informations sur la création d'un fichier `ecs.config`, son stockage dans Amazon S3 et le lancement d'instances avec cette configuration, veuillez consulter [Stockage de la configuration d’instance de conteneur Amazon ECS dans Amazon S3](ecs-config-s3.md).

Vous pouvez utiliser la AWS CLI commande suivante pour autoriser l'accès en lecture seule à Amazon S3 pour votre rôle d'instance de conteneur. *ecsInstanceRole*Remplacez-le par le nom du rôle que vous avez créé.

```
aws iam attach-role-policy \
      --role-name ecsInstanceRole \
      --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess
```

Vous pouvez également utiliser la console IAM pour ajouter l’accès en lecture seule à Amazon S3 (`AmazonS3ReadOnlyAccess`) à votre rôle. Pour plus d’informations, consultez la section [Mise à jour des autorisations pour un rôle](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_update-role-permissions.html) dans le *Guide de l’utilisateur Gestion des identités et des accès AWS *.

## Autorisations pour la surveillance des instances de conteneur
<a name="cwl_iam_policy"></a>

Avant que vos instances de conteneur puissent envoyer des données de journal à CloudWatch Logs, vous devez créer une politique IAM permettant à l'agent Amazon ECS d'y écrire les journaux d'applications du client CloudWatch (normalement gérés par le `awslogs` pilote). Après avoir créé la politique, associez-la à `ecsInstanceRole`.

------
#### [ AWS Management Console ]

**Pour utiliser l’éditeur de politique JSON afin de créer une politique**

1. Connectez-vous à la console IAM AWS Management Console et ouvrez-la à [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)l'adresse.

1. Dans le panneau de navigation de gauche, sélectionnez **Policies** (Politiques). 

   Si vous sélectionnez **Politiques** pour la première fois, la page **Bienvenue dans les politiques gérées** s’affiche. Sélectionnez **Mise en route**.

1. En haut de la page, sélectionnez **Créer une politique**.

1. Dans la section **Éditeur de politique**, choisissez l’option **JSON**.

1. Entrez le document de politique JSON suivant :

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "logs:CreateLogGroup",
                   "logs:CreateLogStream",
                   "logs:PutLogEvents",
                   "logs:DescribeLogStreams"
               ],
               "Resource": ["arn:aws:logs:*:*:*"]
           }
       ]
   }
   ```

1. Choisissez **Suivant**.
**Note**  
Vous pouvez basculer à tout moment entre les options des éditeurs **visuel** et **JSON**. Toutefois, si vous apportez des modifications ou si vous choisissez **Suivant** dans l’éditeur **visuel**, IAM peut restructurer votre politique afin de l’optimiser pour l’éditeur visuel. Pour plus d’informations, consultez la page [Restructuration de politique](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_policies.html#troubleshoot_viseditor-restructure) dans le *Guide de l’utilisateur IAM*.

1. Sur la page **Vérifier et créer**, saisissez un **Nom de politique** et une **Description** (facultative) pour la politique que vous créez. Vérifiez les **Autorisations définies dans cette politique** pour voir les autorisations accordées par votre politique.

1. Choisissez **Create policy** (Créer une politique) pour enregistrer votre nouvelle politique.

Après avoir créé la politique, associez-la au rôle d’instance de conteneur. Pour plus d’informations sur la manière d’associer une politique à un rôle, consultez la section [Mise à jour des autorisations pour un rôle](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_update-role-permissions.html) dans le *Guide de l’utilisateur Gestion des identités et des accès AWS *.

------
#### [ AWS CLI ]

1. Créez un fichier nommé `instance-cw-logs.json` avec le contenu suivant.  
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "logs:CreateLogGroup",
                   "logs:CreateLogStream",
                   "logs:PutLogEvents",
                   "logs:DescribeLogStreams"
               ],
               "Resource": ["arn:aws:logs:*:*:*"]
           }
       ]
   }
   ```

1. Utilisez la commande suivante pour créer la politique IAM à l’aide du fichier de politique JSON.

   ```
   aws iam create-policy \
         --policy-name cwlogspolicy \
         --policy-document file://instance-cw-logs.json
   ```

1. Récupérez l’ARN de la politique IAM que vous avez créée à l’aide de la commande suivante. *cwlogspolicy*Remplacez-le par le nom de la politique que vous avez créée.

   ```
   aws iam list-policies --scope Local --query 'Policies[?PolicyName==`cwlogspolicy`].Arn'
   ```

1. Utilisez la commande suivante pour associer la politique au rôle IAM de l’instance de conteneur à l’aide de l’ARN de la politique.

   ```
   aws iam attach-role-policy \
         --role-name ecsInstanceRole \
         --policy-arn arn:aws:iam:111122223333:aws:policy/cwlogspolicy
   ```

------