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 Textdatei im JSON- oder YAML-Format. Sie können diese Dateien mit einer beliebigen Erweiterung speichern, z. B..json, .yaml.template, oder. .txt CloudFormation verwendet diese Vorlagen als Vorlagen für den Aufbau 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. Immer wenn Sie einen Stapel erstellen, geben Sie auch eine Vorlage an, CloudFormation mit der alles erstellt wird, 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 Amazon EBS-Volume bereitgestellt.

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

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

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

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 EC2-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.

Weitere Informationen finden Sie unter Mit CloudFormation Vorlagen arbeiten.

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 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. Um diese Ressourcen zu erstellen, erstellen Sie einen Stapel, indem Sie die von Ihnen erstellte Vorlage einreichen CloudFormation und all diese Ressourcen für Sie bereitstellen. Sie können mit Stacks arbeiten, indem Sie die CloudFormation Konsole, die API oder AWS CLIverwenden.

Weitere Informationen finden Sie unter Stacks erstellen und verwalten mit AWS CloudFormation.

Ä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, 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.

Weitere Informationen finden Sie unter Aktualisieren von Stacks mithilfe von Änderungssätzen.

Wie CloudFormation funktioniert

Führt bei der Erstellung eines Stacks CloudFormation die zugrunde liegenden Service-Aufrufe durch AWS , um Ihre Ressourcen bereitzustellen und zu konfigurieren. CloudFormation kann nur Aktionen ausführen, zu deren Ausführung Sie berechtigt sind. Um beispielsweise EC2-Instances mithilfe von zu erstellen CloudFormation, benötigen Sie Berechtigungen zum Erstellen von Instanzen. Sie brauchen ähnliche Berechtigungen zum Beenden von Instances wenn Sie Stacks mit Instanzen löschen. Sie verwenden AWS Identity and Access Management (IAM) zum Verwalten von Berechtigungen.

Die Aufrufe, die getätigt CloudFormation werden, werden alle von Ihrer Vorlage deklariert. 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, CloudFormation ruft sie die Amazon EC2 Create Instance API auf und gibt den Instance-Typ als t2.micro an. Das folgende Diagramm fasst den CloudFormation Arbeitsablauf für die Erstellung von Stacks zusammen.

  1. Verwenden Sie Application Composer unseren eigenen Texteditor, um eine CloudFormation Vorlage im JSON- oder YAML-Format zu erstellen oder zu ändern. Zudem können Sie auch eine bereitgestellte Vorlage zur Erstellung verwenden. Die CloudFormation Vorlage beschreibt die gewünschten Ressourcen und deren Einstellungen. Angenommen, Sie möchten zum Beispiel eine EC2-Instance erstellen. Die Vorlage kann eine Amazon EC2-Instance deklarieren und deren Eigenschaften beschreiben, so wie im folgendem Beispiel angezeigt:

    Beispiel JSON
    { "AWSTemplateFormatVersion": "2010-09-09", "Description": "A simple EC2 instance", "Resources": { "MyEC2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": "ami-0ff8a91507f77f867", "InstanceType": "t2.micro" } } } }
    Beispiel YAML
    AWSTemplateFormatVersion: 2010-09-09 Description: A simple EC2 instance Resources: MyEC2Instance: Type: 'AWS::EC2::Instance' Properties: ImageId: ami-0ff8a91507f77f867 InstanceType: t2.micro
  2. Speichern Sie die Vorlage lokal oder in einem Amazon S3 S3-Bucket. Wenn Sie eine Vorlage erstellt haben, speichern Sie diese mit einer Dateierweiterung wie .json, .yaml oder .txt.

  3. Erstellen Sie einen CloudFormation Stapel, indem Sie den Speicherort Ihrer Vorlagendatei angeben, z. B. einen Pfad auf Ihrem lokalen Computer oder eine Amazon S3 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.

    Sie können Stapel mithilfe der CloudFormation Konsole, der CreateStackAPI-Operation oder des Befehls AWS CLI create-stack erstellen.

    Anmerkung

    Wenn Sie eine lokal gespeicherte Vorlagendatei angeben, wird sie in einen S3-Bucket in Ihrem Konto CloudFormation hochgeladen. AWS 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. Anschließend geben Sie immer, wenn Sie einen Stack erstellen oder aktualisieren, die Amazon S3-URL einer Vorlagendatei an.

CloudFormation stellt Ressourcen bereit und konfiguriert sie, indem die AWS Dienste aufgerufen werden, die in Ihrer Vorlage beschrieben sind.

Nachdem alle Ressourcen erstellt wurden, CloudFormation meldet es, dass Ihr Stack erstellt wurde. Sie können dann die Ressourcen in Ihrem Stack verwenden. Wenn die Stack-Erstellung CloudFormation fehlschlägt, machen Sie Ihre Änderungen rückgängig, indem Sie die erstellten Ressourcen löschen.

Aktualisieren von Stacks mithilfe von Änderungssätzen

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.

Wichtig

Updates können Unterbrechungen verursachen. 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 AWS CloudFormation Updates stapeln.

  1. Sie können eine CloudFormation Stapelvorlage mithilfe Application Composer eines Texteditors ändern. Wenn Sie beispielsweise eine EC2-Instance für den Instance-Typ ändern möchten, würden Sie den Wert der InstanceType Eigenschaft in der ursprünglichen Stack-Vorlage ändern.

    Weitere Informationen finden Sie unter Ändern einer Stack-Vorlage.

  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 angeben und den Ort der geänderten Vorlage wie z.B. ein Pfad auf Ihrem lokalen Computer oder einem Amazon S3-URL. Wenn die Vorlage Parameter enthält, können Sie beim Erstellen des Änderungssatzes Werte angeben.

    Weitere Informationen zum Erstellen von Änderungssätzen finden Sie unter Aktualisieren von Stacks mithilfe von Änderungssätzen.

    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.

Löschen eines Stacks

Wenn Sie einen Stapel löschen, geben Sie den zu CloudFormation löschenden Stapel an und löschen den Stapel und alle Ressourcen in diesem Stapel. Sie können Stapel mithilfe der CloudFormation Konsole, der DeleteStackAPI-Operation oder des Befehls AWS CLI delete-stack löschen.

Wenn Sie einen Stack löschen möchten, aber einige Ressourcen im Stack beibehalten möchten, können Sie eine Deletion-Richtlinie verwenden, um diese Ressourcen zu behalten.

Nachdem alle Ressourcen gelöscht wurden, CloudFormation signalisiert dies, dass Ihr Stack erfolgreich gelöscht wurde. Wenn eine Ressource nicht gelöscht werden CloudFormation kann, wird der Stapel nicht gelöscht. Alle Ressourcen, die nicht gelöscht worden sind bleiben erhalten, bis Sie den Stack erfolgreich löschen können.