Wie funktioniert AWS CloudFormation ?
Beim Erstellen eines Stacks, macht AWS CloudFormation zugrunde liegenden Service-Aufrufe an AWS für die Bereitstellung und Konfiguration Ihrer Ressourcen. Beachten Sie, dass CloudFormation nur Aktionen ausführen kann, zu denen Sie berechtigt sind. Um zum Beispiel EC2-Instances einrichten zu können, indem CloudFormation verwendet wird, benötigen Sie Berechtigungen zum Erstellen von Instances. Sie brauchen ähnliche Berechtigungen zum Beenden von Instances wenn Sie Stacks mit Instanzen löschen. Sie verwenden AWS Identity and Access Management (IAM) zum Verwalten von Berechtigungen.
Die Aufrufe, die CloudFormation macht, sind alle in Ihrer Vorlage angegeben. Angenommen Sie haben zum Beispiel eine Vorlage, die eine EC2-Instance mit einem t2.micro
Instance-Typ beschreibt. Wenn Sie diese Vorlage verwenden, um einen Stack zu erstellen, ruft CloudFormation den Amazon EC2 auf, um eine Instance API zu erstellen und den Instance-Typ t2.micro
festzulegen. Das folgende Diagramm bietet eine Übersicht über die CloudFormation-Workflows für die Erstellung von Stacks.

-
Verwenden Sie AWS CloudFormation-Designer
oder Ihren eigenen Texteditor, um eine CloudFormation-Vorlage im JSON- oder YAML-Format zu erstellen oder zu ändern. Zudem können Sie auch eine bereitgestellte Vorlage zur Erstellung verwenden. Die CloudFormation-Vorlage beschreibt die Ressourcen, die sie möchten und deren Einstellungen. Angenommen, Sie möchten zum Beispiel eine EC2-Instance erstellen. Die Vorlage kann eine Amazon EC2-Instance deklarieren und deren Eigenschaften beschreiben, so wie im folgendem Beispiel angezeigt: Beispiel JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "A simple EC2 instance", "Resources": { "MyEC2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": "ami-0ff8a91507f77f867", "InstanceType": "t2.micro" } } } }
Beispiel YAML
AWSTemplateFormatVersion: 2010-09-09 Description: A simple EC2 instance Resources: MyEC2Instance: Type: 'AWS::EC2::Instance' Properties: ImageId: ami-0ff8a91507f77f867 InstanceType: t2.micro
-
Speichern Sie die Amazon S3-Vorlage lokal oder in einem Bucket. Wenn Sie eine Vorlage erstellt haben, speichern Sie diese mit einer Dateierweiterung wie
.json
,.yaml
oder.txt
. -
Erstellen Sie ein CloudFormation-Stack, indem Sie den Ort der Vorlagendatei angeben, z. B. einen Pfad auf Ihrem lokalen Computer oder eine Amazon-S3-URL. Wenn die Vorlage Parameter enthält, können Sie beim Erstellen des Stacks Eingabewerte angeben. Parameter ermöglichen Ihnen Werte in Ihre Vorlage zu übergeben, sodass Sie Ihre Ressourcen jedes Mal anpassen können, wenn Sie einen Stack erstellen.
Sie können mit Stacks unter Verwendung der CloudFormation-Konsole, -API oder -AWS CLI erstellen.
Anmerkung Wenn Sie eine Vorlagendatei angeben, die lokal gespeichert ist, lädt CloudFormation diese in einen S3-Bucket in Ihrem AWS-Konto hoch. CloudFormation erstellt einen Bucket für jede Region, in der Sie eine Vorlagendatei hochladen. Auf die Buckets kann jeder Benutzer mit Amazon Simple Storage Service (Amazon S3)-Berechtigungen in Ihrem AWS-Konto zugreifen. Wenn bereits ein von CloudFormation erstellter Bucket vorhanden ist, wird die Vorlage zu diesem Bucket hinzugefügt.
Sie können Ihren eigenen Bucket verwenden und dessen Berechtigungen durch manuelles Hochladen von Vorlagen in Amazon S3 verwalten. Anschließend geben Sie immer, wenn Sie einen Stack erstellen oder aktualisieren, die Amazon S3-URL einer Vorlagendatei an.
CloudFormation stellt Ressourcen bereit und konfiguriert diese, indem Aufrufe zu den AWS-Services gemacht werden, die in Ihrer Vorlage beschrieben sind.
Nachdem alle Ressourcen erstellt wurden, berichtet CloudFormation, dass Ihre Stacks erstellt worden sind. Sie können dann die Ressourcen in Ihrem Stack verwenden. Wenn das Erstellen des Stacks misslingt, setzt CloudFormation Ihre Änderungen durch Löschen der Ressourcen, die es erstellt hat, zurück.
Aktualisieren von Stacks mithilfe von Änderungssätzen
Wenn Sie die Ressourcen in Ihrem Stack aktualisieren müssen, können Sie die Stack-Vorlage ändern. Sie müssen keinen neuen Stack erstellen und den alten löschen. Um einen Stack zu aktualisieren, erstellen Sie einen Änderungssatz, indem Sie entweder eine geänderte Version der ursprünglichen Stack-Vorlage oder andere Eingabeparameter-Werte absenden, oder beides. CloudFormation vergleicht die geänderte Vorlage mit der ursprünglichen Vorlage und generiert einen Änderungssatz. Der Änderungssatz listet die vorgeschlagenen Änderungen auf. Nach dem Überprüfen der Änderungen können Sie den Änderungssatz starten um Ihren Stack zu aktualisieren oder Sie können einen neuen Änderungssatz erstellen. Das folgende Diagramm bietet eine Übersicht über den Workflow für die Aktualisierung eines Stacks.

Updates können Unterbrechungen verursachen. Abhängig von der Ressource und den Eigenschaften, die Sie aktualisieren, kann eine Aktualisierung unterbrechen oder sogar eine vorhandene Ressource ersetzen. Weitere Informationen finden Sie unter AWS CloudFormation-Stack-Updates.
-
Sie können eine CloudFormation-Stackvorlage ändern, indem Sie AWS CloudFormation Designer
oder einen Texteditor verwenden. Wenn Sie beispielsweise eine EC2-Instance für den Instance-Typ ändern möchten, würden Sie den Wert der InstanceType
Eigenschaft in der ursprünglichen Stack-Vorlage ändern.Weitere Informationen finden Sie unter Ändern einer Stack-Vorlage.
-
Speichern Sie die CloudFormation-Vorlage lokal oder in einem S3-Bucket.
-
Erstellen Sie einen Änderungssatz, indem Sie den Stack, den Sie aktualisieren möchten angeben und den Ort der geänderten Vorlage wie z.B. ein Pfad auf Ihrem lokalen Computer oder einem Amazon S3-URL. Wenn die Vorlage Parameter enthält, können Sie beim Erstellen des Änderungssatzes Werte angeben.
Weitere Informationen zum Erstellen von Änderungssätzen finden Sie unter Aktualisieren von Stacks mithilfe von Änderungssätzen.
Anmerkung Wenn Sie eine Vorlage angeben, die auf Ihrem lokalen Computer gespeichert ist, lädt CloudFormation Ihre Vorlage automatisch zu einem S3-Bucket in Ihrem AWS-Konto hoch.
-
Sehen Sie sich den Änderungssatz an, um zu überprüfen, ob CloudFormation die Änderungen, die Sie erwarten, durchführt. Überprüfen Sie beispielsweise, ob CloudFormation die kritischen Stack-Ressourcen ersetzt. Sie können so viele Änderungssätze erstellen wie sie benötigen, bis Sie die gewünschten Änderungen eingebunden haben.
Wichtig Änderungssätze geben nicht an, ob Ihr Stack erfolgreich aktualisiert wird. Beispielsweise prüft ein Änderungssatz nicht, ob Sie ein Konto Kontingent überschreiten, wenn Sie die Aktualisierung einer Ressource vornehmen, die keine Updates unterstützt, oder ob Sie über unzureichende Berechtigungen verfügen, um eine Ressource zu ändern. was dazu führen kann, dass die Aktualisierung eines Stack fehlschlägt.
-
Initiieren Sie den Änderungssatz, den Sie auf Ihrem Stack anwenden möchten. CloudFormation aktualisiert Ihren Stack, indem nur die Ressourcen aktualisiert werden, die Sie geändert haben und signalisiert, dass Ihr Stack erfolgreich aktualisiert wurde. Wenn die Stack-Aktualisierung fehlschlägt, setzt CloudFormation Änderungen auf den letzten bekannten Zustand zurück, um den Stack wiederherstellen zu können.
Löschen eines Stacks
Wenn Sie einen Stack löschen, geben Sie den zu löschenden Stack an. CloudFormation löscht daraufhin den Stack und alle Ressourcen im Stack. Sie können Stacks unter Verwendung der CloudFormation-Konsole, -API oder -AWS CLI löschen.
Wenn Sie einen Stack löschen möchten, aber einige Ressourcen im Stack beibehalten möchten, können Sie eine Deletion-Richtlinie verwenden, um diese Ressourcen zu behalten.
Nachdem alle Ressourcen gelöscht wurden, signalisiert CloudFormation, dass Ihr Stack erfolgreich gelöscht worden ist. Wenn CloudFormation eine Ressource nicht löschen kann, wird der Stack nicht gelöscht. Alle Ressourcen, die nicht gelöscht worden sind bleiben erhalten, bis Sie den Stack erfolgreich löschen können.
Weitere Ressourcen
-
Weitere Informationen über die Erstellung von CloudFormation-Vorlagen finden Sie unter Aufbau einer Vorlage.
-
Weitere Informationen zum Erstellen, Aktualisieren oder Löschen von Stacks, finden Sie unter Arbeiten mit -Stacks.