AWS CloudFormation-Konzepte - AWS CloudFormation

AWS CloudFormation-Konzepte

Wenn Sie AWS CloudFormation verwenden, arbeiten Sie mit Vorlagen und Stacks. 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 JSON- oder YAML-formatierte Textdatei. Sie können diese Dateien mit beliebiger Erweiterung speichern, z. B. .json, .yaml, .template oder .txt. CloudFormation verwendet diese Vorlagen als Blaupausen für die Erstellung Ihrer 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.

Beispiel 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 } } ] } } } }

Beispiel 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

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 (EIP) enthält und diese mit der Amazon EC2-Instance verknüpfen, wie im folgenden Beispiel dargestellt:

Beispiel 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"} } } } }

Beispiel 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

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.

Weitere Informationen zum Erstellen von Vorlagen und zu Funktionen finden Sie unter Aufbau einer Vorlage.

Weitere Informationen zum Deklarieren von bestimmten Ressourcen finden Sie unter AWS-Ressourcen- und Eigenschaftstypen – Referenz.

Um mit dem Entwerfen eigener Vorlagen mit AWS CloudFormation Designer zu beginnen, gehen Sie zu https://console.aws.amazon.com/cloudformation/designer.

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. Sie können mit Stacks unter Verwendung der CloudFormation-Konsole, der API oder AWS CLI arbeiten.

Weitere Informationen zum Erstellen, Aktualisieren oder Löschen von Stacks, finden Sie unter Arbeiten mit Stacks.

Ä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. Weitere Informationen finden Sie unter Aktualisieren von Stacks mithilfe von Änderungssätzen.