Comment résoudre l'erreur « Export EXPORT_NAME cannot be updated as it is in use by STACK_NAME » (L'exportation EXPORT_NAME ne peut pas être mise à jour, car elle est utilisée par STACK_NAME) dans AWS CloudFormation ?

Lecture de 4 minute(s)
0

J'ai essayé de mettre à jour ou de supprimer ma pile AWS CloudFormation, mais j'ai reçu une erreur similaire à celle-ci : « Export EXPORT_NAME cannot be updated as it is in use by STACK_NAME » (L'exportation EXPORT_NAME ne peut pas être mise à jour, car elle est utilisée par STACK_NAME).

Brève description

Vous recevez cette erreur lorsqu'une ou plusieurs piles importent une valeur de sortie exportée à partir de la pile que vous voulez mettre à jour ou supprimer. Vous ne pouvez pas mettre à jour ni supprimer votre pile lorsque d'autres piles importent des valeurs de votre pile.

Pour résoudre cette erreur, procédez comme suit :

  1. Recherchez les piles qui importent la valeur de sortie exportée.
  2. Pour les piles que vous identifiez comme important la valeur exportée, mettez à jour le modèle de pile pour remplacer les instructions Import(Importation) par la valeur de sortie réelle.
  3. Mettez à jour la pile d'importation à l'aide du modèle modifié.

Résolution

Remarque : Si vous recevez des erreurs lors de l'exécution de commandes depuis l'interface de ligne de commande AWS (AWS CLI), veillez à utiliser la version la plus récente d'AWS CLI.

Recherchez les piles qui importent la valeur de sortie exportée

Pour identifier les piles qui font référence à la valeur de sortie exportée, utilisez l'AWS CLI, les Outils AWS pour PowerShell ou la console AWS CloudFormation.

AWS CLI :

1.    Pour répertorier toutes les valeurs de sortie exportées, exécutez la commande suivante :

aws cloudformation list-exports

2.    Pour répertorier toutes les piles qui importent une valeur de sortie exportée, exécutez la commande suivante :

aws cloudformation list-imports --export-name EXPORT_NAME

Remarque : remplacez EXPORT_NAME par le nom de votre valeur de sortie exportée.

Outils AWS pour PowerShell :

1.    Pour répertorier toutes les valeurs de sortie exportées, exécutez la commande suivante :

Get-CFNExport

2.    Pour répertorier toutes les piles qui importent une valeur de sortie exportée, exécutez la commande suivante :

Get-CFNImportList -ExportName EXPORT_NAME

Remarque : remplacez EXPORT_NAME par le nom de votre valeur de sortie exportée.

Console AWS CloudFormation :

1.    Ouvrez la console AWS CloudFormation.

2.    Depuis le menu CloudFormation, choisissez Exports (Exportations).

3.    Pour Export Name (Nom de l'exportation), choisissez le nom de la valeur de sortie exportée à partir de votre pile.

4.    Pour Importations, choisissez les piles qui importent la valeur de sortie exportée à partir de votre pile.

Mettez à jour le modèle de pile pour remplacer les instructions Import (importation) par la valeur de sortie réelle

1.    Dans votre modèle AWS CloudFormation, remplacez les fonctions intrinsèques par les valeurs importées pour chaque pile qui fait référence à la valeur de sortie exportée de votre pile.

Par exemple, les fonctions intrinsèques Fn::ImportValue et !ImportValue sont remplacées par la valeur importée arn:aws:s3:::sample dans les modèles JSON et YAML suivants.

Modèle JSON avec fonction intrinsèque :

{
    "Parameters": {
       "parameterName": {
          "Type": "String"
       }
    },
    "Resources": {
       "testParameter": {
          "Type": "AWS::SSM::Parameter",
          "Properties": {
             "Description": "Test SSM Parameter",
             "Name": { "Ref": "parameterName" },
             "Type": "String",
             "Value": { "Fn::ImportValue": "sample-s3-bucket:Bucket-arn" }
          }
       }
    }
 }

Modèle JSON avec valeur importée :

{
    "Parameters": {
       "parameterName": {
          "Type": "String"
       }
    },
    "Resources": {
       "testParameter": {
          "Type": "AWS::SSM::Parameter",
          "Properties": {
             "Description": "Test SSM Parameter",
             "Name": { "Ref": "parameterName" },
             "Type": "String",
             "Value": "arn:aws:s3:::sample"
          }
       }
    }
 }

Modèle YAML avec fonction intrinsèque :

Parameters:
  parameterName:
    Type: String
Resources:
  testParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Description: Test SSM Parameter
      Name: !Ref parameterName
      Type: String
      Value: !ImportValue sample-s3-bucket:Bucket-arn

Modèle YAML avec la valeur importée :

Parameters:
  parameterName:
    Type: String
Resources:
  testParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Description: Test SSM Parameter
      Name: !Ref parameterName
      Type: String
      Value: arn:aws:s3:::sample

2.    Mettez à jour ou supprimez votre pile.

Maintenant que les importations sont dissociées, vous pouvez mettre à jour ou supprimer la pile qui a exporté les valeurs.


Informations connexes

Affichage de la liste des piles qui importent une valeur de sortie exportée

list-exports

list-imports

Applet de commande Get-CFNExport

Applet de commande Get-CFNImportList

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans
Aucun commentaire