CloudFormation-Syntax und Struktur der CF-DSL AWS CloudFormation, Teil 3

CF-Templates sind in YSON oder YAML verfasst und lassen sich z. B. mit Ecplise erstellen.

Mit AWS CloudFormation lassen sich reproduzierbare Deployments nahezu beliebiger Komplexität unter Einbeziehung aller verfügbaren AWS-Ressourcen und Dienste realisieren. Dieser Beitrag widmet sich der Beschreibungssprache von CloudFormation-Vorlagen.

Die zwei wichtigsten Konzepte in AWS CloudFormation (CF) sind „Vorlagen“, also Templates, und „Stapel“ bzw. Stacks. Eine Vorlage ist eine Spezifikation der zu provisionierenden AWS-Ressourcen. Ein Stack ist eine Sammlung von AWS-Ressourcen, die aus dieser Vorlage erstellt werden, wobei der Nutzer einen Stapel auf Basis der gleichen Vorlage problemlos mehrmals bereitstellen kann.

Anders ausgedrückt: die im YAML– oder im JSON-Format verfasste Vorlagen-Datei ermöglicht es, eine „Sammlung“ von AWS-Ressourcen als eine Einheit (Stack) zu betrachten. Insofern fällt die CF-Syntax in die Kategorie einer Declarative Programming Language bzw. Domain-specific Language (DSL).

Der prinzipielle Aufbau eines CF-Templates findet sich in der sehr umfangreichen AWS-Dokumentation zur Template-Anatomie. Jedes Template-Dokument besteht dementsprechend aus den Sektionen „Format Version“, „Description“, „Metadata“, „Parameters“, „Mappings“, „Conditions“, „Transform“, „Resources“ und „Output“.

Beispiel-Template

Im folgenden Beispiel soll ein Template erstellt werden, mit dem Nutzer eine Virtual Private Cloud mit zwei Subnetzen (Private und Public einschließlich Routing-Tabelle und Internet-Gateway) und eine NAT-Instanz im öffentlichen Subnetz erstellen können. Hierbei gibt

“AWSTemplateFormatVersion” : “2010-09-09”,

zunächst die CloudFormation-Template-Version an, der das Template entspricht. Hierzu muss man wissen, dass die Vorlagenformat-Version nicht mit der API- oder WSDL-Version identisch ist und unabhängig von der API und den WSDL-Versionen geändert werden kann. Die optionale „Description“ ist ein frei definierbarer Text-String.

“Description” : “Builds a simple VPC with one public subnet and one private subnet.”,

Der ebenfalls optionale Abschnitt „Metadata“ nimmt ggf. Objekte auf, die zusätzliche Infos zur Vorlage bereitstellen.

Parameter

Es folgt nun der „Parameter“-Block. Hier gibt man Werte an, die zur Laufzeit an die Vorlage übergeben werden können, also in dem Moment der Erstellung oder Aktualisierung eines Stapels. Auf die hier angegebenen Parameter kann dann in den folgenden Abschnitten Ressourcen und Outputs Bezug genommen werden (Ref). Konkret handelt es sich bei Parametern um „Name/Wert“-Paare, deren Werte zur Laufzeit geliefert werden, also wenn die Vorlage benutzt wird.

Hier weiterlesen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.