Come posso risolvere l'errore "L’esportazione EXPORT_NAME non può essere aggiornata poiché è utilizzata da STACK_NAME" in AWS CloudFormation?

4 minuti di lettura
0

Ho provato ad aggiornare o eliminare il mio stack AWS CloudFormation, ma ho ricevuto un errore simile al seguente: "L’esportazione Export_NAME non può essere aggiornata poiché è utilizzata da STACK_NAME."

Breve descrizione

Questo errore viene visualizzato quando uno o più stack importano un valore di output esportato dallo stack che vuoi aggiornare o eliminare. Non puoi aggiornare o eliminare il tuo stack quando altri stack stanno importando valori da tale stack.

Per risolvere questo errore, completa i seguenti passaggi:

  1. Trova gli stack che stanno importando il valore di output esportato.
  2. Per gli stack che identifichi come importatori del valore esportato, aggiorna il modello di stack per sostituire le istruzioni Import con il valore di output effettivo.
  3. Aggiorna lo stack di importazione utilizzando il modello modificato.

Soluzione

Nota: Se ricevi errori durante l'esecuzione dei comandi dell'interfaccia della linea di comando (AWS CLI), assicurati di utilizzare la versione più recente dell'interfaccia AWS CLI.

Trova gli stack che stanno importando il valore di output esportato

Per vedere quali stack fanno riferimento al valore di output esportato, utilizza l’interfaccia AWS CLI, Strumenti AWS per PowerShell o la console AWS CloudFormation.

AWS CLI:

1.    Per elencare tutti i valori di output esportati, esegui il seguente comando:

aws cloudformation list-exports

2.    Per elencare tutti gli stack che stanno importando un valore di output esportato, esegui il comando seguente:

aws cloudformation list-imports --export-name EXPORT_NAME

Nota: Sostituisci EXPORT_NAME con il nome del valore di output esportato.

Strumenti AWS per PowerShell:

1.    Per elencare tutti i valori di output esportati, esegui il seguente comando:

Get-CFNExport

2.    Per elencare tutti gli stack che stanno importando un valore di output esportato, esegui il comando seguente:

Get-CFNImportList -ExportName EXPORT_NAME

Nota: Sostituisci EXPORT_NAME con il nome del valore di output esportato.

Console AWS CloudFormation:

1.    Apri la console AWS CloudFormation.

2.    Dal menu CloudFormation, scegli Esportazioni.

3.    Come Nome di esportazione, scegli il nome del valore di output esportato dal tuo stack.

4.    Per Importazioni, scegli gli stack che stanno importando il valore di output esportato dal tuo stack.

Aggiorna il modello di stack per sostituire le istruzioni Import con il valore di output effettivo

1.    Nel tuo modello AWS CloudFormation, sostituisci le funzioni intrinseche con i valori importati per ogni stack che fa riferimento al valore di output esportato del tuo stack.

Ad esempio, le funzioni intrinseche Fn::ImportValue e !ImportValue sono entrambe sostituite dal valore importato arn:aws:s3:::sample nei seguenti modelli JSON e YAML.

Modello JSON con funzione intrinseca:

{
    "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" }
          }
       }
    }
 }

Modello JSON con valore importato:

{
    "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"
          }
       }
    }
 }

Modello YAML con funzione intrinseca:

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

Modello YAML con valore importato:

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.    Aggiorna o elimina il tuo stack.

Ora che le importazioni sono dissociate, puoi aggiornare o eliminare lo stack che ha esportato i valori.


Informazioni correlate

Elenco degli stack che importano un valore di output esportato

list-exports

list-imports

Get-CFNExport Cmdlet

Get-CFNImportList Cmdlet

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa