Comment puis-je résoudre l'erreur CloudFormation « Cannot update a stack when a custom-named resource requires replacing » ?

Lecture de 3 minute(s)
0

Lorsque j'essaie de mettre à jour une pile AWS CloudFormation, un message d'erreur similaire au suivant s'affiche : « CloudFormation cannot update a stack when a custom-named resource requires replacing. Renommez « Rename 'MyResource###' and update the stack again. »

Brève description

Cette erreur se produit lorsqu'une mise à jour de pile tente de remplacer des ressources dotées de propriétés par des noms personnalisés. CloudFormation ne remplace pas une ressource dotée d’un nom personnalisé, sauf si ce nom est remplacé par un autre. Pour éviter une défaillance de pile, avant de mettre à jour une pile, assurez-vous de modifier toutes les ressources ayant des noms personnalisés afin qu'elles utilisent des noms différents.

La résolution de cette erreur repose sur les hypothèses suivantes :

  • Vous mettez à jour une pile existante et vous n'en créez pas de nouvelle.
  • Vous modifiez le nom des ressources personnalisées existantes et vous n'en créez pas de nouvelles.

Résolution

  1. Dans un éditeur de code, ouvrez le modèle CloudFormation pour la pile que vous souhaitez mettre à jour.

  2. Remplacez les noms ou les valeurs de toutes les propriétés de ressource dotées de noms personnalisés pour utiliser des noms différents.

    Remarque : Dans l'exemple suivant, la propriété DBInstanceIdentifier de la ressource MyRDS est définie sur le nom personnalisé PRODdb. La pile CloudFormation ne peut pas être mise à jour tant que le nom PRODdb n’est pas remplacé par un autre nom, tel que PRODdb1. Vous pouvez également omettre la propriété DBInstanceIdentifier de votre modèle afin que CloudFormation génère un ID physique unique à utiliser pour l'instance de base de données.

    "MyRDS": {    "Type": "AWS::RDS::DBInstance",
        "Properties": {
            "DBInstanceClass": "db.m3.medium",
            "Engine": "MySQL",
            "DBInstanceIdentifier": "PRODdb",
            "AllocatedStorage": "10",
            "AutoMinorVersionUpgrade": "true",
            "BackupRetentionPeriod": "0",
        . . .
        . . .
        }
    }

    Important : Lorsque vous renommez une ressource dotée d’un nom personnalisé, CloudFormation remplace cette ressource. Pour plus d'informations, consultez la section Type de nom. Le remplacement de certaines ressources peut entraîner une perte de données sans sauvegarde appropriée. Pour plus d'informations, consultez la section Remplacement.

  3. Enregistrez les modifications apportées à votre modèle CloudFormation, puis utilisez-le pour mettre à jour votre pile.

Informations connexes

Gestion des ressources AWS en tant qu'unité unique avec les piles CloudFormation

Comprendre les comportements de mise à jour des ressources de pile

Référence aux types de ressources et de propriétés AWS

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 3 mois