AWS CloudFormation bietet Entwicklern und Systemadministratoren die Möglichkeit, ohne viel Aufwand eine Sammlung von zugehörigen AWS-Ressourcen zu erstellen und zu verwalten und in geordneter und transparenter Form bereitzustellen und zu aktualisieren.
Sie können die Beispielvorlagen für AWS CloudFormation übernehmen oder eigene Vorlagen zur Beschreibung der AWS-Ressourcen und der jeweiligen Abhängigkeiten oder Laufzeitparameter erstellen, die zur Ausführung Ihrer Anwendung erforderlich sind. Sie müssen nicht erst mühsam bestimmen, in welcher Reihenfolge die AWS-Services bereitgestellt werden müssen oder wie die Abhängigkeiten realisiert werden. CloudFormation nimmt Ihnen diese Arbeit ab. Nach der Bereitstellung können Sie die AWS-Ressourcen kontrolliert und transparent ändern und aktualisieren, um die Kontrolle über die Version Ihrer AWS-Infrastruktur zu behalten, wie Sie es von der Versionskontrolle für die Software kennen.
Sie können eine Vorlage bereitstellen und aktualisieren und den zugehörigen Ressourcensatz (Stack) über die AWS Management Console, über die Befehlszeilen-Tools von CloudFormation oder über APIs einsetzen. CloudFormation ist ohne Aufpreis verfügbar. Sie müssen nur für die AWS-Ressourcen bezahlen, die zur Ausführung Ihrer Anwendungen erforderlich sind.
Die Nutzung von AWS CloudFormation ist einfach:
Unterstützung der unterschiedlichsten AWS-Ressourcen – AWS CloudFormation unterstützt zahlreiche AWS-Ressourcen und ermöglicht Ihnen so den Aufbau einer hochverfügbaren, verlässlichen und skalierbaren AWS-Infrastruktur für Ihre Anwendungen. Zurzeit bietet AWS CloudFormation Unterstützung für:
Benutzerfreundlich – CloudFormation erleichtert Ihnen die Organisation der bereitzustellenden AWS-Ressourcen und ermöglicht es Ihnen, sämtliche Abhängigkeiten oder besonderen Parameter festzulegen, die zur Laufzeit verwendet werden können. Sie müssen nicht erst mühsam bestimmen, in welcher Reihenfolge die AWS-Services bereitgestellt werden müssen oder wie die Abhängigkeiten realisiert werden. CloudFormation nimmt Ihnen diese Arbeit ab. Sie können eine der vielen CloudFormation-Beispielvorlagen 1:1 übernehmen oder als Ausgangspunkt für Ihre eigenen Vorlagen nutzen.
AWS CloudFormation enthält aktuell folgende Beispielvorlagen:
Sie müssen das Rad nicht neu erfinden – Eine Vorlage kann zur Erstellung von Stack-Kopien mehrmals verwendet werden (oder als Grundlage für einen neuen Stack). Sie können die regionalen Infrastrukturvarianten wie Amazon EC2 AMIs sowie Snapshot-Bezeichnungen wie Amazon Elastic Block Store (EBS) und Amazon RDS erfassen und kontrollieren.
Offen und transparent – Bei den Vorlagen handelt es sich um einfache JSON-formatierte Textdateien, die sich Ihren regulären Kontrollmechanismen unterordnen lassen. Zudem können sie an privaten oder öffentlichen Orten wie Amazon S3 gespeichert und per E-Mail weitergegeben werden. Mit AWS CloudFormation können Sie einen Blick "unter die Motorhaube" werfen und erkennen, welche AWS-Ressourcen zur Stack-Erstellung verwendet werden. Sie haben weiterhin alles in der Hand und können die AWS-Ressourcen für die Stacks beliebig variieren.
Flexibel und selbsterklärend – Bei der Erstellung der gewünschten Infrastruktur geben Sie an, welche AWS-Ressourcen, Konfigurationswerte und Verbindungen in der Vorlage benötigt werden. Den Rest erledigt AWS CloudFormation mithilfe der AWS Management Console, Befehlszeilen-Tools oder APIs. Dabei müssen Sie nicht im Detail wissen, wie die betreffenden AWS-Ressourcen über die Service-APIs erstellt und miteinander verbunden werden. Diese Arbeit nimmt Ihnen AWS CloudFormation ab. Auch das Erstellen einer neuen Vorlage ist nicht erforderlich. Sie können einfach mit einer der vielen Beispielvorlagen von AWS CloudFormation beginnen.
Benutzerdefinierte Vorlagen mit Parametern erstellen – Anhand von Parametern können Sie Eigenschaften Ihrer Vorlage zur Laufzeit, bei Erstellen des Stacks, an Ihre Bedürfnisse anpassen. So können beispielsweise die Größe der RDS-Datenbank, die Typen der EC2-Instances sowie die Port-Nummern von Datenbank- und Webservern bei Erstellen eines Stapels an AWS CloudFormation übergeben werden. Sie können außerdem eine parametrierte Vorlage zur Erstellung mehrerer verschiedener Stacks nach Ihren Bedürfnissen verwenden. Beispielsweise können sich Ihre Amazon-EC2-Instanztypen, Amazon-CloudWatch-Alarmschwellen und Read-Replica-Einstellungen von Amazon Relational Database Service (Amazon RDS) je nach AWS-Region unterscheiden, wenn Sie in den USA mehr Kundenverkehr als in Europa verzeichnen. In diesem Fall haben Sie die Möglichkeit, die Einstellungen und Schwellenwerte in jeder Region separat anzupassen, und haben dennoch die Gewissheit, dass die Anwendung in allen Regionen auf einheitliche Weise bereitgestellt wird.
Integrationsfähig – AWS CloudFormation veröffentlicht Fortschrittsereignisse mittels AWS Simple Notification Service (SNS). So können Sie die Stack-Erstellung und den Fortschritt des Löschvorgangs per E-Mail verfolgen und programmatisch in andere Prozesse integrieren.
Keine Extragebühr – AWS CloudFormation ist ohne Aufpreis erhältlich. Sie zahlen nur den normalen Tarif für die AWS-Ressourcen, die von AWS CloudFormation erstellt und von Ihrer Anwendung genutzt werden.
Für die Nutzung von AWS CloudFormation fallen keine zusätzlichen Gebühren an. Sie zahlen für AWS-Ressourcen (z. B. EC2-Instanzen, Elastic Load Balancers), die mit AWS CloudFormation erstellt wurden, als ob Sie sie manuell erstellt hätten.
Damit Sie sich nicht für jeden von AWS CloudFormation unterstützten Service einzeln anmelden müssen, werden Sie bei Ihrer Anmeldung zu AWS CloudFormation von uns automatisch für alle diese Services registriert. Dies erleichtert Ihnen die Nutzung der Beispielvorlagen von AWS CloudFormation, da Sie nicht mehr manuell überprüfen müssen, ob Sie für die betreffenden AWS-Services registriert sind. Sie zahlen jeweils nur für die AWS-Services, die Sie tatsächlich in Anspruch nehmen. Es fallen keine Mindestgebühren oder Vorauszahlungen an.
Eine Vorlage ist eine JSON-(Javascript Object Notation)-formatierte Textdatei mit Beschreibung der AWS-Infrastruktur, die zur Ausführung einer Anwendung oder eines Service einschließlich etwaiger Verbindungen zwischen Anwendung und Service erforderlich ist. In den Vorlagen sind Ressourcenbeziehungen kurz zusammengefasst, beispielsweise EC2-Instanzen, die mit einem Elastic Load Balancer verknüpft sein müssen. Auch der Umstand, dass ein EBS-Volumen sich in derselben EC2-Verfügbarkeitszone wie die mit ihr verbundene Instanz befinden muss, kann in der Vorlage erfasst sein. Die Vorlage kann so parametriert werden, dass eine einzelne Vorlage für zahlreiche Infrastrukturbereitstellungen mit unterschiedlichen Konfigurationswerten verwendet werden kann, z. B. wie viele Instanzen für die Anwendung benötigt werden. Zudem sorgen die Ausgabeeigenschaften der Vorlage dafür, dass die Konfigurations- oder Vorlagenwerte mühelos an den Nutzer zurückgesendet werden kann. So kann die Vorlage im Fall einer Instanziierung die URL des Elastic-Load-Balancer-Endpunkts enthalten, den der Kunde zur Verbindung mit der neu instanziierten Anwendung nutzen soll. 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.
Sie stellen die Vorlage für die CreateStack-Operation in der AWS Console, dem Befehlzeilen-Tool oder der API bereit. Die Vorlage muss nicht vorab bei AWS CloudFormation registriert werden. AWS CloudFormation bewahrt ein Exemplar der Stack-Vorlage auf, sodass Sie mithilfe der AWS Management Console, den Befehlszeilen-Tools oder den APIs nach den genauen Ressourcenkonfigurationen suchen können, die während der Stack-Erstellung angewendet wurden.
So sieht die JSON-Struktur der Vorlage auf hoher Ebene aus:
{
"Description" : "A text description for the template usage",
"Parameters": {
// A set of inputs used to customize the template per deployment
},
"Resources" : {
// 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 können Sie die Erstellung einer EC2-Instanz erkennen:
{
"Description" : "Create an EC2 instance running the Amazon Linux 32 bit AMI.”
"Parameters" : {
"KeyPair" : {
"Description" : "The EC2 Key Pair to allow SSH access to the instance",
"Type" : "String"
}
},
"Resources" : {
"Ec2Instance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"KeyName" : { "Ref" : "KeyPair" },
"ImageId" : "ami-75g0061f"
}
}
},
"Outputs" : {
"InstanceId" : {
"Description" : "The InstanceId of the newly created EC2 instance",
"Value" : { "Ref" : "Ec2Instance" }
}
},
"AWSTemplateFormatVersion" : "2010-09-09"
}
Als Stack wird die Ressourcensammlung bezeichnet, die aus der Instanziierung einer Vorlage hervorgeht. Stacks werden durch Bereitstellung einer Vorlage und sämtlicher erforderlichen Parameter an den AWS CloudFormation-Service erstellt. Auf Basis der Vorlage stellt der Service fest, welche AWS-Ressourcen erstellt werden müssen und in welcher Reihenfolge. Die Reihenfolge wird durch die Abhängigkeiten zwischen den in der Vorlage angegebenen Ressourcen bestimmt. Einige dieser Abhängigkeiten sind implizit; beispielsweise muss bei der Verknüpfung eines EBS-Volumens mit einer EC2-Instanz der Name des EBS-Volumens an die Instanz weitergeleitet werden. Dies ist nur möglich, wenn das EBS-Volumen vorher erstellt wird, sodass ihm ein Name oder eine Kennung zugewiesen werden kann. In anderen Fällen ist die Abhängigkeit explizit. Wird zum Beispiel eine Anwendung mithilfe einer Auto-Scaling-Gruppe bereitgestellt und muss diese Anwendung auf eine Amazon-Relational-Database-Service-Instanz zugreifen, so muss die Datenbankinstanz vor Erstellung der EC2-Instanzen erstellt werden. In diesem Fall kann der Autor der Vorlage eine Abhängigkeit zwischen den Ressourcen definieren, um sicherzustellen, dass die eine Ressource vor der anderen erstellt wird.
Das Erstellen, Aktualisieren und Löschen von Stacks erfolgt über den AWS CloudFormation-Service. Während der Stack-Erstellung zeichnet AWS CloudFormation die Zuordnung des logischen Namens in der Vorlage (z. B. 'meinServer') zum tatsächlichen Namen der instanziierten Ressource (z. B. EC2-Instanz 'i-19d3ac161') auf. Der Status der Stack-Erstellung sowie die Zuordnungen der Ressourcennamen sind über eine einfache API verfügbar. Darüber hinaus kennzeichnet AWS CloudFormation die EC2-Ressourcen, z. B. Instanzen und EBS-Volumen, mit dem Stacknamen.
Stacks werden durch Bereitstellen einer Vorlage aktualisiert, 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 die Übertragung dieser Änderungen auf die verschiedenen Ressourcen in Ihrem Stack. Häufig haben die Änderungen keine Auswirkungen auf das Ausführen Ihrer Anwendung. Wenn eine Änderung jedoch nicht dynamisch durchgeführt werden kann (z. B. die Aktualisierung des AMI auf 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 das Update erfolgreich abgeschlossen werden wird.
Ein Stack wird entweder komplett erstellt oder aktualisiert oder, wenn er nicht vollständig instanziiert oder geändert werden kann, rückgängig gemacht. Zu Debugging-Zwecken kann während der Stack-Erstellung die Rollback-Option zum Zurücksetzen deaktiviert und zu einem späteren Zeitpunkt manuell aktiviert werden.
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 aus der AWS Management Console erstellen, löschen und aktualisieren. 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:
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 Volumens in der Vorlage lautet "myVolume"Die Bezeichnung des Typs lautet "AWS::EC2::Volume" Die Eigenschaften dürften Ihnen sehr bekannt vorkommen, wenn Sie bereits mit EBS-Volumen 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:
Die CloudFormation-Skripte können eigenständig oder zusammen mit CloudInit, einer auf dem Amazon Linux AMI und einigen anderen Linux-AMIs verfügbaren Funktion, verwendet werden. Weitere Informationen zum Bootstrappen von Anwendungen und zum Aktualisieren von Konfiguration finden Sie in den AWS CloudFormation Whitepaper.
Am besten lernen Sie Amazon CloudFormation kennen, wenn Sie das Handbuch "Erste Schritte" durcharbeiten, das Teil unserer technischen Dokumentation ist. Bereits nach wenigen Minuten können Sie eine Beispielvorlage anwenden und mit dem Erstellen Ihrer eigenen Infrastrukturkonfigurationen beginnen.
Die Nutzung dieses Service unterliegt der Kundenvereinbarung von Amazon Web Services.