Comment résoudre l'erreur « Role <ROLE_ARN> is invalid or cannot be assumed » (Le rôle <ROLE_ARN> est non valide ou ne peut pas être endossé) lorsque je mets à jour ou supprime une pile AWS CloudFormation ?

Date de la dernière mise à jour : 15/10/2020

Je souhaite résoudre l'erreur « Role <ROLE_ARN> is invalid or cannot be assumed » (Le rôle <ROLE_ARN> est non valide ou ne peut pas être endossé) lorsque je crée, mets à jour ou supprime une pile AWS CloudFormation.

Brève description

Vous recevez cette erreur en cas de problème avec le rôle de service AWS Identity and Access Management (IAM) utilisé par AWS CloudFormation pour effectuer des appels en votre nom vers les ressources d'une pile.

Vous pouvez recevoir cette erreur lorsque vous essayez :

  • de créer une pile à l'aide de l'interface de ligne de commande AWS (AWS CLI) ou d'un appel d'API ;
  • de mettre à jour une pile lorsqu'AWS CloudFormation crée un jeu de modifications ;
  • de supprimer une pile ;
  • de mettre à jour ou supprimer un rôle IAM (si vous modifiez la stratégie d'approbation d'un rôle IAM mis à jour, AWS CloudFormation ne peut pas endosser ce rôle).

Si la stratégie d'approbation a été modifiée, vous pouvez résoudre cette erreur en autorisant AWS CloudFormation à endosser le rôle IAM. Si la stratégie d'approbation a été supprimée, vous pouvez résoudre cette erreur en créant un rôle portant le même nom que celui mentionné dans le message d'erreur. Enfin, vous devez remplacer le rôle actuellement utilisé à l'aide du paramètre --role-arn de l'AWS CLI.

Remarque : si vous recevez des erreurs lors de l'exécution des commandes AWS CLI, assurez-vous d'utiliser la version la plus récente d'AWS CLI.

Résolution

Vérifier que le rôle IAM existe, puis créer un rôle IAM s'il n'en existe pas déjà

1.    Ouvrez la console IAM.

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

3.    Dans la colonne Nom du rôle, sélectionnez le rôle IAM mentionné dans le message d'erreur que vous avez reçu.

4.    Si le rôle existe, suivez les étapes de la section Vérifier que la stratégie d'approbation de rôle autorise AWS CloudFormation à endosser le rôle IAM.

5.    Si le rôle n'existe pas, créez un rôle IAM et attribuez-lui le même nom que celui du rôle mentionné dans l'erreur.

6.    Vérifiez que le nouveau rôle IAM dispose de toutes les autorisations requises pour permettre à AWS CloudFormation de créer, mettre à jour ou supprimer les opérations concernant les ressources de votre pile.

7.    Une fois que vous avez créé le rôle, créez, mettez à jour ou supprimez à nouveau votre pile.

Remarque : si le nouveau rôle ne dispose pas des autorisations IAM requises, les opérations concernant la pile peuvent échouer. Par exemple, l'opération de suppression échoue si vous essayez de supprimer une ressource d'instance Amazon Elastic Compute Cloud (Amazon EC2) alors que le rôle IAM ne dispose pas de l'autorisation nécessaire pour l'action ec2:TerminateInstances.

Vérifier que la stratégie d'approbation de rôle permet à AWS CloudFormation d'endosser le rôle IAM

1.    Ouvrez la console IAM.

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

3.    Dans la colonne Nom du rôle, sélectionnez le rôle IAM mentionné dans le message d'erreur que vous avez reçu.

4.    Choisissez l’onglet Trust relationships (Relations d'approbation).

5.    Vérifiez que la relation d'approbation affiche cloudformation.amazonaws.com comme entité de confiance.

Si cloudformation.amazonaws.com n'est pas répertorié parmi les entités de confiance, sélectionnez Modifier la relation d'approbation.

6.    Dans l'éditeur Document de stratégie, saisissez la stratégie d'approbation de rôle de service AWS CloudFormation suivante :

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

7.    Sélectionnez Mettre à jour la stratégie de confiance.

Désormais, la stratégie de confiance mise à jour permet à AWS CloudFormation d'endosser le rôle IAM.

8.    Une fois que vous avez créé le rôle, créez, mettez à jour ou supprimez à nouveau votre pile.

Remplacer le rôle IAM actuel utilisé par AWS CloudFormation

Vous pouvez utiliser l'interface AWS CLI pour remplacer le rôle IAM actuellement utilisé par AWS CloudFormation.

1.    Pour mettre à jour la pile, exécutez la commande suivante :

aws cloudformation update-stack --stack-name my-stack --template-body file://my-stack-template.json --role-arn arn:aws:iam::123456789123:role/cloudformation-role

Remarque : remplacez my-stack, my-stack-template.json et 123456789123 par vos valeurs.

2.    Pour supprimer la pile, exécutez la commande suivante :

aws cloudformation delete-stack --stack-name my-stack --role-arn arn:aws:iam::123456789123:role/cloudformation-role

Remarque : remplacez my-stack et 123456789123 par vos valeurs.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?