AWS CloudFormation ist ein Service, der es Systemadministratoren ermöglicht, eine ganze Sammlung von AWS-Ressourcen – einschließlich ihrer Konfigurationen, Abhängigkeiten und Wechselbeziehungen zwischen ihnen – in einer einzigen Anweisung einzurichten und zu verwalten. Sie können auch Änderungen an der bestehenden Infrastruktur vornehmen, ohne die darauf laufenden Anwendungen anzuhalten oder neu bereitzustellen.
Mit AWS Cloudformation können Sie Ihre Infrastruktur als Code konfigurieren. Es ist im Grunde eine Infrastruktur als Code-Engine, die in der Cloud arbeitet und Benutzern hilft, Rechen-, Speicher- und andere Ressourcen bereitzustellen und zu verwalten. Eine CloudFormation-Vorlage ist eine JSON-Datei mit Anweisungen zum Erstellen oder Aktualisieren von AWS-Ressourcen. Wir können AWS CLI, AWS SDKs wie boto3 oder den AWS CloudFormation-Service verwenden, um Vorlagen zu erstellen.
CloudFormation bietet viele Vorteile wie:
- Benutzerfreundlichkeit:CloudFormation verwendet ein Vorlagenformat, mit dem Sie alle Attribute und Beziehungen Ihrer AWS-Ressource an einem Ort beschreiben können.
- Agilität bei der Markteinführung:Mit CloudFormation können Sie Ihre AWS-Ressourcen als Code erstellen und bereitstellen.
- Hochgradige Automatisierung:CloudFormation wandelt High-Level-Code in eine Reihe einfacher Vorlagen um, die zum Erstellen oder Aktualisieren von AWS-Ressourcen verwendet werden können.
Wenn Sie Ihre Workload-Bereitstellungen auf AWS automatisieren möchten, ist die Verwendung von CloudFormation eine der besten Möglichkeiten, dies zu tun.
In diesem Artikel zeigen wir Ihnen eine sanfte Einführung in CloudFormation und verwenden CloudFormation zur Automatisierung Ihrer AWS-Ressourcen. In diesem Leitfaden werden S3-Ressourcen zur Demonstration verwendet. Nach diesem Tutorial können Sie mithilfe von CloudFormation eine Reihe von AWS-Ressourcen erstellen, aktualisieren und löschen. Sie können auch lernen, wie Sie mit der Erstellung Ihrer eigenen CloudFormation-Vorlage beginnen.
Voraussetzungen
Um diesem Tutorial zu folgen, benötigen Sie die folgenden Voraussetzungen:
- AWS CLI in Version 1.6.1 oder höher auf Ihrem lokalen Computer installiert und mit einer Standardregion konfiguriert. Dieselbe Version sollte auch für Python 2.6 oder 3+ konfiguriert werden.
- Ein grundlegendes Verständnis von AWS-Services und etwas Erfahrung mit der AWS-Konsole.
Erstellen Ihres ersten Stacks
Nachdem Sie nun die Voraussetzungen geschaffen haben, beginnen wir mit der Konfiguration und Erstellung Ihres ersten Stacks.
1. Öffnen Sie Ihren bevorzugten Browser. Navigieren Sie zu diesem GitHub-Repository und laden Sie drei Dateien auf Ihre lokale Festplatte herunter.
- createstack.json
- updatestack1.json
- updatestack2.json
2. Navigieren Sie jetzt zu Ihrer AWS-Konsole ---> CloudFormation .
3. Sie sehen den folgenden Bildschirm. Klicken Sie auf Stack erstellen ---> Mit neuen Ressourcen .
4. Sie sehen den folgenden Bildschirm. Klicken Sie auf Vorlage ist fertig ---> Laden Sie eine Vorlagendatei hoch ---> Datei auswählen ----> Wählen Sie Ihre createstack.json aus zuvor heruntergeladene Datei ---> Weiter .
Wenn Sie einen neuen Stack erstellen, müssen Sie eine Vorlage für Ihren Stack bereitstellen. Sie können dies auf drei Arten tun:
- Die Vorlage ist fertig :Wählen Sie diese Option, wenn Sie Ihre Vorlage bereits zur Hand haben. Wenn nicht, fahren Sie mit der nächsten Option fort.
- Verwenden Sie eine Beispielvorlage :Verwenden Sie diese Option, um sich einen Vorsprung beim Erstellen Ihrer Vorlage zu verschaffen. Das AWS-Benutzerhandbuch enthält mehrere Beispiele für CloudFormation-Vorlagen.
- Erstellen Sie eine Vorlage in Designer :AWS CloudFormation Designer ist die neueste Möglichkeit, Ihren Stack zu erstellen. Es verwendet eine Drag-and-Drop-Oberfläche, ähnlich wie andere beliebte Tools wie Sharepoint, um Ihnen bei der Erstellung Ihrer Vorlage zu helfen.
Diese Demo verwendet die erste Option, „Vorlage ist bereit“, da Sie die Vorlagen bereits zur Hand haben (die Dateien, die Sie auf Ihre Festplatte heruntergeladen haben).
Sie können die createstack.json öffnen Datei in Ihrem Editor, um sie sich anzusehen. Sie sehen die folgenden Zeilen in createstack.json Datei.
- "Resources":{ ist der Abschnitt, den AWS CloudFormation erstellt. Es ist eine Gruppierung aller physischen Ressourcen, die Sie erstellen werden.
- "catpics":ist die logische Ressource, deren Typ ein S3-Bucket ist.
- "Typ":"AWS::S3::Bucket" ist die physische Ressource, die AWS CloudFormation erstellt.
5. Geben Sie auf dem nächsten Bildschirm einen Namen für Ihren Stapel an (htf ) und klicken Sie auf Weiter . Jeder Stack benötigt einen eindeutigen Namen innerhalb der AWS-Region, damit Sie ihn unterscheiden können. Sie können hier keine Sonderzeichen verwenden, nur Buchstaben, Zahlen und Unterstriche (keine Leerzeichen). AWS generiert automatisch eine eindeutige Stack-ID zur einfachen Identifizierung.
6. Behalten Sie auf dem nächsten Bildschirm die Standardeinstellungen bei und klicken Sie auf Weiter.
7. Behalten Sie auf dem nächsten Bildschirm die Standardeinstellungen bei und klicken Sie auf Stapel erstellen .
An diesem Punkt lädt AWS CloudFormation die Vorlage und erstellt den Stack für Sie. CloudFormation durchläuft jeden einzelnen Abschnitt der Vorlage und erstellt eine entsprechende physische Ressource dafür. In einigen Fällen führt AWS CloudFormation mehrere Überprüfungen Ihrer Vorlage durch, um sicherzustellen, dass alles vorhanden ist. Wenn es einen Fehler findet, erhalten Sie eine Fehlermeldung, die beschreibt, was das Problem ist und wie es behoben werden kann.
Der Erstellungsprozess dauert etwa 4-5 Minuten, um es zu erstellen. Sie können sehen, was los ist, indem Sie sich den Status des Stacks auf Ihrem CloudFormation-Dashboard ansehen, wie unten gezeigt. Sie können die Catpics sehen logische Ressourcen auf der linken Seite, und in jeder dieser Ressourcen können Sie die physischen Ressourcen sehen, die AWS CloudFormation für sie erstellt (CREATE_IN_PROGRESS ).
Sie können zur Registerkarte „Ressource“ navigieren, um die physischen Ressourcen anzuzeigen, die für diesen Stack erstellt werden. In diesem Fall ist es ein S3-Bucket namens catpics mit physischer Ressourcen-ID von htf-catpics-1roqn54xwm3of, wie unten gezeigt.
8. Navigieren Sie jetzt zu Ihrem S3-Dashboard. Auf Ihrem S3-Dashboard können Sie die Objekte sehen, die im Bucket erstellt werden. In diesem Fall lautet der Stack-Name für den S3-Bucket htf-catpics-1roqn54xwm3of , wie Sie unten sehen können.
Sie können sehen, dass der Name des Buckets diesem Muster folgt:Ihr Stapelname (htf ) – Ihr logischer Stapelname (catpics ) – eine zufällige Zeichenfolge (1roqn54xwm3of ). Es ist sehr wichtig, dass Sie dieses Muster kennen. Wenn Sie die IDs Ihrer physischen Ressourcen nicht in der Vorlage angeben, verwendet AWS CloudFormation dieses Muster, um den Namen für Ihre Ressourcen zu erstellen. Die Stärke davon ist, dass Sie jetzt dieselbe Vorlage verwenden können, um mehrere Stapel zu erstellen; AWS CloudFormation übernimmt automatisch die eindeutige Benennung für Sie!
Für einen Dienst wie S3 ist ein eindeutiger Name sehr wichtig; Der Name des Buckets muss global eindeutig sein, damit Sie Daten darin speichern können. Ihre Bucket-Namen dürfen nicht identisch sein. Sie können Objekte nicht in den Bucket verschieben, wenn Sie versuchen, ihn mit demselben Namen zu benennen.
Es ist wichtig zu verstehen, warum dies wichtig ist. Denn bei CloudFormation wird empfohlen, die ID der physischen Ressource nicht explizit in Ihrer Vorlage zu nennen. Lassen Sie stattdessen AWS CloudFormation automatisch eine erstellen. Das bedeutet, dass Sie Ihre Vorlage wiederverwenden können, um mehrere Stacks mit unterschiedlichen Ressourcen zu erstellen, ohne sich Gedanken über Namenskonflikte machen zu müssen. Sie können Ihre Vorlage einmal, zehnmal oder hundertmal verwenden, und CloudFormation wird die Namensänderungen entsprechend handhaben.
Den Stack aktualisieren
Nachdem Sie nun Ihren ersten Stack mit AWS CloudFormation erstellt haben, sehen wir uns an, wie Sie den Stack aktualisieren. Das Aktualisieren eines Stapels ist ein sehr wichtiges Konzept, das Sie verstehen müssen, sowohl für die Verwendung in der Produktion als auch für Ihre Prüfung. Wahrscheinlich werden Sie bei der Prüfung aufgefordert, etwas in Ihrer Vorlage zu ändern, oder Sie müssen vielleicht etwas in Ihrem Stack aktualisieren.
In diesem Abschnitt werden Sie einige Vorlagenänderungen vornehmen und diese aktualisierten Vorlagen verwenden, um Ihren Stack zu aktualisieren und auszuwerten, welche Änderungen an Ihren Ressourcen vorgenommen wurden.
Im Allgemeinen beim Aktualisieren von Stacks in CloudFormation. Sie nehmen die Vorlage, die Sie zum Erstellen eines Stapels verwendet haben, und fügen entweder neue Ressourcen hinzu, aktualisieren vorhandene Ressourcen oder entfernen vorhandene Ressourcen.
1. Öffnen Sie dieupdatestack1.json Datei, die Sie zuvor in Ihrem Editor heruntergeladen haben, sehen Sie die folgenden Codeblöcke. Vergleichen wir diese Vorlage mit createstack.json Vorlage, die Sie zuvor verwendet haben. Sie können sehen, dass wir eine zusätzliche logische Ressource namens dogpics hinzufügen werden . Noch wichtiger ist, dass keine Änderungen an bestehenden logischen Ressourcen vorgenommen wurden, nämlich den bestehenden catpics . Die catpics-Ressourcen wurden nicht geändert oder entfernt. Ich werde nur eine zusätzliche logische Ressource hinzufügen, nämlich dogpics .
2. Navigieren Sie zu Ihrem CloudFormation-Dashboard. Wählen Sie Ihren Stack (htf ) und klicken Sie auf Aktualisieren .
3. Wählen Sie auf dem nächsten Bildschirm Aktuelle Vorlage ersetzen aus ---> Laden Sie eine Vorlagendatei hoch ---> Wählen Sie Datei ---> Wählen Sie Ihre updatestack1.json aus Datei ---> Weiter .
4. Klicken Sie auf dem nächsten Bildschirm auf Weiter ---> Weiter ---> Aktualisieren stapeln, Wie nachfolgend dargestellt. Sie können sehen, dass CloudFormation Ihnen die Änderungen anzeigt, die vorgenommen werden. In diesem Fall haben wir eine logische ID namens dogpics hinzugefügt. CloudFormation zeigt uns auch die auszuführende Aktion (Hinzufügen ) und den logischen Ressourcentyp (AWS::S3::Bucket). Der Ersatz Spalte ist leer.
Genau wie beim Erstellen eines Stacks können Sie sich die Aktualisierungsereignisse auf der Stack-Seite ansehen. Alle Updates werden von CloudFormation durchgeführt. In diesem Fall wird ihm eine zusätzliche logische Ressourcen-ID übergeben, die dogpics lautet .
Sobald der Aktualisierungsprozess abgeschlossen ist, können Sie unten sehen, dass wir beide Catpics haben und die Dogpics Ressourcen in unserem Stack.
Navigieren Sie zu Ihrem S3-Dashboard und Sie können sehen, dass ein zusätzlicher Dogpics-Bucket namens htf-dogpics-4qesklu84ugq vorhanden ist wurde erstellt. Sie können sehen, dass die Benennung des Buckets nach demselben Muster dem Stack-Namen – logischem Stack-Namen – zufälliger Zeichenfolge folgt.
An diesem Punkt fügen wir unseren Ressourcen nur neue logische Ressourcen hinzu, was ziemlich einfach und risikoarm ist. Jetzt zeigen wir Ihnen, wie Sie Ressourcen aus Ihrem Stack entfernen.
Wir werden die Dogpics-Ressource von unserem Stack entfernen. Dies ist riskanter als das Hinzufügen, da das Löschen von Ressourcen Ihren Stapel beschädigen könnte. Da wir noch lernen, üben wir dies, indem wir unsere Dogpics-Ressource löschen, um zu sehen, was passiert
5. Navigieren Sie zu Ihrem CloudFormation-Dashboard. Wählen Sie Ihr htf aus Stack, klicken Sie auf Aktualisieren ---> Aktuelle Vorlage ersetzen ---> Wählen Datei ---> dieses Mal wählen wir die createstack.json aus Datei erneut ---> Weiter ---> Weiter ---> Weiter.
6. Klicken Sie auf dem nächsten Bildschirm auf Stack aktualisieren . Unter der Änderungssatz-Vorschau , können Sie die Aktion sehen Spalte ist jetzt:Entfernen . In diesem Fall entfernt CloudFormation die dogpics Ressource und die entsprechenden physischen Ressourcen (htf-dogpics-4qesklu84ugq ).
Navigieren Sie zu Ihrem S3-Dashboard. Sie können sehen, dass der Dogpics-Bucket jetzt von Ihrem S3-Dashboard verschwunden ist.
Sie werden das DELETE_COMPLETE event in Ihrem Stack-Event.
Das Entfernen logischer Ressourcen ist ein wenig riskant, da es Dinge löschen kann, aber dieses Risiko ist nur mit logischen Ressourcen verbunden, die Sie aus der Vorlage entfernt haben (die dogpics-Ressourcen). Bisher haben wir keine Änderungen an anderen vorhandenen logischen Ressourcen wie den catpics-Ressourcen vorgenommen. Die physischen Ressourcen von catpics können also nicht von Stack-Updates beeinflusst werden. Es gibt eine weitere Option, um Ihren Stack zu aktualisieren. Mit dieser Option könnten wir die Konfiguration für eine vorhandene logische Ressource ändern.
7. Öffnen Sie die updatestack2.json Datei, die Sie zuvor in Ihrem Editor heruntergeladen haben, sehen Sie den folgenden Codeblock.
Die Datei „updatestack2.json“ sieht der zuvor verwendeten Vorlage „createstack.json“ sehr ähnlich, mit Ausnahme von zwei wesentlichen Unterschieden. Wir fügen wieder die zweite logische Ressource hinzu, dogpics. Aber wir haben auch eine Änderung an Catpics vorgenommen.
Wir haben einen zusätzlichen Abschnitt der Konfiguration namens Properties hinzugefügt, in dem wir zusätzliche Eigenschaften für eine bestimmte logische Ressource definieren können. In diesem Fall erstellen wir einen S3-Bucket. Wir setzen den Bucket-Namen der physischen Ressource ausdrücklich auf catsareawesome -wie man schmiedet .
8. Navigieren Sie zu Ihrem CloudFormation-Dashboard. Wählen Sie Ihr htf aus Stapel, klicken Sie auf Aktualisieren ---> Aktuelle Vorlage ersetzen ---> Wählen Datei ---> Dieses Mal wählen wir die updatestack2.json aus Datei ---> Weiter ---> Weiter ---> Weiter.
9. Klicken Sie auf dem nächsten Bildschirm auf Stack aktualisieren . Beachten Sie die Änderungssatz-Vorschau können Sie die Auswirkungen dieses Updates sehen.
Die erste Änderung kommt mir bekannt vor. Wir werden eine zusätzliche logische Ressource für dogpics hinzufügen , das ein S3-Bucket sein wird. Aber wir sehen auch ein Modify Handlung. Und Modifizieren ist tatsächlich das Riskanteste, was Sie einem CloudFormation-Stack antun können.
Der Grund dafür ist, dass die vorhandenen Ressourcen, die vorhanden sind und möglicherweise von anderen Umgebungen verwendet werden, durch das Stack-Update geändert werden könnten. Daher ist die Verwendung vorhandener logischer Ressourcen potenziell riskanter.
Es gibt 3 Möglichkeiten, dass eine physische Ressource betroffen ist, wenn Sie einen Stack auf diese Weise aktualisieren. Die erste Möglichkeit besteht darin, dass eine Ressource ohne Unterbrechung des Dienstes aktualisiert wird.
Die zweite Möglichkeit besteht darin, dass die Ressource aktualisiert wird und der Dienst durch ein gewisses Maß an Unterbrechung unterbrochen wird. Zum Beispiel, wenn Sie Ihren Stack aktualisieren, um die Größe Ihrer EC2-Instance zu ändern. Wenn Sie dies tun, müssen Sie Ihre EC2-Instance manuell neu starten. Ein neues AMI wird gestartet und es kann zu Ausfallzeiten kommen. Aber sobald das neue AMI gestartet ist, ist Ihr Service sofort verfügbar.
Die letzte Möglichkeit besteht darin, dass das Update Ihre gesamte vorhandene physische Ressource löscht und durch eine neue ersetzt (Ersatz ). Dies ist die riskanteste Möglichkeit beim Aktualisieren Ihres CloudFormation-Stacks. Sie sollten wirklich darauf achten, wenn Sie dies tun. Wenn diese Art von Austausch stattfindet, werden Sie der Ersatz Spalte ist Wahr , wie im Screenshot unten gezeigt.
Auf Ihrem CloudFormation Stacks-Dashboard können Sie sehen, dass es heißt:„Angefordertes Update erfordert die Erstellung einer neuen physischen Ressource; daher Erstellung einer.“ CloudFormation löscht also die vorhandene Ressource und erstellt eine neue.
Navigieren Sie zu Ihrem S3-Dashboard, Sie werden sehen, dass der Catpics-Bucket jetzt weg ist und ein neuer, catsareawesome -wie man schmiedet , wurde erschaffen. Beachten Sie, dass wir explizit den physischen Namen (catsareawesome-howtoforge) für eine Ressource innerhalb einer CloudFormation-Vorlage angeben, es werden keine zufälligen Zeichen auf den Ressourcennamen angewendet.
Das Problem dabei ist, wenn wir diese Vorlage verwenden, um einen anderen CloudFormation-Stack zu erstellen, würde dies fehlschlagen, da versucht würde, einen anderen Bucket mit genau demselben Namen zu erstellen. Und Sie können in keinem AWS-Konto zwei Buckets mit demselben Namen haben. Sie erhalten die folgende Fehlermeldung, wenn Sie versuchen, einen weiteren Bucket mit genau demselben Namen zu erstellen.
Löschen Ihrer CloudFormation-Stacks
Nachdem wir die Vorlage geändert und unseren Stack aktualisiert haben, müssen wir sicherstellen, dass wir den Stack löschen, nachdem wir die Arbeit daran abgeschlossen haben. Wenn wir die ungenutzten Stacks nicht löschen, bleiben sie auf unbestimmte Zeit in unserem CloudFormation Stack-Dashboard. Wir müssten dort manuell hineingehen und es löschen.
Wählen Sie in Ihrem CloudFormation-Dashboard Ihren Stack und dann Löschen aus . Wenn CloudFormation den Stack löscht, werden auch alle Ressourcen in diesem Stack gelöscht. Es gibt keine Möglichkeit, nur eine Ressource wie den S3-Bucket oder die EC2-Instance zu löschen. Diese Aktion ist beabsichtigt.
Schlussfolgerung
In diesem Leitfaden haben wir uns angesehen, wie CloudFormation-Stacks erstellt und geändert werden. Wir haben uns einige Möglichkeiten zum Ändern von Vorlagen und zum Aktualisieren vorhandener Stacks angesehen. Wir haben uns dann einige der Möglichkeiten angesehen, die mit der Aktualisierung von Stacks verbunden sind. Und zuletzt haben wir uns angesehen, wie Sie CloudFormation-Stacks löschen können, nachdem Sie mit der Bearbeitung fertig sind.
Bitte hinterlassen Sie unten einen Kommentar, wenn Sie Fragen oder Anregungen haben. Danke fürs Lesen!