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

Dernière mise à jour : 30-08-2022

Je souhaite résoudre l'erreur « Role [role_arn] is invalid or cannot be assumed » (Le rôle [role_arn] n'est pas 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 de supprimer un rôle IAM. Si vous modifiez la politique d'approbation d'un rôle IAM mis à jour, AWS CloudFormation ne peut pas endosser ce rôle.

Pour résoudre cette erreur, déterminez si la fonction du service IAM utilisée par AWS CloudFormation existe. Ensuite :

  • Si le rôle IAM n'existe pas, créez un rôle IAM portant le même nom.
  • S’il existe, vérifiez que la politique d'approbation de rôle permet à AWS CloudFormation d'endosser le rôle IAM.

Ou bien, vous pouvez remplacer le rôle IAM actuellement utilisé, afin de remplacer la fonction du service utilisée pour l'opération de pile actuelle en utilisant le paramètre --role-arn.

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

Résolution

Vérifier que le rôle IAM existe

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 politique d'approbation de rôle permet à AWS CloudFormation d'endosser le rôle IAM.
        -ou-
        Suivez les étapes de la section Remplacer le rôle IAM actuel utilisé par AWS CloudFormation.

        Si le rôle n'existe pas, suivez les étapes de la section Créer un rôle IAM et vérifier qu'il dispose des autorisations requises.

Créer un rôle IAM et vérifier qu'il dispose des autorisations requises

1.    Créez un rôle IAM et attribuez-lui le nom du rôle mentionné dans l'erreur.

2.    Vérifiez que le nouveau rôle IAM dispose des autorisations requises pour permettre à AWS CloudFormation d'exécuter des opérations de création, de mise à jour ou de suppression sur les ressources dans votre pile.

3.    Une fois que le rôle est créé, vous pouvez créer, mettre à jour ou supprimer à nouveau votre pile.

Remarque : si le nouveau rôle ne dispose pas des autorisations IAM requises, les opérations de pile échouent. 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": "cloudformation.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 le rôle est créé, vous pouvez créer, mettre à jour ou supprimer à nouveau votre pile.

Remplacer le rôle IAM actuel 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 ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?