Walkthrough: Verweisen auf Ressourcenausgaben in einem anderen AWS CloudFormation-Stack - AWS CloudFormation

Walkthrough: Verweisen auf Ressourcenausgaben in einem anderen AWS CloudFormation-Stack

Um Ressourcen von einem AWS CloudFormation-Stack in einen anderen zu exportieren, erstellen Sie einen Stack-übergreifenden Verweis. Mit Stack-übergreifenden Verweisen können Sie eine mehrschichtige oder Service-orientierte Architektur verwenden. Anstatt alle Ressourcen in einen einzigen Stack einzuschließen, erstellen Sie verknüpfte AWS-Ressourcen in separaten Stacks. Anschließend können Sie auf erforderliche Ressourcenausgaben von anderen Stacks 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 Ausgaben und Fn::ImportValue.

Voraussetzungen

Bevor Sie mit dieser Anleitung beginnen, vergewissern Sie sich, dass Sie über AWS Identity and Access Management (IAM)-Berechtigungen verfügen, um die folgenden Services nutzen zu können: Amazon VPC, Amazon EC2 und AWS CloudFormation.

Anmerkung

AWS CloudFormation ist ein kostenloser Service. 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.

Die folgenden Einschränkungen gelten für Stack-übergreifende Referenzen:

  • Für jedes AWS-Konto müssen Export-Namen innerhalb einer Region eindeutig sein.

  • Sie können Stack-übergreifende Referenzen nicht über Regionen hinweg erstellen. Sie können die intrinsische Funktion Fn::ImportValue verwenden, um nur Werte zu importieren, die innerhalb derselben Region exportiert wurden.

  • Bei Ausgaben kann der Wert der Name-Eigenschaft eines Export keine Ref- oder GetAtt-Funktionen verwenden, die von einer Ressource abhängen.

    Ebenso darf die ImportValue-Funktion keine Ref- oder GetAtt-Funktionen enthalten, die von einer Ressource abhängen.

  • Sie können einen Stack nicht löschen, wenn ein anderer Stack auf einen seiner Ausgaben verweist.

  • Sie können einen Ausgabewert, auf den von einem anderen Stack verwiesen wird, nicht ändern oder entfernen.

Schritt 1: Verwenden einer Beispielvorlage zum Erstellen eines Netzwerk-Stacks

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.

Anmerkung

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.

So erstellen Sie den Netzwerk-Stack

  1. Öffnen Sie die AWS CloudFormation-Konsole und wählen Sie Create Stack (Stack erstellen) aus.

  2. Wählen Sie Template is ready (Vorlage ist fertig) aus und klicken Sie im Abschnitt Specify template (Vorlage angeben) auf die Option Amazon S3 URL (Amazon S3-URL). Kopieren Sie die folgende URL und fügen Sie sie in das Textfeld ein: https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleNetworkCrossStack.template

    Der Link stellt den Speicherort der Vorlage für den Netzwerk-Stack bereit. Um die Ressourcen zu sehen, die der Stack erstellt, wählen Sie den Link aus, woraufhin die Vorlage geöffnet wird. Im Ausgabebereich können Sie die Netzwerkressourcen sehen, 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.

  3. Nachdem Sie sich die Vorlage angesehen haben, wählen Sie Next aus.

  4. 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.

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

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

    Möglicherweise dauert es ein paar Minuten, bis AWS CloudFormation den Stack erstellt. Warten Sie, bis alle Ressourcen erfolgreich erstellt wurden, bevor Sie mit der Erstellung des Webanwendungs-Stacks fortfahren.

  7. Betrachten Sie die Stack-Ereignisse, um den Fortschritt zu überwachen. Weitere Informationen finden Sie unter Anzeigen Ihrer AWS CloudFormation-Stack-Daten und Ressourcen auf der AWS Management Console.

Schritt 2: Verwenden einer Beispielvorlage zum Erstellen eines Webanwendungs-Stacks

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

Anmerkung

Sie müssen diesen Stack im gleichen Bereich wie den Netzwerk-Stack erstellen.

So erstellen Sie den Webanwendungs-Stack

  1. Öffnen Sie die AWS CloudFormation-Konsole und wählen Sie Create Stack (Stack erstellen) aus.

  2. Wählen Sie Template is ready (Vorlage ist fertig) aus und klicken Sie im Abschnitt Specify template (Vorlage angeben) auf die Option Amazon S3 URL (Amazon S3-URL). Kopieren Sie die folgende URL und fügen Sie sie in das Textfeld ein: https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleWebAppCrossStack.template

    Der Link gibt die Position der Vorlage für die Webanwendung an. Um die Ressourcen zu sehen, die der Stack erstellt, wählen Sie den Link aus, woraufhin die Vorlage geöffnet wird. Sehen Sie sich die Eigenschaften der EC2-Instanz im Ressourcenabschnitt an. Mithilfe der Fn::ImportValue-Funktion können sehen, wie die Netzwerkressourcen von einem anderen Stack importiert werden.

  3. Nachdem Sie sich die Vorlage angesehen haben, wählen Sie Next aus.

  4. 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.

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

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

    Möglicherweise dauert es ein paar Minuten, bis AWS CloudFormation den Stack erstellt.

  7. 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 Ihrer AWS CloudFormation-Stack-Daten und Ressourcen auf der AWS Management Console.

    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 Ihrer AWS CloudFormation-Stack-Daten und Ressourcen auf der AWS Management Console.

Schritt 3: 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 AWS CloudFormation-Konsole den Stack "SampleWebAppCrossStack" aus.

  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 der Stack gelöscht wurde, wiederholen Sie die gleichen Schritte für den Stack "SampleNetworkCrossStack".

    Anmerkung

    Warten Sie, bis AWS CloudFormation den Stack "SampleWebAppCrossStack" vollständig gelöscht hat. Wenn die EC2-Instance immer noch in der VPC ausgeführt wird, löscht AWS CloudFormation die VPC im Stack "SampleNetworkCrossStack" nicht.

    Alle Ressourcen, die Sie zuvor erstellt haben, werden gelöscht.

Verwenden Sie die Beispielvorlagen aus dieser Anleitung, um eigene Stacks zu erstellen, auf die von anderen Stacks verwiesen wird.