AWS CloudFormation Bewährte Methoden - 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.

AWS CloudFormation Bewährte Methoden

Bewährte Methoden sind Empfehlungen, mit denen Sie im gesamten Workflow AWS CloudFormation effektiver und sicher nutzen können. Erfahren Sie mehr dazu, wie Sie Stacks planen und organisieren, Vorlagen zum Beschreiben Ihrer Ressourcen und die Software-Anwendungen, die auf ihnen laufen, erstellen und Ihre Stacks und ihre Ressourcen verwalten. Die folgenden bewährten Methoden basieren auf realitätsnahen Erfahrungen aktueller CloudFormation Kunden.

Verkürzen der Feedbackschleife zur Verbesserung der Liefergeschwindigkeit

Nutzen Sie Methoden und Tools, mit denen Sie die Feedback-Schleife für Ihre Infrastruktur, die Sie beschreiben, mit - CloudFormation Vorlagen verkürzen können. Dazu gehört das frühzeitige Linting und Testen Ihrer Vorlagen auf Ihrer Workstation. Wenn Sie dies tun, haben Sie die Möglichkeit, potenzielle Syntax- und Konfigurationsprobleme zu entdecken, noch bevor Sie Ihre Beiträge an ein Quellcode-Repository übermitteln. Die frühzeitige Erkennung solcher Probleme hilft dabei, zu verhindern, dass sie formale Lebenszyklusumgebungen wie Entwicklung, Qualitätssicherung und Produktion erreichen. Dieser schnell scheiternde Ansatz mit frühzeitigem Testen bietet Ihnen die Vorteile, die Wartezeiten für Nacharbeiten zu verkürzen, potenzielle Auswirkungen zu reduzieren und Ihr Vertrauen in erfolgreiche Bereitstellungsvorgänge zu erhöhen.

Zu den Tools, die Ihnen helfen, schnell scheiternde Methoden zu erreichen, gehören die Tools AWS CloudFormation Linter (cfn-lint) und TaskCat Befehlszeilentools. Das Tool cfn-lint bietet Ihnen die Möglichkeit, Ihre CloudFormation Vorlagen anhand der AWS CloudFormation Ressourcenspezifikation zu validieren. Dazu gehört das Überprüfen gültiger Werte für Ressourceneigenschaften, sowie bewährte Methoden. Plugins für cfn-lint sind für eine Reihe von Code-Editoren verfügbar. Dies gibt Ihnen die Möglichkeit, Probleme in Ihrem Editor zu visualisieren und direktes Linter-Feedback zu erhalten. Sie können cfn-lint auch in die Konfiguration Ihres Quellcode-Repositorys integrieren, sodass Sie eine Vorlagenvalidierung durchführen können, wenn Sie Ihre Beiträge festschreiben. Weitere Informationen finden Sie unter Git-Pre-Commit-Validierung von AWS CloudFormation Vorlagen mit cfn-lint. Sobald Sie Ihre erste Untersuchung durchgeführt und alle Probleme behoben haben, die cfn-lint möglicherweise gemeldet hat, können Sie verwenden, TaskCat um Ihre Vorlagen zu testen, indem Sie programmgesteuert Stacks in von Ihnen ausgewählten AWS Regionen erstellen. TaskCat generiert auch einen Bericht mit einer Pass/Fail-Bewertung für jede von Ihnen gewählte Region.

Eine praktische exemplarische Vorgehensweise step-by-stepzur Verwendung beider Tools zum Verkürzen der Feedback-Schleife finden Sie in der Untersuchungs- und Testumgebung des AWS CloudFormation Workshops .

Stacks nach Lebenszyklus und Besitz organisieren

Verwenden Sie den Lebenszyklus und den Besitz Ihrer AWS Ressourcen, um zu entscheiden, welche Ressourcen in jeden Stack aufgenommen werden sollen. Anfänglich können Sie alle Ihre Ressourcen einem Stack zuweisen, aber da Ihr Stack wächst und umfangreicher wird, kann die Verwaltung eines einzelnen Stack mühsam und zeitaufwändig sein. Durch die Gruppierung von Ressourcen mit gemeinsamen Lebenszyklen und Besitzeigenschaften können Eigentümer Änderungen an ihren Ressourcensätzen unter Anwendung ihrer eigenen Prozesse und Zeitpläne vornehmen, ohne andere Ressourcen zu beeinträchtigen.

Beispiel: Ein Team von Entwicklern und Technikern, dem eine Website gehört, die auf Instances mit Auto Scaling hinter einem Load Balancer gehostet ist. Da die Website einen eigenen Lebenszyklus hat und vom Website-Team gepflegt wird, können Sie einen Stack für die Website und ihre Ressourcen erstellen. Nehmen wir einmal an, dass die Website auch Back-End-Datenbanken verwendet, bei denen sich die Datenbanken in einem separaten Stack befinden, die Eigentum von Datenbankadministratoren sind und von diesen gepflegt werden. Wenn das Website-Team oder das Datenbank-Team seine Ressourcen aktualisieren muss, so können sie dies tun, ohne dass dies Auswirkungen auf die Stacks der anderen hat. Wenn sich alle Ressourcen in einem einzigen Stack befinden, kann sich die Koordination und Übermittlung von Updates schwierig gestalten.

Für weitere Informationen über das Organisieren Ihrer Stacks können Sie zwei übliche Frameworks verwenden: eine mehrschichtige Architektur und eine Service-orientierte Architektur (SOA).

Eine geschichtete Architektur organisiert Stacks in mehrere horizontale Layers, die aufeinander aufbauen, wobei jede Layer über eine Abhängigkeit zur Layer direkt unter ihr verfügt. Sie können also einen oder mehrere Stacks auf jeder Layer haben, aber innerhalb jeder Layer sollten Ihre Stacks über AWS -Ressourcen mit ähnlichem Lebenszyklus und ähnlichen Besitzeigenschaften verfügen.

Bei einer serviceorientierten Architektur können Sie große Business-Probleme in überschaubare Teile organisieren. Jeder dieser Teile ist ein Service mit einem klar definierten Zweck und stellt eine eigenständige Funktionseinheit dar. Sie können diese Services einem Stack mit jeweils eigenem Lebenszyklus und eigene Besitzeigenschaften zuweisen. Diese Services (Stacks) können untereinander verbunden werden, sodass sie miteinander interagieren können.

Verwenden von Stack-übergreifenden Verweisen zum Export von gemeinsam genutzten Ressourcen

Wenn Sie Ihre AWS Ressourcen basierend auf Lebenszyklus und Besitzeigenschaften organisieren, sollten Sie einen Stack erstellen, der Ressourcen verwendet, die sich in einem anderen Stack befinden. Sie können im hardcode festgelegte Werte oder Eingabeparameter verwenden, um Ressourcennamen und IDs weiterzugeben. Durch diese Methoden sind Vorlagen jedoch möglicherweise nur schwer erneut zu verwenden oder können den Overhead zum Ausführen des Stack vergrößern. Verwenden Sie stattdessen Stack-übergreifende Verweise, um Ressourcen aus einem Stack zu exportieren und in einem anderen Stack zu verwenden. Stacks können die exportierten Ressourcen verwenden, indem sie sie mithilfe der Fn::ImportValue-Funktion aufrufen.

Angenommen, Sie verfügen über ein Netzwerk-Stack mit VPC, Sicherheitsgruppe und Subnetz. Sie möchten, dass alle öffentliche Webanwendungen diese Ressourcen verwenden. Durch den Export der Ressourcen ermöglichen Sie allen Stacks mit öffentlichen Webanwendungen die Nutzung. Weitere Informationen finden Sie unter Walkthrough: Verweisen auf Ressourcenausgaben in einem anderen AWS CloudFormation-Stack.

Prüfen der Kontingente für alle Ressourcentypen

Bevor Sie einen Stack starten, stellen Sie sicher, dass Sie alle gewünschten Ressourcen erstellen können, ohne Ihre AWS Kontolimits zu erreichen. Wenn Sie ein Limit erreichen, CloudFormation wird Ihren Stack erst erfolgreich erstellen, wenn Sie Ihr Kontingent erhöhen oder zusätzliche Ressourcen löschen. Jeder Service kann verschiedene Grenzwerte haben, die Sie vor dem Starten eines Stacks kennen sollten. Sie können beispielsweise standardmäßig nur 2000 CloudFormation Stacks pro Region in Ihrem starten AWS-Konto. Weitere Informationen zu den Grenzwerten und wie Standard-Grenzwerte erhöht werden können, finden Sie unter AWS -Service-Quotas im Allgemeine AWS-Referenz.

Verwenden von Vorlagen zum Replizieren von Stacks in mehreren Umgebungen

Nachdem Sie Ihre Stacks und Ressourcen eingerichtet haben, können Sie Ihre Vorlagen für die Replikation Ihrer Infrastruktur in mehreren Umgebungen erneut verwenden. Sie können beispielsweise Umgebungen für Entwicklung, Tests und Produktion erstellen, sodass Sie Änderungen testen können, bevor Sie sie in Produktion geben. Um Vorlagen wiederverwendbar zu machen, verwenden Sie die Abschnitte für Parameter, Zuweisungen und Bedingungen, sodass Sie Ihre Stacks bei der Erstellung individuell anpassen können. Beispielsweise können Sie für Ihre Entwicklungsumgebungen einen Instance-Typ für niedrigere Kosten als für Ihre Produktionsumgebung festlegen. Aber alle weiteren Konfigurationen und Einstellungen bleiben gleich. Weitere Informationen zu Parameter, Zuweisungen und Bedingungen finden Sie unter Aufbau einer Vorlage.

Verwenden von Modulen, um Ressourcenkonfigurationen wiederzuverwenden

Wenn Ihre Infrastruktur wächst, können häufig wiederkehrende Muster entstehen, in denen Sie dieselben Komponenten in jeder Ihrer Vorlagen deklarieren. Module sind eine Möglichkeit für Sie, Ressourcenkonfigurationen für die Aufnahme in Stack-Vorlagen auf transparente, verwaltbare und wiederholbare Weise zu erstellen. Module können gängige Servicekonfigurationen und Best Practices als modulare, anpassbare Bausteine zusammenfassen, die Sie in Ihre Stack-Vorlagen aufnehmen können.

Diese Bausteine können für eine einzelne Ressource sein, wie Best Practices zum Definieren einer Amazon-Elastic-Compute-Cloud(Amazon EC2)-Instance, oder sie können für mehrere Ressourcen verwendet werden, um gemeinsame Muster der Anwendungsarchitektur zu definieren. Diese Bausteine können in andere Module verschachtelt werden, sodass Sie Ihre bewährten Methoden in höherwertige Bausteine stapeln können. CloudFormation module sind in der CloudFormation Registrierung verfügbar, sodass Sie sie wie eine native Ressource verwenden können. Wenn Sie ein CloudFormation Modul verwenden, wird die Modulvorlage in die verbrauchende Vorlage erweitert, sodass Sie mit einem Ref oder Fn::GetAtt auf die Ressourcen innerhalb des Moduls zugreifen können. Weitere Informationen finden Sie unter Module.

Verwenden von AWS-spezifischen Parametertypen

Wenn Ihre Vorlage Eingaben für vorhandene AWS-spezifische Werte erfordert, z. B. vorhandene Amazon Virtual Private Cloud-IDs oder einen Amazon EC2-Schlüsselpaarnamen, verwenden Sie AWS-spezifische Parametertypen. Sie können beispielsweise einen Parameter als Typ angebenAWS::EC2::KeyPair::KeyName, der einen vorhandenen Schlüsselpaarnamen übernimmt, der sich in Ihrem AWS Konto und in der Region befindet, in der Sie den Stack erstellen. AWS CloudFormation kann Werte für AWS-spezifische Parametertypen schnell validieren, bevor Sie Ihren Stack erstellen. Wenn Sie die CloudFormation Konsole verwenden, CloudFormation zeigt außerdem eine Dropdown-Liste mit gültigen Werten an, sodass Sie die richtigen VPC-IDs oder Schlüsselpaarnamen nicht suchen oder sich merkenmüssen. Weitere Informationen finden Sie unter Parameter.

Verwenden von Parameter-Einschränkungen

Mit Einschränkungen können Sie zulässige Eingabewerte beschreiben, sodass ungültige Werte vor dem Erstellen eines Stack CloudFormation abfängt. Sie können z. B. Mindestlänge, Maximallänge und zulässige Muster festlegen. Sie können beispielsweise für einen Datenbank-Benutzername-Wert festlegen Einschränkungen, sodass dieser mindestens aus acht Zeichen bestehen und alphanumerische Zeichen enthalten muss. Weitere Informationen finden Sie unter Parameter.

Verwenden Sie Pseudoparameter, um die Portabilität zu fördern.

Verwenden Sie Pseudoparameter in Ihren Vorlagen als Argumente für intrinsische Funktionen wie Ref und Fn::Sub verwenden. Pseudoparameter sind Parameter, die von vordefiniert werden CloudFormation. Sie deklarieren sie nicht in Ihrer Vorlage. Die Verwendung von Pseudoparametern in intrinsischen Funktionen erhöht die Portabilität Ihrer Stack-Templates über Regionen und Konten hinweg.

Stellen Sie sich beispielsweise vor, Sie möchten eine Vorlage erstellen, in der Sie für eine bestimmte Ressourceneigenschaft den Amazon-Ressourcennamen (ARN) einer anderen vorhandenen Ressource angeben müssen. In diesem Fall ist die vorhandene Ressource vom Typ AWS Systems Manager Parameter Store mit dem folgenden ARN: arn:aws:ssm:us-east-1:111122223333:parameter/MySampleParameter. Sie müssen das ARN-Format an Ihre AWS Zielpartition, Region und Konto-ID anpassen. Anstatt diese Werte fest einzuprogrammieren, können Sie die Pseudoparameter AWS::Partition, AWS::Region, und AWS::AccountId verwenden, um Ihre Vorlage besser portabel zu gestalten. In diesem Fall zeigt das folgende Beispiel, wie Sie Elemente in einem ARN mit verketten CloudFormation: !Sub 'arn:${AWS::Partition}:ssm:${AWS::Region}:${AWS::AccountId}:parameter/MySampleParameter.

Ein weiteres Beispiel: Angenommen, Sie möchten verwendenWalkthrough: Verweisen auf Ressourcenausgaben in einem anderen AWS CloudFormation-Stack, um auf Ressourcenausgaben in einem anderen CloudFormation Stack zu verweisen. In diesem Beispiel wird davon ausgegangen, dass Sie ein Subnetz für Ihre VPC erstellt und dann dessen ID zur Verwendung mit anderen Stacks in demselben Konto und derselben Region exportiert haben. In einem anderen Stack referenzieren Sie den exportierten Wert der Subnetz-ID, wenn Sie eine Amazon-EC2-Instance beschreiben.

Stack-Exporte müssen pro Konto und Region eindeutig sein. In diesem Fall können Sie also den Pseudoparameter AWS::StackName verwenden, um ein Präfix für Ihren Export zu erstellen. Da Stack-Namen ebenfalls pro Konto und Region eindeutig sein müssen, erhöht die Verwendung dieses Pseudoparameters als Präfix die Wahrscheinlichkeit eines eindeutigen Exportnamens und fördert gleichzeitig einen wiederverwendbaren Ansatz für Stacks, aus denen Sie Werte exportieren. Alternativ können Sie ein Präfix Ihrer Wahl verwenden.

Ein ausführliches Beispiel für die Verwendung des Ausgabefeldes Export und der intrinsischen Funktion Fn::ImportValue finden Sie unter Walkthrough: Verweisen auf Ressourcenausgaben in einem anderen AWS CloudFormation-Stack.

Verwenden von AWS::CloudFormation::Init zur Bereitstellung von Software-Anwendungen auf Amazon-EC2-Instances

Wenn Sie Stacks starten, können Sie Software-Anwendungen auf Amazon EC2 Instances installieren und konfigurieren, indem Sie das Hilfsskript „cfn-init” und die AWS::CloudFormation::Init-Ressource verwenden. Wenn Sie AWS::CloudFormation::Init verwenden, können Sie die Konfigurationen, die Sie wünschen, beschreiben statt die einzelnen Verfahrensschritte. Sie können Konfigurationen auch aktualisieren, ohne Instances neu zu erstellen. Und für den Fall, dass Ihre Konfiguration Probleme macht, erstellt CloudFormation Protokolle, die Sie verwenden können, um diese Probleme zu untersuchen.

Legen Sie in Ihrer Vorlage den Installations- und Konfigurationsstatus in der Ressource AWS::CloudFormation::Init fest. Eine Schritt-für-Schritt-Anleitung für die Verwendung von „cfn-init” und AWS::CloudFormation::Init finden Sie unter Bereitstellen von Anwendungen auf Amazon EC2 mit AWS CloudFormation.

Verwenden der neuesten Hilfsskripts

Die Hilfsskripte werden regelmäßig aktualisiert. Stellen Sie sicher, dass Sie den folgenden Befehl in die UserData-Eigenschaft Ihrer Vorlage aufnehmen, bevor Sie die Hilfsskripte aufrufen, um sicherzustellen, dass Ihre gestarteten Instances die neuesten Hilfsskripte erhalten:

yum install -y aws-cfn-bootstrap

Weitere Informationen über das Abrufen der neuesten Hilfsskripte finden Sie unter Referenz für CloudFormation-Hilfsskripts.

Validieren von Vorlagen vor ihrer Verwendung

Bevor Sie eine Vorlage zum Erstellen oder Aktualisieren eines Stacks verwenden, können Sie sie CloudFormation mit validieren. Die Validierung einer Vorlage kann Ihnen helfen, Syntax und einige semantische Fehler, wie z. B. Zirkelbezüge, zu erkennen, bevor Ressourcen CloudFormation erstellt. Wenn Sie die CloudFormation Konsole verwenden, validiert die Konsole die Vorlage automatisch, nachdem Sie Eingabeparameter angegeben haben. Verwenden Sie für die AWS CLI oder CloudFormation API den aws cloudformation validate-template Befehl oder die ValidateTemplate API-Operation .

Während der Validierung prüft CloudFormation zuerst, ob die Vorlage gültiges JSON ist. Wenn dies nicht der Fall ist, wird von CloudFormation geprüft, ob die Vorlage gültiger YAML-Code ist. Wenn beide Prüfungen fehlschlagen, CloudFormation gibt einen Vorlagenvalidierungsfehler zurück.

Prüfen von Vorlagen auf die Einhaltung von Organisationsrichtlinien

Sie können Ihre Vorlage auch auf die Einhaltung der Richtlinienrichtlinien der Organisation überprüfen. AWS CloudFormation Guard (cfn-guard) ist ein Open-Source-Befehlszeilenschnittstellen-Tool (CLI), das eine policy-as-code Sprache zur Definition von Regeln bereitstellt, die sowohl erforderliche als auch verbotene Ressourcenkonfigurationen überprüfen können. Anschließend können Sie Ihre Vorlagen anhand dieser Regeln validieren. Beispielsweise können Administratoren Regeln erstellen, um sicherzustellen, dass Benutzer immer verschlüsselte Amazon S3-Buckets erstellen.

Entwickler können cfn-guard entweder lokal bei der Bearbeitung von Vorlagen oder automatisch als Teil einer CI/CD-Pipeline verwenden, um die Bereitstellung nicht konformer Ressourcen zu unterbinden.

Darüber hinaus cfn-guard enthält eine Funktion, rulegen, mit der Sie Regeln aus vorhandenen konformen CloudFormation Vorlagen extrahieren können.

Weitere Informationen finden Sie im cfn-guard-Repository auf GitHub.

Verwalten aller Stack-Ressourcen über AWS CloudFormation

Nachdem Sie einen Stack gestartet haben, verwenden Sie die CloudFormation -Konsole , API oder CLI, um Ressourcen in Ihrem Stack zu aktualisieren. AWS Nehmen Sie keine Änderungen an Stack-Ressourcen außerhalb von vor CloudFormation. Andernfalls stimmen Ihre Stack-Vorlage und der aktuelle Status Ihrer Stack-Ressourcen möglicherweise nicht mehr überein, was zu Fehlern führen kann, wenn Sie den Stack aktualisieren oder löschen. Weitere Informationen finden Sie unter Schrittweiser Walkthrough: Aktualisierung eines Stacks.

Erstellen von Änderungssätzen vor der Aktualisierung von Stacks

Mit Änderungssätzen können Sie sehen, wie sich vorgeschlagene Änderungen an einem Stack auf Ihre ausgeführten Ressourcen auswirken können, bevor Sie sie implementieren. CloudFormation nimmt keine Änderungen an Ihrem Stack vor, bis Sie den Änderungssatz ausführen, sodass Sie entscheiden können, ob Sie mit Ihren vorgeschlagenen Änderungen fortfahren oder einen anderen Änderungssatz erstellen möchten.

Verwenden Sie Änderungssätze, um zu prüfen, wie Ihre Änderungen Ihre laufenden Ressourcen – insbesondere kritische Ressourcen – beeinflussen können. Wenn Sie beispielsweise den Namen einer Amazon-RDS-Datenbank- CloudFormation Instance ändern, erstellt eine neue Datenbank und löscht die alte. Sie verlieren die Daten in der alten Datenbank, es sei denn, Sie haben sie bereits gesichert. Wenn Sie einen Änderungssatz erstellen, werden Sie sehen, dass Ihre Änderung Ihrer Datenbank ersetzt. Auf diese Weise können Sie planen, bevor Sie Ihren Stack aktualisieren. Weitere Informationen finden Sie unter Aktualisieren von Stacks mithilfe von Änderungssätzen.

Verwenden von Stack-Richtlinien

Stack-Richtlinien helfen Ihnen dabei, kritische Stack-Ressourcen vor unerwünschten Aktualisierungen zu schützen, durch die Ressourcen unterbrochen oder sogar ersetzt werden können. Eine Stack-Richtlinie ist ein JSON-Dokument, in dem dargelegt wird, welche Aktionen auf designierten Ressourcen ausgeführt werden können. Geben Sie bei der Erstellung eines Stack mit kritischen Ressourcen immer auch eine Stack-Richtlinie an.

Bei der Aktualisierung eines Stack müssen Sie die geschützten Ressourcen, die Sie aktualisieren möchten, explizit angeben. Andernfalls werden keine Änderungen an geschützten Ressourcen vorgenommen. Weitere Informationen finden Sie unter Verhindern von Aktualisierungen der Stack-Ressourcen.

Verwenden von Code-Bewertungen und Revisionskontrollen für die Verwaltung Ihrer Vorlagen

Ihre Stack-Vorlagen beschreiben die Konfiguration Ihrer AWS Ressourcen, z. B. deren Eigenschaftswerte. Um Änderungen zu prüfen und den genauen Verlauf Ihrer Ressourcen zu pflegen, verwenden Sie Prüfungen und Revisionskontrollen. Diese Methoden können Ihnen dabei helfen, Änderungen zwischen verschiedenen Versionen Ihrer Vorlagen zu verfolgen, die Ihnen wiederum dabei helfen, Änderungen an Ihren Stack-Ressourcen zu verfolgen. Außerdem können Sie durch die Pflege des Verlaufs Ihren Stack stets auf eine bestimmte Version Ihrer Vorlage zurücksetzen.

Aktualisieren Sie Ihre Amazon-EC2-Instances regelmäßig

Führen Sie auf all Ihren Amazon EC2-Windows-Instances und Amazon EC2-Linux-Instances CloudFormation, die mit erstellt wurden, regelmäßig den yum update Befehl aus, um das RPM-Paket zu aktualisieren. Auf diese Weise wird sichergestellt, dass Sie die neuesten Fixes und Sicherheits-Updates erhalten.