CloudFormation-Vorlagen haben mehrere Vorteile:

  • Vertrautes Format: Eine Vorlage ist eine gemäß JSON (JavaScript Object Notation) oder YAML formatierte Textdatei mit einer Beschreibung der AWS-Infrastruktur, die zur Ausführung einer Anwendung oder eines Service einschließlich etwaiger Verbindungen dazwischen erforderlich ist.
  • Verwalten von Beziehungen: In den Vorlagen sind Ressourcenbeziehungen kurz zusammengefasst, beispielsweise EC2-Instances, die einem Elastic Load Balancer zugeordnet sein müssen. Auch der Umstand, dass ein EBS-Volume sich in derselben EC2 Availability Zone wie die mit ihr verbundene Instance befinden muss, kann in der Vorlage erfasst sein.
  • Einfache Wiederverwendung: Das Verwenden von Vorlagenparametern ermöglicht, dass eine einzelne Vorlage mit unterschiedlichen Konfigurationswerten, z. B. Anzahl der für die Anwendung bereitzustellenden Instances, für viele Bereitstellungen genutzt werden kann.
  • Hilfreiches Feedback: Vorlagen bieten auch Ausgabeeigenschaften für das Kommunizieren von Bereitstellungsergebnissen oder Konfigurationsinformationen zurück an den Benutzer. So kann die Vorlage nach ihrer Instanziierung die URL des Elastic Load Balancing-Endpunkts enthalten, den der Kunde zur Verbindung mit der neu instanziierten Anwendung nutzen soll.
  • Vermeiden von Konflikten: Alle AWS-Ressourcen innerhalb derselben Vorlage werden anhand logischer Namen identifiziert, sodass aus einer Vorlage mehrere Stacks erstellt werden können, ohne Namenskonflikte zwischen AWS-Ressourcen befürchten zu müssen.
  • Code schreiben und loslegen: Nutzen Sie eine beliebige Methode zum Starten eines Stacks, ohne die Vorlage zuvor bei AWS CloudFormation registrieren zu müssen.
  • Visualisieren ihres Stacks: Mit CloudFormation Designer können Sie Ihre Vorlagen in einem Diagramm visualisieren. Sie können einfach AWS-Ressourcen sowie deren Beziehungen anzeigen und deren Layout so anordnen, dass das Diagramm für Sie aussagekräftig wird. Sie können die Vorlagen mithilfe der Drag & Drop-Schnittstelle und dem integrierten JSON-Editor bearbeiten. Die Änderungen, die Sie am Diagramm vornehmen, verändern automatisch das JSON der Vorlage.
  • Nachschlagen von Ressourcen: AWS CloudFormation bewahrt ein Exemplar der Stack-Vorlage auf, sodass Sie mithilfe der AWS-Managementkonsole, den Befehlszeilen-Tools oder den APIs nach den genauen Ressourcenkonfigurationen suchen können, die während der Stack-Erstellung angewendet wurden.
  • Automatisieren: Sie haben die Möglichkeit, die Generierung von Vorlagen mithilfe einer Programmiersprache oder eines Tools Ihrer Wahl zu automatisieren. Sie haben außerdem die Möglichkeit, die Stack-Erstellung anhand der Vorlage mithilfe der CloudFormation-API, AWS SDKs oder AWS-Befehlszeilen-Schnittstelle zu automatisieren.

So sieht die JSON-Struktur der Vorlage auf hoher Ebene aus:

Kostenlos bei AWS einsteigen

Kostenloses Konto erstellen
Oder sich bei der Konsole anmelden

Sie erhalten 12 Monate lang Zugriff auf das kostenlose Nutzungskontingent von AWS sowie AWS Support-Funktionen der Stufe "Basic" mit Kundenservice rund um die Uhr an 365 Tagen im Jahr, Support-Foren und vielen weiteren Vorteilen.

{

        "Description" : "A text description for the template usage",

            "Parameter" : {

                // A set of inputs used to customize the template per deployment

    },

        "Ressourcen" : {

                // The set of AWS resources and relationships between them

    },

        "Outputs" : {

                // A set of values to be made visible to the stack creator

    },

        "AWSTemplateFormatVersion" : "2010-09-09"

}

Am folgenden Beispiel wird die Erstellung einer EC2-Instance veranschaulicht:

{

        "Description" : "Create an EC2 instance running the Amazon Linux 32 bit AMI.",

            "Parameter" : {

                "KeyPair" : {

                        "Description" : "The EC2 Key Pair to allow SSH access to the instance",

                        "Typ" : „Zeichenkette"

        }

    },

        "Ressourcen" : {

                "Ec2Instance" : {

                        "Type" : "AWS::EC2::Instance",

                        "Properties" : {

                                "KeyName" : { "Ref" : "KeyPair" },

                                "ImageId" : "ami-3b355a52"

            }

        }

    },

        "Outputs" : {

                "InstanceId" : {

                        "Description" : "The InstanceId of the newly created EC2 instance",

            "value" : "1"

                                "Ref" : "Ec2Instance"

            }

        }

    },

        "AWSTemplateFormatVersion" : "2010-09-09"

}   

Ein Stack ist eine Zusammenstellung von Ressourcen, die sich aus der Instanziierung einer Vorlage ergeben. Sie erstellen einen Stack, indem Sie AWS CloudFormation eine Vorlage und alle benötigten Parameter angeben. Basierend auf der Vorlage und darin angegebener Abhängigkeiten bestimmt AWS CloudFormation, welche AWS-Ressourcen in welcher Reihenfolge erstellt werden müssen.

Zum Aktualisieren eines Stacks stellen Sie eine Vorlage bereit, die die gewünschte Konfiguration aller Ressourcen in Ihrem Stack enthält. Sie können die Eigenschaften der bestehenden Ressourcen in Ihrem Stack ändern, um auf Änderungen in Ihrer Umgebung oder auf neue Anwendungsanforderungen zu reagieren. Sie können beispielsweise die Alarmschwellenwerte für Ihre AWS CloudWatch-Alarme ändern oder das auf einer Instance in Ihrem Stack ausgeführte AMI aktualisieren. AWS CloudFormation übernimmt das Anwenden dieser Änderungen auf die verschiedenen Ressourcen in Ihrem Stack. Vielfach erfolgen diese Änderungen ohne Auswirkung auf Ihre ausgeführte Anwendung. Wenn eine Änderung jedoch nicht dynamisch durchgeführt werden kann (z. B. die Aktualisierung des AMI einer EC2-Instance), erstellt AWS CloudFormation eine neue Ressource und bindet sie wieder in den Stack ein. Dabei wird die alte Ressource gelöscht, sobald der Service erkennt, dass die Aktualisierung erfolgreich abgeschlossen wird.

AWS CloudFormation erstellt oder aktualisiert einen Stack in seiner Gesamtheit. Wenn ein Stack nicht vollständig erstellt oder aktualisiert werden kann, setzt AWS CloudFormation ihn zurück. Zu Debugging-Zwecken kann das Rückgängigmachen deaktiviert werden und die Stack-Erstellung oder -Aktualisierung kann später manuell wiederholt werden.

Sie können AWS CloudFormation Designer auch dafür einsetzen, die Vorlage eines Stacks zu erstellen oder zu ändern, und dies dann an AWS CloudFormation weitergeben, damit der Stack erstellt oder aktualisiert wird. AWS CloudFormation Designer ist innerhalb der AWS Management Console verfügbar.

AWS CloudFormation kann einfach über die AWS Management Console aufgerufen werden, über die Benutzer auf einer grafischen Oberfläche im Browser Stapel bereitstellen und verwalten können. Anwendungen lassen sich in wenigen Schritten in der AWS-Managementkonsole erstellen, löschen und aktualisieren.

AWS CloudFormation Designer ist ein visuelles Tool, mit einer Drag & Drop-Schnittstelle, über die Ressourcen zu Vorlagen hinzugefügt werden können. In CloudFormation Designer können Sie mehr Zeit mit dem Gestalten Ihrer AWS-Infrastruktur und weniger Zeit mit dem manuellen Kodieren Ihrer Vorlagen verbringen. Wenn Sie beispielsweise Ressourcen hinzufügen oder entfernen, ändert CloudFormation Designer automatisch das zugrunde liegende JSON für Sie. Den integrierten Texteditor können Sie auch einsetzen, um Vorlagendetails zu spezifizieren, etwa die Eigenschaftswerte von Ressourcen und Eingabeparameter. Weitere Informationen finden Sie in der Dokumentation.

AWS CloudFormation Designer ist Bestandteil der AWS CloudFormation-Konsole. Sie müssen sich mit Ihren AWS-Zugangsdaten anmelden, um das Tool verwenden zu können. Um AWS CloudFormation Designer zu verwenden, navigieren Sie zu https://console.thinkwithwp.com/cloudformation/designer. In den folgenden Szenarien werden einige der Funktionen von AWS CloudFormation Designer hervorgehoben.

Visualisieren von Vorlagen-Ressourcen
Die Auswertung von JSON-formatierten Textdateien, um festzustellen, welche Ressourcen in Ihrer Vorlage vorhanden sind und welche Beziehungen zwischen ihnen bestehen, kann schwierig sein. Mit AWS CloudFormation Designer können Sie jede gültige AWS CloudFormation-Vorlage öffnen und das Tool visualisiert alle Ihre Vorlagen-Ressourcen in Form eines Diagramms. Sie können einfach Vorlagen-Ressourcen anzeigen und sehen, wie sie verbunden sind, ohne JSON lesen zu müssen. AWS CloudFormation Designer umfasst einen JSON-Texteditor, sodass Sie immer Vorlagendetails ansehen können, falls Sie dies benötigen.

Vereinfachen der Vorlagenerstellung
Wenn Sie in einem Texteditor mit Vorlagen-Ressourcen arbeiten, müssen Sie JSON manuell bearbeiten, was mühselig und fehleranfällig sein kann. In AWS CloudFormation Designer arbeiten Sie auf ähnliche Weise mit Ressourcen, wie Sie mit Diagrammen arbeiten. Sie bewegen neue Ressourcen mit Drag-and-Drop, um sie Ihrer Vorlage hinzuzufügen, und Sie ziehen Verbindungen zwischen Ressourcen, um Beziehungen herzustellen. AWS CloudFormation Designer verändert automatisch JSON. Zusätzlich zur Visualisierung Ihrer Ressourcen bietet der JSON-Texteditor die Funktion zur automatischen Vervollständigung für die Namen von Ressourceneigenschaften. Durch die Verwendung von CloudFormation Designer können Sie weniger Zeit für das manuelle Kodieren Ihrer Vorlagen und mehr Zeit für die Konzeption Ihrer AWS-Infrastruktur aufwenden.

Amazon CloudFormation stellt eine Reihe von APIs zur Verfügung, die einfach in der Benutzung und enorm flexibel sind. Eine vollständige Liste der verfügbaren AWS CloudFormation APIs finden Sie im AWS CloudFormation API-Referenzhandbuch. Im Folgenden sind einige der am häufigsten verwendeten APIs und ihre Funktionen aufgelistet:

  • CreateStack: Dient zum Erstellen eines neuen Stacks. Die Eingabeparameter umfassen den Stack-Namen und einen Dateinamen (oder eine Amazon S3-URL) für die Quellvorlage. Erfolgt die Stack-Erstellung fehlerfrei, hat der Stack den Zustand CREATE_COMPLETE. Treten bei der Stack-Erstellung Fehler auf, werden die zuvor erstellten Ressourcen von AWS CloudFormation gelöscht, sofern der Benutzer keine Markierung zur Beibehaltung dieser Elemente für Debugging-Zwecke vorgenommen hat.
  • ListStacks: Dient zum Auflisten aller Stacks in Ihrem Konto. Über diesen Befehl können Sie die verschiedenen Stacks und ihren aktuellen Status anzeigen, z. B. ob der Stack erstellt oder aktualisiert wird.
  • ListStackResources: Mit dieser Funktion werden alle bei der Stack-Erstellung vergebenen AWS-Ressourcennamen und -kennungen aufgelistet. Zusätzlich zur Bereitstellung von Informationen kann dieser Aufruf auch von einer AWS CloudFormation-fähigen Anwendung verwendet werden, um ihre Umgebung zu verstehen.
  • DescribeStackEvents: Dient zum Auflisten aller von AWS CloudFormation generierten Vorgänge und Ereignisse für einen Stack, sodass Sie den Fortschritt der Erstellung oder des Löschvorgangs verfolgen können.
  • UpdateStack: Dient zum Starten des Aktualisierungsvorgangs für einen bestehenden Stack. Die Eingabeparameter für den Aufruf umfassen den Stack-Namen und einen Dateinamen (oder eine Amazon S3-URL) für die aktualisierte Vorlage. Erfolgt die Stack-Aktualisierung fehlerfrei, hat der Stack den Zustand UPDATE_COMPLETE. Wenn die Stack-Aktualisierung fehlschlägt, setzt AWS CloudFormation alle Änderungen an der Ressource zurück, sodass der Stack wieder den Zustand annimmt, der in der Originalvorlage beschrieben ist.

AWS CloudFormation kann auch über die AWS SDKs und AWS-Befehlszeilen-Schnittstelle verwendet werden.

AWS CloudFormation ist in den Amazon Simple Notification Service (Amazon SNS) integriert. Über diesen Service können Sie während des Erstellens, Aktualisierens oder Löschens eines Stacks Nachrichten empfangen. Neben der Statusmitteilung bietet diese Funktion den Vorteil, dass andere Programme über Ereignisse innerhalb von CloudFormation informiert werden und auf den Prozess der Stack-Konfiguration reagieren oder gar daran teilnehmen können.

Die AWS CloudFormation-Vorlage wurde auf Grundlage Ihrer bisherigen Erfahrung mit AWS konzipiert. Jede Ressource verfügt über eine Reihe von Parametern, deren Bezeichnungen mit jenen identisch sind, die zur Erstellung der Ressourcen anhand ihrer nativen API verwendet wurden. Der folgenden Vorlagenausschnitt zeigt, wie ein Amazon-EBS-Volumen definiert wird. Der logische Name des Volumes in der Vorlage lautet "myVolume" und der Typ ist "AWS::EC2::Volume". Die Eigenschaften dürften Ihnen bekannt vorkommen, wenn Sie bereits mit EBS-Volumes gearbeitet haben.

"myVolume" : {

    "Type" : "AWS::EC2::Volume",

    "Properties" : {

        "Size" : "10",

        "SnapshotId" : "snap-7b8fd361",

        "AvailabilityZone" : "us-east-1a"

    }

}

AWS CloudFormation bietet mehrere Hilfsskripte, die für Ihre EC2-Instances verwendet werden können. Mit diesen Skripten können Sie mühelos Ressource-Metadaten aus Ihrem Stack lesen und verwenden, um Ihre Anwendung zu konfigurieren, in Ihrer Vorlage aufgelistete Pakete und Daten für Ihre Instance bereitstellen und auf Stack-Aktualisierungen reagieren, z. B. auf Änderungen an der Konfiguration oder Aktualisierungen der Anwendung.

Die folgenden Skripte sind verfügbar:

  • cfn-get-metadata: Abrufen der Metadaten, die in der Vorlage an Ihre Ressourcen angehängt sind.
  • cfn-init: Herunterladen und Installieren von Paketen und Dateien, die in Ihrer Vorlage beschrieben sind.
  • cfn-signal: Signal für den Stack-Erstellungs-Workflow, dass Ihre Anwendung ausgeführt wird und für Verkehr einsatzbereit ist.
  • cfn-hup: Ein Daemon, um auf Stack-Aktualisierungen hin abzuhören, die über die AWS-Console, Befehlszeilen-Tools oder die API direkt initiiert wurden, und um Ihre Anwendungs-spezifischen Hooks auszuführen, um auf diese Änderungen zu reagieren.

Sie können CloudFormation-Skripts eigenständig oder zusammen mit CloudInit verwenden, einem Tool, das für das Amazon Linux-AMI und einige andere Linux-AMIs zur Verfügung steht. Weitere Informationen zum Bootstrapping von Anwendungen und Aktualisieren von Konfigurationen finden Sie in den Ressourcen für Entwickler für AWS CloudFormation. 

Die Nutzung dieses Service unterliegt der Amazon Web Services-Kundenvereinbarung.