Comment résoudre l'erreur « ECS was unable to assume the role » (ECS n'a pas pu assumer le rôle) lors de l'exécution des tâches Amazon ECS ?

Dernière mise à jour : 04/03/2022

L'erreur suivante s'affiche lorsque j'exécute mes tâches Amazon Elastic Container Service (Amazon ECS)/AWS Fargate :

ECS n'a pas pu assumer le rôle « arn:aws:iam::xxxxxxxxxxxx:role/yyyyyyyy » qui a été fourni pour cette tâche. Vérifiez que le rôle transmis possède la relation d'approbation et les autorisations appropriées et que votre utilisateur IAM dispose des autorisations nécessaires pour transmettre ce rôle.

Solution

Cette erreur s'affiche pour une ou plusieurs des raisons suivantes :

  • Le rôle d'exécution des tâches AWS Identity and Access Management (IAM) ou le rôle de tâche spécifié dans la définition de la tâche n'existe pas.
  • Le rôle IAM d'exécution des tâches ou le rôle de tâche spécifié dans la définition de tâche n'a pas la bonne politique de relation d'approbation.

Vérifiez que le rôle d'exécution des tâches ou le rôle de tâche existe

Pour vérifier si le rôle d'exécution des tâches ou le rôle de tâche défini dans la définition de tâche existe à l'aide de la console, procédez comme suit :

  1. Ouvrez la console IAM.
  2. Choisissez Roles (Rôles).
  3. Recherchez dans la liste des rôles le rôle d'exécution des tâches ou le rôle de tâche que vous avez inclus dans la définition de tâche.

Pour vérifier si le rôle d'exécution des tâches ou le rôle de tâche existe à l'aide de l'AWS Command Line Interface (AWS CLI), exécutez la commande suivante :

Remarque : cette commande récupère des informations sur le rôle IAM spécifié.

aws iam get-role --role-name example-task-execution-role

Remarque : en cas d'erreurs lors de l'exécution de commandes AWS CLI, vérifiez que vous utilisez la version la plus récente d'AWS CLI.

Si le rôle n'existe pas, l'erreur suivante s'affiche :

An error occurred (NoSuchEntity) when calling the GetRole operation: The role with name example-task-execution-role cannot be found.

Si le rôle n'existe pas, envisagez d'effectuer l'une des opérations suivantes :

Vérifiez si le rôle d'exécution des tâches ou le rôle de tâche dans la définition de tâche possède la bonne politique de relation d'approbation

Assurez-vous que la politique de relation d'approbation pour le rôle autorise le serviceecs-tasks.amazonaws.com. Cela est nécessaire pour que la tâche Amazon ECS assume le rôle IAM spécifié.

Pour vérifier la politique de relation d'approbation et la mettre à jour si nécessaire, procédez comme suit :

1.    Ouvrez la console IAM.

2.    Dans le volet de navigation, choisissez Rôles.

3.    Recherchez dans la liste des rôles le rôle d'exécution des tâches ou le rôle de tâche que vous avez inclus dans votre définition de tâche.

4.    Choisissez le rôle.

5.    Choisissez Trust relationships (Relations d'approbation).

6.    Vérifiez si la relation d'approbation pour le rôle contient la politique suivante :

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

7.    Si la relation d'approbation correspond à la politique, choisissez Cancel (Annuler). Sinon, choisissez Edit trust relationship (Modifier la relation d'approbation).

8.    Copiez la politique précédente dans la fenêtre Policy Document (Document de politique), puis choisissez Update Trust Policy (Mettre à jour la politique d'approbation.).