Wie kann ich den Fehler „Export EXPORT_NAME kann nicht aktualisiert werden, da es von STACK_NAME verwendet wird“ in AWS CloudFormation beheben?

Lesedauer: 3 Minute
0

Ich habe versucht, meinen AWS CloudFormation-Stack zu aktualisieren oder zu löschen, aber ich habe eine Fehlermeldung wie die folgende erhalten: „Export EXPORT_NAME kann nicht aktualisiert werden, da es von STACK_NAME verwendet wird.“

Kurzbeschreibung

Dieser Fehler wird angezeigt, wenn ein oder mehrere Stacks einen exportierten Ausgabewert aus dem Stack importieren, den Sie aktualisieren oder löschen möchten. Sie können Ihren Stack nicht aktualisieren oder löschen, wenn andere Stacks Werte aus Ihrem Stack importieren.

Gehen Sie wie folgt vor, um diesen Fehler zu beheben:

  1. Finden Sie die Stacks, die den exportierten Ausgabewert importieren.
  2. Aktualisieren Sie für Stacks, bei denen Sie angeben, dass sie den exportierten Wert importieren, die Stack-Vorlage, um die Import-Anweisungen durch den tatsächlichen Ausgabewert zu ersetzen.
  3. Aktualisieren Sie den Importstack mithilfe der geänderten Vorlage.

Behebung

Hinweis: Wenn Sie beim Ausführen von Befehlen der AWS Command Line Interface (AWS CLI) Fehler erhalten, vergewissern Sie sich, dass Sie die neueste Version der AWS CLI verwenden.

Finden Sie die Stacks, die den exportierten Ausgabewert importieren

Verwenden Sie die AWS CLI, die AWS Tools für PowerShell oder die AWS CloudFormation-Konsole, um zu sehen, welche Stacks auf den exportierten Ausgabewert verweisen.

AWS CLI:

  1. Führen Sie den folgenden Befehl aus, um alle exportierten Ausgabewerte aufzulisten:
aws cloudformation list-exports

2.Führen Sie den folgenden Befehl aus, um alle Stacks aufzulisten, die einen exportierten Ausgabewert importieren:

aws cloudformation list-imports --export-name EXPORT_NAME

Hinweis: Ersetzen Sie EXPORT\ _NAME durch den Namen Ihres exportierten Ausgabewerts.

AWS Tools für PowerShell:

  1. Führen Sie den folgenden Befehl aus, um alle exportierten Ausgabewerte aufzulisten:
Get-CFNExport

2.Führen Sie den folgenden Befehl aus, um alle Stacks aufzulisten, die einen exportierten Ausgabewert importieren:

Get-CFNImportList -ExportName EXPORT_NAME

Hinweis: Ersetzen Sie EXPORT\ _NAME durch den Namen Ihres exportierten Ausgabewerts.

AWS CloudFormation-Konsole:

1.Öffnen Sie die AWS CloudFormation-Konsole.

  1. Wählen Sie im CloudFormation-Menü die Option Exporte aus.

  2. Wählen Sie für Export Name den Namen des exportierten Ausgabewerts aus Ihrem Stack aus.

  3. Wählen Sie für Importe die Stacks aus, die den exportierten Ausgabewert aus Ihrem Stack importieren.

Aktualisieren Sie die Stack-Vorlage, um die Import-Anweisungen durch den tatsächlichen Ausgabewert zu ersetzen

  1. Ersetzen Sie in Ihrer AWS CloudFormation-Vorlage intrinsische Funktionen durch die importierten Werte für jeden Stack, der auf den exportierten Ausgabewert Ihres Stacks verweist.

Zum Beispiel die intrinsischen Funktionen Fn::ImportValue und !ImportValue werden beide durch den importierten Wert arn:aws:s3: ::sample in den folgenden JSON- und YAML-Vorlagen ersetzt.

JSON-Vorlage mit intrinsischer Funktion:

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

JSON-Vorlage mit importiertem Wert:

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

YAML-Vorlage mit intrinsischer Funktion:

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

YAML-Vorlage mit importiertem Wert:

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
  1. Aktualisieren oder löschen Sie Ihr Stack.

Da die Importe nun getrennt sind, können Sie den Stack, der die Werte exportiert hat, aktualisieren oder löschen.


Verwandte Informationen

Stack auflisten, die einen exportierten Ausgabewert importieren

list-exports

list-imports

Get-CFNExport Cmdlet

Get-CFNImportList Cmdlet

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren