

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.

# Profil d’instance des instances gérées Amazon ECS
<a name="managed-instances-instance-profile"></a>

Un profil d’instance est un conteneur IAM qui contient exactement un rôle IAM et permet aux instances gérées Amazon ECS d’assumer ce rôle en toute sécurité. Le profil d’instance contient un rôle d’instance que l’agent ECS assume pour enregistrer les instances auprès des clusters et communiquer avec le service ECS.

**Important**  
Si vous utilisez des instances gérées Amazon ECS avec la politique `AmazonECSInfrastructureRolePolicyForManagedInstances` gérée, le nom du rôle de l'instance doit commencer par`ecsInstanceRole`. La politique s'étend `iam:PassRole` jusqu'à`arn:aws:iam::*:role/ecsInstanceRole*`, de sorte qu'un nom non compatible entraîne une erreur d'autorisation lors du lancement de la tâche. Cela est courant CloudFormation lorsque vous omettez`RoleName`, car des noms tels que sont CloudFormation générés automatiquement. `MyStack-InstanceRole-ABC123`  
Si vous utilisez plutôt une politique de rôle d'infrastructure personnalisée, le rôle d'instance peut porter n'importe quel nom tant que votre politique inclut une `iam:PassRole` subvention ciblant l'ARN du rôle d'instance.

## Création d’un rôle avec la stratégie d’approbation
<a name="create-instance-role"></a>

Remplacez tout *user input* par vos propres informations.

1. Créez un fichier nommé `ecsInstanceRole-trust-policy.json` contenant la stratégie d'approbation à utiliser pour le rôle IAM. Le fichier doit contenir ce qui suit :

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

****  

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

------

1. Utilisez la AWS CLI commande suivante pour créer un rôle nommé `ecsInstanceRole` en utilisant la politique de confiance que vous avez créée à l'étape précédente.

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

1. Associez la `AmazonECSInstanceRolePolicyForManagedInstances` politique AWS gérée au `ecsInstanceRole` rôle.

   ```
   aws iam attach-role-policy \
         --role-name ecsInstanceRole \
         --policy-arn arn:aws:iam::aws:policy/AmazonECSInstanceRolePolicyForManagedInstances
   ```
**Note**  
Si vous choisissez d'appliquer des autorisations de moindre privilège et de spécifier les vôtres à la place, vous pouvez ajouter les autorisations suivantes pour aider à résoudre les problèmes liés aux tâches avec les instances gérées Amazon ECS :   
`ecs:StartTelemetrySession`
`ecs:PutSystemLogEvents`

Vous pouvez également utiliser le flux de travail **Stratégie d’approbation personnalisée** de la console IAM pour créer le rôle. Pour plus d’informations, reportez-vous à la section [Création d’un rôle à l’aide de politiques de confiance personnalisées (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) dans le *Guide de l’utilisateur IAM*.

Une fois le fichier créé, vous devez autoriser votre utilisateur à transmettre le rôle à Amazon ECS.

## Créez le profil d'instance à l'aide du AWS CLI
<a name="create-instance-profile"></a>

Après avoir créé le rôle, créez le profil d’instance à l’aide de l’ AWS CLI :

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

Ajoutez le rôle au profil d’instance :

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

Vérifiez que le profil a été créé avec succès :

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

## Créez le profil d'instance à l'aide de CloudFormation
<a name="create-instance-profile-cfn"></a>

Vous pouvez l'utiliser AWS CloudFormation pour créer le rôle d'instance et le profil d'instance. Choisissez l'une des options suivantes selon que vous utilisez la politique d'infrastructure AWS gérée ou une politique personnalisée.

### Option 1 : utiliser la convention de ecsInstanceRole dénomination (recommandée)
<a name="create-instance-profile-cfn-managed"></a>

Lorsque vous utilisez la politique d'infrastructure AWS gérée par -managed, vous devez `RoleName` définir explicitement une valeur commençant `ecsInstanceRole` par. Si vous omettez`RoleName`, un nom qui ne correspond pas à la `iam:PassRole` condition de la politique gérée est CloudFormation généré automatiquement et les tâches ne sont pas lancées.

```
Resources:
  EcsInstanceRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: ecsInstanceRole
      AssumeRolePolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Principal:
              Service: ec2.amazonaws.com
            Action: sts:AssumeRole
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/AmazonECSInstanceRolePolicyForManagedInstances

  EcsInstanceProfile:
    Type: AWS::IAM::InstanceProfile
    Properties:
      InstanceProfileName: ecsInstanceRole
      Roles:
        - !Ref EcsInstanceRole
```

### Option 2 : utiliser un nom de rôle personnalisé
<a name="create-instance-profile-cfn-custom"></a>

Si vous préférez laisser CloudFormation générer le nom du rôle, ou si vous utilisez un nom personnalisé qui ne commence pas par`ecsInstanceRole`, vous devez ajouter une politique intégrée à votre rôle d'infrastructure qui accorde le rôle `iam:PassRole` d'instance.

```
Resources:
  EcsInstanceRole:
    Type: AWS::IAM::Role
    Properties:
      # No RoleName — CFN auto-generates
      AssumeRolePolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Principal:
              Service: ec2.amazonaws.com
            Action: sts:AssumeRole
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/AmazonECSInstanceRolePolicyForManagedInstances

  EcsInstanceProfile:
    Type: AWS::IAM::InstanceProfile
    Properties:
      Roles:
        - !Ref EcsInstanceRole

  EcsInfrastructureRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Principal:
              Service: ecs.amazonaws.com
            Action: sts:AssumeRole
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/AmazonECSInfrastructureRolePolicyForManagedInstances
      Policies:
        - PolicyName: PassInstanceRoleToEC2
          PolicyDocument:
            Version: "2012-10-17"
            Statement:
              - Effect: Allow
                Action: iam:PassRole
                Resource: !GetAtt EcsInstanceRole.Arn
                Condition:
                  StringLike:
                    iam:PassedToService: "ec2.*"
```

## Résolution des problèmes
<a name="managed-instances-instance-profile-troubleshooting"></a>

### Les tâches échouent avec iam : erreur PassRole d'autorisation
<a name="managed-instances-instance-profile-ts-passrole"></a>

Si vos tâches échouent avec une mention`iam:PassRole`, vérifiez `ResourceInitializationError` que le nom de votre rôle d'instance commence par`ecsInstanceRole`. Vous pouvez vérifier le nom généré automatiquement dans la CloudFormation console sous l'onglet **Ressources** de votre pile. Si le nom ne correspond pas, soit :
+ Ajoutez `RoleName: ecsInstanceRole` à votre `AWS::IAM::Role` ressource.
+ Ajoutez une politique `iam:PassRole` en ligne explicite à votre rôle d'infrastructure. Pour de plus amples informations, veuillez consulter [Option 2 : utiliser un nom de rôle personnalisé](#create-instance-profile-cfn-custom).