New user sign up using AWS Builder ID
New user sign up using AWS Builder ID is currently unavailable on re:Post. To sign up, please use the AWS Management Console instead.
Wie behebe ich den Fehler „Kein Export mit dem Namen XYZ gefunden“ in CloudFormation?
Ich erhalte die Fehlermeldung „Kein Export mit dem Namen XYZ gefunden“ in AWS CloudFormation, wenn ich Fn::ImportValue in meinem Stack verwende.
Lösung
Voraussetzungen:
- Verwenden Sie in dem Stack, in dem Sie einen Wert exportieren, das Flag Export: im Abschnitt Outputs Ihrer CloudFormation-Vorlage.
- Verwenden Sie in dem Stack, in dem Sie auf den exportieren Wert verweisen, Fn::ImportValue.
Gehen Sie wie folgt vor, um Probleme mit Stack-Verweisen zu lösen, wenn Sie Import- und Exportwerte verwenden.
Wenn Sie verschachtelte Stacks verwenden, verwenden Sie DependsOn
Standardmäßig erstellt CloudFormation alle verschachtelten Stacks parallel. Wenn CloudFormation parallel untergeordnete Stack erstellt und ein untergeordneter Stack eine Ausgabe von einem anderen importiert, schlägt die Stack-Erstellung möglicherweise fehl. Der Exportwert ist möglicherweise nicht rechtzeitig verfügbar, damit der untergeordnete Stapel Fn::ImportValue verwenden kann, um ihn zu importieren.
Verwenden Sie das DependsOn-Attribut, um dieses Problem zu beheben. Dieses Attribut erzeugt eine explizite Abhängigkeit zwischen dem Stack, der Fn::ImportValue verwendet, und dem Stack, der das Export:-Attribut verwendet, um einen Wert zu exportieren. Auf diese Weise erstellt CloudFormation den Stack, der Fn::ImportValue verwendet, erst, nachdem es den Stack erstellt hat, der den Wert exportiert.
Beispiel: Im folgenden Beispiel für einen verschachtelten Stack exportiert ChildStack01 einen Wert im Abschnitt Outputs, und ChildStack02 verwendet Fn::ImportValue, um den Wert aus ChildStack01 zu importieren. In der folgenden YAML-Vorlage verwendet ChildStack02 das DependsOn-Attribut:
AWSTemplateFormatVersion: 2010-09-09Resources: ChildStack01: Type: 'AWS::CloudFormation::Stack' Properties: TemplateURL: 'https://s3.amazonaws.com/cloudformation-templates-us-east-1/VPC.template' TimeoutInMinutes: '60' ChildStack02: Type: 'AWS::CloudFormation::Stack' DependsOn: ChildStack01 Properties: TemplateURL: 'https://s3.amazonaws.com/cloudformation-templates-us-east-1/Subnet.template' TimeoutInMinutes: '60'
**Hinweis:**Verwenden Sie für stackübergreifende Verweise Fn::ImportValue, um einen Wert aus einer anderen Vorlage zu importieren. Verwenden Sie für Verweise innerhalb desselben Stacks Fn::Ref und Fn::GetAtt, um den Wert des angegebenen Parameters oder der angegebenen Ressource zurückzugeben.
Überprüfen des Exportnamens im Import-Stack
Gehen Sie wie folgt vor, um zu überprüfen, ob der Exportwert korrekt ist:
- Vergewissern Sie sich, dass der Exportname in Ihrem AWS-Konto aufgeführt ist.
- Wenn Sie einen Exportnamen von einem Stack in einen anderen Stack importieren, vergewissern Sie sich, dass Sie in beiden Stacks genau denselben Exportnamen verwenden.
- Führen Sie die Schritte im Abschnitt Stack-Konfiguration der Export- und Import-Stacks überprüfen aus, bevor Sie den Stack mit Fn::ImportValue erstellen.
Sicherstellen, dass sich der exportierte Wert in derselben AWS-Region oder demselben Konto befindet, in das Sie den Wert importieren
Stackübergreifende Verweise gelten nur innerhalb eines einzigen Kontos und einer Region. Andere Stacks, die sich in demselben Konto und derselben Region befinden, können nur die exportierten Werte importieren.
Um dieses Problem zu beheben, führen Sie die Schritte im Abschnitt Stack-Konfiguration der Export- und Import-Stacks überprüfen aus, bevor Sie den Stack mit Fn::ImportValue erstellen.
Sicherstellen, dass der exportierte Wert erstellt oder veröffentlicht wird, bevor der Stack ihn importiert
Bei nicht verschachtelten Stacks müssen Sie zuerst den Stack bereitstellen, der einen Wert exportiert. Der Stack muss den Status Create_Complete oder Update_Complete haben.
Führen Sie die Schritte im Abschnitt Stack-Konfiguration der Export- und Import-Stacks überprüfen aus, bevor Sie den Stack mit Fn::ImportValue erstellen.
Stack-Konfiguration der Export- und Import-Stacks überprüfen
Verwenden Sie die CloudFormation-Konsole oder das AWS Command Line Interface (AWS CLI), um zu überprüfen, ob der Exportwert für den Import bereit ist.
**Hinweis:**Die Import- und Export-Stacks müssen sich in derselben Region und demselben Konto befinden.
Gehen Sie in der CloudFormation-Konsole wie folgt vor:
- Öffnen Sie die CloudFormation-Konsole.
- Wählen Sie im Navigationsbereich Exports aus.
- Vergewissern Sie sich, dass der Exportwert für den Stack aufgeführt ist.
Gehen Sie in der AWS CLI wie folgt vor:
-
Führen Sie den folgenden Befehl list-exports aus, um die verfügbaren Exporte aufzulisten:
aws cloudformation list-exports --region us-east-1
Hinweis: Ersetzen Sie us-east-1 durch Ihre Region.
-
Stellen Sie in der Ausgabe sicher, dass der Wert für Name im Export mit dem Wert Fn::ImportValue übereinstimmt.
Die Ausgabe sieht ähnlich aus wie in diesem Beispiel:
aws cloudformation list-exports --region us-east-1 --output yamlExports: - ExportingStackId: arn:aws:cloudformation:us-east-1:123456789012:stack/private-vpc/99764070-b56c-xmpl-bee8-062a88d1d800 Name: private-vpc-subnet-a Value: subnet-01a234bcdefghij56
**Hinweis:**Wenn Sie beim Ausführen von Befehlen in AWS CLI Fehlermeldungen erhalten, finden Sie weitere Informationen unter Beheben von AWS CLI-Fehlern. Stellen Sie außerdem sicher, dass Sie die neueste Version von AWS CLI verwenden.
Nachdem ein Stack einen Ausgabewert importiert hat, können Sie den Stack, der den Ausgabewert exportiert, nicht löschen oder den exportierten Ausgabewert ändern. Sie müssen alle Importe entfernen, bevor Sie den Export-Stack löschen oder den Ausgabewert ändern können. Informationen zur Verwendung einer Problemumgehung finden Sie unter Wie verwende ich Parameter im AWS Systems Manager Parameter Store, um Werte zwischen CloudFormation Stacks auszutauschen?Beachten Sie, dass der Exportname innerhalb der Region eindeutig sein muss.
Die Import-Anweisung im Stapel, der die Informationen importiert, sieht ähnlich aus wie in diesem Beispiel:
Resources: WebServerInstance: Type: 'AWS::EC2::Instance' Properties: InstanceType: t2.micro ImageId: ami-a1b23456 NetworkInterfaces: AssociatePublicIpAddress: 'true' DeviceIndex: '0' DeleteOnTermination: 'true' SubnetId: Fn::ImportValue: 'private-vpc-subnet-a'

Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 3 Jahren
- AWS OFFICIALAktualisiert vor 4 Jahren
- AWS OFFICIALAktualisiert vor 3 Jahren
- AWS OFFICIALAktualisiert vor 3 Jahren