Verweisen Sie auf Ressourcenausgaben in einem anderen CloudFormation Stack - AWS CloudFormation

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verweisen Sie auf Ressourcenausgaben in einem anderen CloudFormation Stack

Diese Schritt-für-Schritt-Anleitung zeigt Ihnen, wie Sie Ausgaben aus einem CloudFormation-Stack in einem anderen Stack referenzieren können, um modularere und wiederverwendbare Vorlagen zu erstellen.

Anstatt alle Ressourcen in einem einzigen Stapel zusammenzufassen, erstellen Sie verwandte AWS-Ressourcen in separaten Stapeln. Dann können Sie auf benötigte Ressourcenausgaben aus anderen Stapeln verweisen. Durch Einschränken von Stack-übergreifenden Verweisen auf Ausgaben können Sie die Teile eines Stacks steuern, auf die von anderen Stacks verwiesen wird.

Angenommen, Sie verfügen über einen Netzwerk-Stack mit einer VPC, einer Sicherheitsgruppe und einem Subnetz für öffentliche Webanwendungen sowie über einen öffentlichen Webanwendungs-Stack. Um sicherzustellen, dass die Webanwendungen die Sicherheitsgruppe und das Subnetz aus dem Netzwerk-Stack verwenden, erstellen Sie einen Stack-übergreifenden Verweis, über den der Webanwendungs-Stack auf Ressourcenausgaben vom Netzwerk-Stack verweisen kann. Mit einem Stack-übergreifenden Verweis müssen die Besitzer der Webanwendungs-Stacks keine Netzwerkregeln oder Komponenten erstellen oder verwalten.

Um einen Stack-übergreifenden Verweis zu erstellen, verwenden Sie das Export-Ausgabefeld, um den Wert einer Ressourcenausgabe für den Export zu markieren. Verwenden Sie dann die intrinsische Funktion Fn::ImportValue , um den Wert zu importieren. Weitere Informationen finden Sie unter Exportierte Ausgaben von einem bereitgestellten CloudFormation-Stack abrufen.

Anmerkung

CloudFormation ist ein kostenloser Dienst. Es fallen jedoch möglicherweise Kosten (gemäß des aktuellen Kurses) für die AWS-Ressourcen an, die Sie in Ihre Stacks einschließen. Weitere Informationen zu AWS-Preisen finden Sie auf der Detailseite der einzelnen Produkte.

Verwenden Sie eine Beispielvorlage, um einen Netzwerkstapel zu erstellen

Bevor Sie mit dieser Übung beginnen, überprüfen Sie, ob Sie über IAM-Berechtigungen zur Nutzung aller folgenden Dienste verfügen: Amazon VPC, Amazon EC2 und CloudFormation.

Der Netzwerk-Stack umfasst die VPC, die Sicherheitsgruppe und das Subnetz, das Sie im Webanwendungs-Stack verwenden. Zusätzlich zu diesen Regeln erstellt der Netzwerk-Stack ein Internet-Gateway und Routing-Tabellen, um den öffentlichen Zugriff zu ermöglichen.

Sie müssen diesen Stack erstellen, bevor Sie den Webanwendungs-Stack erstellen. Wenn Sie den Webanwendungs-Stack zuerst erstellen, verfügt dieser nicht über eine Sicherheitsgruppe oder ein Subnetz.

Die Stapelvorlage ist unter der folgenden URL verfügbar: https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleNetworkCrossStack.template. Um die Ressourcen zu sehen, die der Stack erstellt, wählen Sie den Link aus, woraufhin die Vorlage geöffnet wird. Im Abschnitt Outputs sehen Sie die Netzwerkressourcen, die die Beispielvorlage exportiert. Den Namen der exportierten Ressourcen ist der Stack-Name vorangestellt, falls Sie Netzwerkressourcen von anderen Stacks exportieren. Wenn Benutzer Netzwerkressourcen importieren, können sie angeben, von welchem Stack die Ressourcen importiert werden.

So erstellen Sie den Netzwerk-Stack
  1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die CloudFormation-Konsole unter https://console.aws.amazon.com/cloudformation.

  2. Wählen Sie auf der Seite Stapel oben rechts Stapel erstellen und dann Mit neuen Ressourcen (Standard).

  3. Wählen Sie Vorhandene Vorlage auswählen, und im Abschnitt Vorlage angeben wählen Sie Amazon S3 URL.

  4. Für Amazon S3 URL, fügen Sie die folgende URL ein: https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleNetworkCrossStack.template.

  5. Wählen Sie Weiter aus.

  6. Geben Sie für Stack name SampleNetworkCrossStack ein und wählen Sie dann Next aus.

    Anmerkung

    Notieren Sie sich den Namen dieses Stacks. Sie benötigen den Stack-Namen, wenn Sie den Webanwendungs-Stack öffnen.

  7. Wählen Sie Weiter aus. Für diese Anleitung müssen Sie keine Tags hinzufügen oder erweiterte Einstellungen angeben.

  8. Stellen Sie sicher, dass der Stack-Name und die Vorlagen-URL richtig sind und wählen Sie Create stack (Stack erstellen) aus.

    Es kann einige Minuten dauern, bis CloudFormation Ihren Stack erstellt hat. Warten Sie, bis alle Ressourcen erfolgreich erstellt wurden, bevor Sie mit der Erstellung des Webanwendungs-Stacks fortfahren.

  9. Betrachten Sie die Stack-Ereignisse, um den Fortschritt zu überwachen. Weitere Informationen finden Sie unter Fortschritt des Stapels überwachen.

Verwenden Sie eine Beispielvorlage, um einen Webanwendungsstapel zu erstellen

Der Webanwendungs-Stack erstellt eine EC2-Instance, die die Sicherheitsgruppe und das Subnetz aus dem Netzwerk-Stack verwendet.

Sie müssen diesen Stack im selben AWS-Region wie den Netzwerk-Stack erstellen.

Die Stapelvorlage ist unter der folgenden URL verfügbar: https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleWebAppCrossStack.template. Um die Ressourcen zu sehen, die der Stack erstellt, wählen Sie den Link aus, woraufhin die Vorlage geöffnet wird. Im Abschnitt Resources sehen Sie die Eigenschaften der EC2-Instance. Mithilfe der Fn::ImportValue-Funktion können sehen, wie die Netzwerkressourcen von einem anderen Stack importiert werden.

So erstellen Sie den Webanwendungs-Stack
  1. Wählen Sie auf der Seite Stapel oben rechts Stapel erstellen und dann Mit neuen Ressourcen (Standard).

  2. Wählen Sie Vorhandene Vorlage auswählen, und im Abschnitt Vorlage angeben wählen Sie Amazon S3 URL.

  3. Für Amazon S3 URL, fügen Sie die folgende URL ein: https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleWebAppCrossStack.template.

  4. Wählen Sie Weiter aus.

  5. Geben Sie für Stack name SampleWebAppCrossStack ein. Verwenden Sie im Abschnitt Parameters den Standardwert für den Parameter NetworkStackName und wählen Sie dann Next aus.

    Die Beispielvorlage verwendet den Parameterwert, um anzugeben, von welchem Stack Werte importiert werden sollen.

  6. Wählen Sie Weiter aus. Für diese Anleitung müssen Sie keine Tags hinzufügen oder erweiterte Einstellungen angeben.

  7. Stellen Sie sicher, dass der Stack-Name und die Vorlagen-URL richtig sind und wählen Sie Create stack (Stack erstellen) aus.

    Es kann einige Minuten dauern, bis CloudFormation Ihren Stack erstellt hat.

Überprüfen Sie, ob der Stack wie vorgesehen funktioniert

Nachdem der Stack erstellt wurde, zeigen Sie seine Ressourcen an, und notieren Sie sich die Instance-ID. Weitere Informationen zum Anzeigen von Stack-Ressourcen finden Sie unter Anzeigen von Stack-Informationen über die CloudFormation-Konsole.

Um die Sicherheitsgruppe und das Subnetz der Instance zu überprüfen, sehen Sie sich die Eigenschaften der Instance in der Amazon EC2-Konsole an. Wenn die Instance die Sicherheitsgruppe und das Subnetz aus dem SampleNetworkCrossStack-Stack verwendet, haben Sie erfolgreich einen Stack-übergreifenden Verweis erstellt.

Verwenden Sie die Konsole, um die Stack-Ausgaben und die URL der Beispiel-Website anzuzeigen, die die Webanwendung ausführt. Weitere Informationen finden Sie unter Anzeigen von Stack-Informationen über die CloudFormation-Konsole.

Fehler bei der AMI-Zuordnung beheben

Wenn Sie den Fehler Template error: Unable to get mapping for AWSRegionArch2AMI::[region]::HVM64erhalten, enthält die Vorlage keine AMI-Zuordnung für Ihr AWS-Region. Anstatt die Zuordnung zu aktualisieren, empfehlen wir, die öffentlichen Parameter von Systems Manager zu verwenden, um dynamisch auf die neuesten AMIs zu verweisen:

  1. Laden Sie die SampleWebAppCrossStack-Vorlage auf Ihren lokalen Rechner herunter von: https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleWebAppCrossStack.template.

  2. Löschen Sie den gesamten Abschnitt AWSRegionArch2AMI-Zuordnung.

  3. Fügen Sie den folgenden Systems Manager-Parameter hinzu:

    "LatestAmiId": { "Description": "The latest Amazon Linux 2 AMI from the Parameter Store", "Type": "AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>", "Default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2" }
  4. Ersetzen Sie die vorhandene Referenz ImageId :

    "ImageId": { "Fn::FindInMap": [ "AWSRegionArch2AMI", { "Ref": "AWS::Region" } , "HVM64" ] },

    mit:

    "ImageId": { "Ref": "LatestAmiId" },

    Mit diesem Parameter wird automatisch das neueste Amazon Linux 2 AMI für die Region ausgewählt, in der Sie den Stack bereitstellen.

    Für andere Linux-Distributionen verwenden Sie den entsprechenden Parameterpfad. Weitere Informationen finden Sie unter Ermitteln öffentlicher Parameter im Parameterspeicher im AWS Systems Manager Benutzerhandbuch.

  5. Laden Sie die geänderte Vorlage in einen S3-Bucket in Ihrem Konto hoch:

    aws s3 cp SampleWebAppCrossStack.template s3://amzn-s3-demo-bucket/
  6. Geben Sie bei der Erstellung des Stacks die URL Ihrer S3-Vorlage anstelle der Beispiel-URL an.

Bereinigen Ihrer Ressourcen

Um sicherzustellen, dass keine Kosten für unerwünschte Services anfallen, löschen Sie die Stacks.

So löschen Sie die Stacks
  1. Wählen Sie in der CloudFormation-Konsole den Stapel SampleWebAppCrossStack .

  2. Wählen Sie die Option Actions (Aktionen) und anschließend Delete stack (Stack löschen) aus.

  3. Wählen Sie in der Bestätigungsmitteilung die Option Löschen aus.

  4. Nachdem Sie den Stapel gelöscht haben, wiederholen Sie die gleichen Schritte für den Stapel SampleNetworkCrossStack .

    Anmerkung

    Warten Sie, bis CloudFormation den Stapel SampleWebAppCrossStack vollständig gelöscht hat. Wenn die EC2-Instance noch in der VPC läuft, wird CloudFormation die VPC im Stapel SampleNetworkCrossStack nicht löschen.