Wie CloudFormation funktioniert - AWS CloudFormation

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Wie CloudFormation funktioniert

In diesem Thema wird beschrieben, wie es CloudFormation funktioniert, und es werden die wichtigsten Konzepte vorgestellt, die Sie bei der Verwendung kennen sollten.

Die wichtigsten Konzepte

Bei der Verwendung CloudFormation arbeiten Sie mit Vorlagen und Stacks. Sie erstellen Vorlagen, um Ihre AWS Ressourcen und ihre Eigenschaften zu beschreiben. Jedes Mal, wenn Sie einen Stapel erstellen CloudFormation , werden die Ressourcen bereitgestellt, die in Ihrer 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 Vorlagen für den Aufbau Ihrer AWS Ressourcen. In einer Vorlage können Sie beispielsweise eine EC2 Amazon-Instance beschreiben, z. B. den Instance-Typ, die AMI ID, Blockgerätezuordnungen und den Namen des EC2 Amazon-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, CloudFormation wird eine Instance mit einer ami-0ff8a91507f77f867 AMI ID, einem t2.micro Instance-Typ, einem testkey Schlüsselpaarnamen und einem EBS Amazon-Volume bereitgestellt.

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 sie der EC2 Amazon-Instance zuordnen, wie im folgenden Beispiel gezeigt:

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 EC2 Amazon-Instance. CloudFormation Vorlagen verfügen jedoch über zusätzliche Funktionen, mit denen Sie komplexe Ressourcensätze erstellen und diese Vorlagen in mehreren Kontexten wiederverwenden können. Sie können beispielsweise Eingabeparameter hinzufügen, deren Werte bei der Erstellung eines CloudFormation Stacks angegeben werden. 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 verwenden CloudFormation, verwalten Sie zugehörige Ressourcen als eine einzige Einheit, die als Stapel 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 Stapel werden durch die CloudFormation Vorlage des Stacks definiert. Angenommen, Sie haben eine Vorlage erstellt, die eine Auto Scaling Scaling-Gruppe, einen Elastic Load Balancing Load Balancer und eine Amazon Relational Database Service (AmazonRDS) -Datenbank-Instance enthält. Um diese Ressourcen zu erstellen, erstellen Sie einen Stack, indem Sie die von Ihnen erstellte Vorlage einreichen und all CloudFormation diese Ressourcen für Sie bereitstellen.

Ä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 RDS Amazon-Datenbank-Instance ändern, CloudFormation wird eine neue Datenbank erstellt und die alte gelöscht. 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 Ihren Stack erstellen, CloudFormation ruft die zugrunde liegenden Dienste auf, AWS um die in Ihrer Vorlage beschriebenen Ressourcen bereitzustellen und zu konfigurieren. Sie benötigen eine Genehmigung, um diese Ressourcen zu erstellen. Um beispielsweise EC2 Instanzen mithilfe von zu erstellen CloudFormation, benötigen Sie Berechtigungen zum Erstellen von Instanzen. Sie verwalten diese Berechtigungen mit AWS Identity and Access Management(IAM).

Die Aufrufe, die CloudFormation Sie tätigen, werden alle von Ihrer Vorlage deklariert. Nehmen wir zum Beispiel an, Sie haben eine Vorlage, die eine EC2 Instanz mit einem t2.micro Instanztyp beschreibt. Wenn Sie diese Vorlage verwenden, um einen Stack zu erstellen, CloudFormation ruft Amazon EC2 Create Instance auf API und gibt den Instance-Typ als ant2.micro. Das folgende Diagramm bietet eine Übersicht über die CloudFormation -Workflows für die Erstellung von Stacks.

Eine erstellte oder vorhandene Vorlage, die lokal oder in einem Bucket gespeichert wird und zur Erstellung eines Stacks verwendet wird.
So erstellen Sie einen -Stack
  1. 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 ihn, um Ihre Vorlage zu visualisieren und zu validieren. Auf diese Weise können Sie sicherstellen, dass Ihre Vorlage ordnungsgemäß strukturiert und frei von Syntaxfehlern ist. Weitere Informationen finden Sie unter Mit CloudFormation Vorlagen arbeiten.

  2. Speichern Sie die Vorlage lokal oder in einem Amazon S3 S3-Bucket.

  3. Erstellen Sie einen CloudFormation Stapel, indem Sie den Speicherort Ihrer Vorlagendatei angeben, z. B. einen Pfad auf Ihrem lokalen Computer oder einem Amazon S3URL. 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 lokal gespeicherte Vorlagendatei angeben, CloudFormation lädt sie in einen S3-Bucket in Ihrem AWS Konto hoch. CloudFormation erstellt einen Bucket für jede Region, in die Sie eine Vorlagendatei hochladen. Auf die Buckets kann jeder zugreifen, der über Amazon Simple Storage Service (Amazon S3) -Berechtigungen in Ihrem AWS Konto verfügt. Wenn ein von erstellter Bucket bereits vorhanden CloudFormation ist, wird die Vorlage diesem Bucket hinzugefügt.

    Sie können Ihren eigenen Bucket verwenden und dessen Berechtigungen durch manuelles Hochladen von Vorlagen in Amazon S3 verwalten. Geben Sie dann bei jeder Erstellung oder Aktualisierung eines Stacks den Amazon S3 URL einer Vorlagendatei an.

Nachdem alle Ressourcen erstellt wurden, CloudFormation meldet es, dass Ihr Stack erstellt wurde. 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.

Informationen zum Erstellen eines CloudFormation Hello-World-Stacks mit der Konsole finden Sie unterErstelle deinen ersten Stack.

Einen Stack mit einem Änderungssatz aktualisieren

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 eine modifizierte Version der ursprünglichen Stack-Vorlage, andere Eingabeparameterwerte oder beides einreichen. CloudFormation vergleicht die geänderte Vorlage mit der Originalvorlage 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.

Eine Vorlage, die einen Änderungssatz verwendet, um den geänderten Wert anzuzeigen, bevor der Änderungssatz ausgeführt wird, um den Stack zu aktualisieren.
Um einen Stack mit einem Änderungssatz zu aktualisieren
  1. Sie können eine CloudFormation Stapelvorlage mithilfe Infrastructure Composer eines Texteditors ändern. Weitere Informationen finden Sie unter Aktualisiere deine Stack-Vorlage.

    Denken Sie beim Aktualisieren Ihrer Vorlage 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 Sie das Aktualisierungsverhalten von Stack-Ressourcen.

  2. Speichern Sie die CloudFormation Vorlage lokal oder in einem S3-Bucket.

  3. Erstellen Sie einen Änderungssatz, indem Sie den Stack, den Sie aktualisieren möchten, und den Speicherort der geänderten Vorlage angeben, z. B. einen Pfad auf Ihrem lokalen Computer oder einem Amazon S3URL. Weitere Informationen zum Erstellen von Änderungssätzen finden Sie unter CloudFormation Stapel mithilfe von Änderungssätzen aktualisieren.

    Anmerkung

    Wenn Sie eine Vorlage angeben, die auf Ihrem lokalen Computer gespeichert ist, CloudFormation wird Ihre Vorlage automatisch in einen S3-Bucket in Ihrem AWS-Konto.

  4. Sehen Sie sich den Änderungssatz an, um zu überprüfen, CloudFormation ob er die erwarteten Änderungen vornimmt. Prüfen Sie beispielsweise, ob kritische Stack-Ressourcen ersetzt CloudFormation werden. 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 beispielsweise nicht, ob Sie ein Kontokontingent überschreiten, ob Sie eine Ressource aktualisieren, die keine Updates unterstützt, oder ob Sie nicht über ausreichende Berechtigungen zum Ändern einer Ressource verfügen, was dazu führen kann, dass ein Stack-Update fehlschlägt.

  5. Initiieren Sie den Änderungssatz, den Sie auf Ihren Stack anwenden möchten. CloudFormation aktualisiert Ihren Stack, indem es nur die Ressourcen aktualisiert, die Sie geändert haben, und signalisiert, dass Ihr Stack erfolgreich aktualisiert wurde. Wenn die Aktualisierung des Stacks CloudFormation fehlschlägt, werden die Änderungen rückgängig gemacht, um den Stack auf den letzten bekannten Betriebszustand zurückzusetzen.