Wie CloudFormation funktioniert
In diesem Thema wird beschrieben, wie CloudFormation funktioniert, und Sie werden in die wichtigsten Konzepte eingeführt, die Sie bei der Verwendung von CloudFormation kennen müssen.
Themen
Die wichtigsten Konzepte
Wenn Sie CloudFormation verwenden, arbeiten Sie mit Vorlagen und Stapeln. Sie erstellen Vorlagen zur Beschreibung der AWS-Ressourcen und deren Eigenschaften. Jedes Mal, wenn Sie einen Stack erstellen, stellt CloudFormation die Ressourcen bereit, die in der Vorlage beschrieben sind.
Vorlagen
Eine CloudFormation-Vorlage ist eine YAML- oder JSON-formatierte Textdatei. Sie können diese Dateien mit einer beliebigen Erweiterung speichern, z. B. .yaml, .json, .template oder .txt. CloudFormation verwendet diese Vorlagen als Entwürfe zum Erstellen der AWS-Ressourcen. In einer Vorlage können Sie beispielsweise eine Amazon EC2-Instance erstellen, z. B. den Instance-Typ, die AMI-ID, die Blockgerät-Zuweisungen und den Namen des Amazon EC2-Schlüsselpaars. Jedes Mal, wenn Sie einen Stack erstellen, geben Sie auch eine Vorlage an, die CloudFormation verwendet, um das zu erstellen, was Sie in der Vorlage beschrieben haben.
Wenn Sie beispielsweise einen Stack mit der folgenden Vorlage erstellt haben, stellt CloudFormation eine Instance mit der AMI-ID ami-0ff8a91507f77f867, dem Instance-Typ t2.micro, dem Namen des Schlüssel-Wert-Paars testkey und ein Amazon EBS-Volume bereit.
YAML
AWSTemplateFormatVersion: 2010-09-09 Description: A sample template Resources: MyEC2Instance: Type: 'AWS::EC2::Instance' Properties: ImageId: ami-0ff8a91507f77f867 InstanceType: t2.micro KeyName: testkey BlockDeviceMappings: - DeviceName: /dev/sdm Ebs: VolumeType: io1 Iops: 200 DeleteOnTermination: false VolumeSize: 20
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "A sample template", "Resources": { "MyEC2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": "ami-0ff8a91507f77f867", "InstanceType": "t2.micro", "KeyName": "testkey", "BlockDeviceMappings": [ { "DeviceName": "/dev/sdm", "Ebs": { "VolumeType": "io1", "Iops": 200, "DeleteOnTermination": false, "VolumeSize": 20 } } ] } } } }
Sie können auch mehrere Ressourcen in einer einzigen Vorlage angeben und diese Ressourcen so konfigurieren, dass sie zusammenarbeiten. Sie können beispielsweise die vorherige Vorlage so ändern, dass sie eine Elastic IP-Adresse (EIP) enthält und diese der Amazon-EC2-Instance zuordnen, wie im folgenden Beispiel dargestellt:
YAML
AWSTemplateFormatVersion: 2010-09-09 Description: A sample template Resources: MyEC2Instance: Type: 'AWS::EC2::Instance' Properties: ImageId: ami-0ff8a91507f77f867 InstanceType: t2.micro KeyName: testkey BlockDeviceMappings: - DeviceName: /dev/sdm Ebs: VolumeType: io1 Iops: 200 DeleteOnTermination: false VolumeSize: 20 MyEIP: Type: 'AWS::EC2::EIP' Properties: InstanceId: !Ref MyEC2Instance
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "A sample template", "Resources": { "MyEC2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": "ami-0ff8a91507f77f867", "InstanceType": "t2.micro", "KeyName": "testkey", "BlockDeviceMappings": [ { "DeviceName": "/dev/sdm", "Ebs": { "VolumeType": "io1", "Iops": 200, "DeleteOnTermination": false, "VolumeSize": 20 } } ] } }, "MyEIP": { "Type": "AWS::EC2::EIP", "Properties": { "InstanceId": { "Ref": "MyEC2Instance" } } } } }
Die vorherigen Vorlagen konzentrieren sich auf eine einzelne Amazon EC2-Instance. CloudFormation-Vorlagen weisen jedoch zusätzliche Funktionen auf, mit denen Sie komplexe Gruppen von Ressourcen erstellen und diese Vorlagen in mehreren Kontexten wiederverwenden können. Sie können beispielsweise Eingabeparameter hinzufügen, deren Werte angegeben werden, wenn Sie einen CloudFormation-Stack erstellen. Mit anderen Worten: Sie können einen Wert wie den Instance-Typ beim Erstellen eines Stacks und nicht beim Erstellen der Vorlage angeben, sodass die Vorlage in anderen Situationen einfacher wiederverwendet werden kann.
Stacks
Wenn Sie CloudFormation verwenden, verwalten Sie verwandte Ressourcen als eine einzige Einheit, die als Stack bezeichnet wird. Sie können eine Sammlung von Ressourcen durch Erstellen, Aktualisieren und Löschen von Stacks erstellen und löschen. Alle Ressourcen in einem Stack werden durch die CloudFormation-Vorlage des Stacks definiert. Angenommen, Sie erstellen eine Vorlage, die eine Auto-Scaling-Gruppe, einen Elastic Load Balancing Load Balancer und eine Amazon Relational Database Service (Amazon RDS)-Datenbank-Instance enthält. Zum Erstellen dieser Ressourcen erstellen Sie einen Stack, indem Sie die erstellte Vorlage übermitteln; CloudFormation erstellt dann all diese Ressourcen für Sie.
Änderungssätze
Wenn Sie Änderungen an den ausgeführten Ressourcen in einem Stack vornehmen müssen, aktualisieren Sie den Stack. Bevor Sie Änderungen an Ihren Ressourcen vornehmen, können Sie einen Änderungssatz generieren, eine Zusammenfassung der von Ihnen vorgeschlagenen Änderungen. Anhand von Änderungssätzen können Sie sehen, wie sich Ihre Änderungen möglicherweise auf die ausgeführten Ressourcen auswirken, bevor Sie sie implementieren, insbesondere bei kritischen Ressourcen.
Wenn Sie beispielsweise den Namen einer Amazon RDS-Datenbank-Instance ändern, erstellt CloudFormation eine neue Datenbank und löscht die alte. Sofern Sie die Daten in der alten Datenbank nicht gesichert haben, gehen diese verloren. Wenn Sie einen Änderungssatz generieren, sehen Sie, dass die Änderung dazu führt, dass die Datenbank ersetzt wird. So können Sie entsprechend planen, bevor Sie den Stack aktualisieren.
Wie CloudFormation funktioniert
Wenn Sie CloudFormation verwenden, um Ihren Stack zu erstellen, ruft CloudFormation den zugrunde liegenden Dienst AWS auf, um die in Ihrer Vorlage beschriebenen Ressourcen bereitzustellen und zu konfigurieren. Sie benötigen eine Genehmigung, um diese Ressourcen zu erstellen. Um zum Beispiel EC2-Instances einrichten zu können, indem CloudFormation verwendet wird, benötigen Sie Berechtigungen zum Erstellen von Instances. Sie verwalten diese Berechtigungen mit AWS Identity and Access Management (IAM).
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 festzulegen t2.micro. Das folgende Diagramm bietet eine Übersicht über die CloudFormation-Workflows für die Erstellung von Stacks.
So erstellen Sie einen Stack
-
Verwenden Sie einen Texteditor, um eine CloudFormation-Vorlage im YAML- oder JSON-Format zu erstellen. Die CloudFormation-Vorlage beschreibt die Ressourcen, die sie möchten und deren Einstellungen. Verwenden Sie Infrastructure Composer, um Ihre Vorlage zu visualisieren und zu validieren. So können Sie sicherstellen, dass Ihre Vorlage richtig strukturiert und frei von Syntaxfehlern ist. Weitere Informationen finden Sie unter Arbeiten mit CloudFormation-Vorlagen.
-
Speichern Sie die Vorlage lokal oder in einem Amazon S3-Bucket.
-
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.
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.
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 eines Stapels mit einem Änderungssatz
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.
So aktualisieren Sie einen Stapel mit einem Änderungssatz
-
Sie können eine CloudFormation Stack-Vorlage mit Infrastructure Composer oder einem Texteditor ändern. Weitere Informationen finden Sie unter Aktualisieren Sie Ihre Stapelvorlage.
Wenn Sie Ihre Vorlage aktualisieren, denken Sie daran, dass Aktualisierungen zu Unterbrechungen führen können. 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 Verstehen des Aktualisierungsverhaltens von Stack-Ressourcen.
-
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. Weitere Informationen zum Erstellen von Änderungssätzen finden Sie unter Aktualisieren Sie CloudFormation Stacks mit Änderungsgruppen.
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. Ein Änderungssatz prüft zum Beispiel nicht, ob Sie ein Konto Kontingentüberschreiten, ob Sie eine Ressource aktualisieren, die keine Aktualisierungen unterstützt, oder ob Sie nicht über ausreichende Berechtigungen zum Ändern einer Ressource verfügen, was dazu führen kann, dass eine Stapelaktualisierung 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.
Möglichkeiten für den Einstieg in CloudFormation
Um einen Hallo Welt CloudFormation Stack mit der Konsole zu erstellen, siehe Erstellen Sie Ihren ersten Stapel.
Wenn Sie eine Anleitung benötigen, sollten Sie den Workshop Erste Schritte mit CloudFormation