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.
CloudFormation bewährte Praktiken
Best Practices sind Empfehlungen, die Ihnen helfen können, CloudFormation effektiver zu nutzen und sichere Praktiken im gesamten Arbeitsablauf anzuwenden. 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.
- Planung und Organisation
-
-
Verkürzen Sie die Feedbackschleife, um die Entwicklungsgeschwindigkeit zu erhöhen.
-
Verwenden Sie CloudFormation StackSets für Einsätze mit mehreren Konten und mehreren Regionen
-
Verwenden von Vorlagen zum Replizieren von Stacks in mehreren Umgebungen
-
Verwenden von Modulen, um Ressourcenkonfigurationen wiederzuverwenden
-
- Erstellung von Vorlagen
- Verwaltung von Stacks
-
-
Erstellen von Änderungssätzen vor der Aktualisierung von Stacks
-
Verwenden Sie AWS CloudTrail, um CloudFormation-Aufrufe zu protokollieren.
-
Verwenden von Code-Bewertungen und Revisionskontrollen für die Verwaltung Ihrer Vorlagen
-
Konfigurieren Sie Rollback-Auslöser für die automatische Wiederherstellung
-
Verwenden Sie CloudFormation Hooks für die Verwaltung des Lebenszyklus
- Autorentools
- Sicherheits und Compliance
Verkürzen Sie die Feedbackschleife, um die Entwicklungsgeschwindigkeit zu erhöhen.
Verwenden Sie Methoden und Tools, die Ihnen helfen, die Feedbackschleife für Ihre von Ihnen beschriebene Infrastruktur mit CloudFormation-Vorlagen zu verkürzen. 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 Werkzeugen, die Ihnen helfen, ausfallsichere Praktiken zu erreichen, gehören die Befehlszeilentools CloudFormation Lintercfn-lint) und TaskCatcfn-lint können Sie Ihre CloudFormation-Vorlagen anhand der CloudFormation Ressourcenspezifikationvalidieren. 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ügbarcfn-lint in die Konfiguration Ihres Quellcode-Repositorys zu integrieren, so dass Sie eine Vorlagenüberprüfung durchführen können, wenn Sie Ihre Beiträge übertragen. Weitere Informationen finden Sie unter Git-Validierung vor der Übergabe von CloudFormation Vorlagen mit cfn-lintcfn-lint aufgeworfen hat, können Sie TaskCat verwenden, um Ihre Vorlagen zu testen, indem Sie programmatisch Stapel in dem von Ihnen gewählten AWS-Regionen erstellen. TaskCat generiert auch einen Bericht mit der Bewertung "bestanden/nicht bestanden" für jede von Ihnen gewählte Region.
Für eine schrittweise, praktische Anleitung zur Verwendung beider Tools zur Verkürzung der Feedbackschleife folgen Sie dem Linting- und Testlabor
Stacks nach Lebenszyklus und Besitz organisieren
Verwenden Sie die Informationen zu Lebenszyklus und Besitz Ihrer AWS-Ressourcen, um zu entscheiden, welche Ressourcen wieder in den Stack aufgenommen werden sollten. 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.
Stellen Sie sich zum Beispiel ein Team von Entwicklern und Ingenieuren vor, das eine Website besitzt, die auf Amazon EC2 Auto Scaling-Instances hinter einem Load Balancer gehostet wird. 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 Sie stapelübergreifende Referenzen, um den Wert einer Ausgabe zurückzugeben, die von einem anderen Stapel exportiert wurde
Wenn Sie Ihre AWS-Ressourcen basierend auf Lebenszyklus und Besitzeigenschaften organisieren, können Sie einen Stack mit Ressourcen aus einem anderen Stack erstellen. 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 stapelübergreifende Referenzen, um den Wert einer von einem anderen Stapel exportierten Ausgabe zurückzugeben, damit andere Stapel sie verwenden können. 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 Exportierte Ausgaben von einem bereitgestellten CloudFormation-Stack abrufen.
Verwenden Sie CloudFormation StackSets für Einsätze mit mehreren Konten und mehreren Regionen
CloudFormation StackSets erweitern die Möglichkeiten von Stapeln, indem Sie Stapel über mehrere Konten und Regionen hinweg mit einem einzigen Vorgang erstellen, aktualisieren oder löschen können. Verwenden Sie StackSets für die Bereitstellung gemeinsamer Infrastrukturkomponenten, Konformitätskontrollen oder gemeinsamer Dienste in Ihrem Unternehmen.
Wenn Sie StackSets verwenden, implementieren Sie dienstverwaltete Berechtigungen mit AWS Organizations für eine vereinfachte Berechtigungsverwaltung. Mit diesem Ansatz können Sie StackSets für Konten in Ihrem Unternehmen bereitstellen, ohne die IAM-Rollen in jedem Konto manuell konfigurieren zu müssen.
Weitere Informationen über StackSets finden Sie unter StackSets-Konzepte.
Prüfen der Kontingente für alle Ressourcentypen
Bevor Sie einen Stack starten, stellen Sie sicher, dass Sie alle Ressourcen, die Sie erstellen wünschen, erstellen können, ohne an die Grenzen Ihres AWS-Kontos zu stoßen. Wenn Sie einen Grenzwert erreichen, kann CloudFormation Ihren Stapel nicht erfolgreich erstellen, bis Sie Ihr Kontingent erhöhen oder überflüssige Ressourcen löschen. Jeder Service kann verschiedene Grenzwerte haben, die Sie vor dem Starten eines Stacks kennen sollten. So können Sie zum Beispiel standardmäßig nur 2000 CloudFormation-Stacks pro Region in Ihrem AWS-Kontostarten. 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 Abschnitte der CloudFormation-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-Registry 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, die es Ihnen ermöglicht, mit einem Ref oder Fn::GetAtt auf die Ressourcen innerhalb des Moduls zuzugreifen. Weitere Informationen finden Sie unter Erstellen Sie wiederverwendbare Ressourcenkonfigurationen, die über Vorlagen mit CloudFormation-Modulen eingebunden werden können..
Einführung von Infrastruktur als Code
Behandeln Sie Ihre CloudFormation-Vorlagen wie Code, indem Sie Infrastructure as Code (IaC) Praktiken implementieren. Speichern Sie Ihre Vorlagen in Versionskontrollsystemen, führen Sie Code-Reviews durch und verwenden Sie automatisierte Tests, um Änderungen zu validieren. Dieser Ansatz gewährleistet Konsistenz, verbessert die Zusammenarbeit und bietet einen Audit Trail für Infrastrukturänderungen.
Erwägen Sie die Implementierung von CI/CD-Pipelines für Ihren Infrastrukturcode, um das Testen und die Bereitstellung Ihrer CloudFormation-Vorlagen zu automatisieren. Tools wie,AWS CodePipeline AWS CodeBuildund AWS CodeDeploy können verwendet werden, um automatisierte Arbeitsabläufe für Ihre Infrastrukturimplementierungen zu erstellen.
Weitere Informationen zur Implementierung von IaC-Best Practices finden Sie unter Verwendung AWS CloudFormation als IaC-Tool.
Weitere Informationen zur Verwendung von Continuous Delivery mit CloudFormation finden Sie unter Continuous Delivery mit CodePipeline.
Fügen Sie keine Anmeldedaten in Ihre Vorlagen ein
Anstatt sensible Informationen in Ihre CloudFormation-Vorlagen einzubetten, empfehlen wir Ihnen die Verwendung von dynamischen Referenzen in Ihrer Stack-Vorlage.
Dynamische Referenzen bieten eine kompakte und leistungsstarke Möglichkeit, externe Werte zu referenzieren, die in anderen Services wie AWS Systems Manager Parameter Store oder AWS Secrets Manager gespeichert sind und verwaltet werden. Wenn Sie eine dynamische Referenz verwenden, ruft CloudFormation bei Bedarf den Wert der angegebenen Referenz in Stack- und Änderungssatz-Operationen ab und übergibt den Wert an die betreffende Ressource. CloudFormation speichert jedoch nie den tatsächlichen Referenzwert. Weitere Informationen finden Sie unter Verwenden von dynamischen Verweisen zum Angeben von Vorlagenwerten.
AWS Secrets Manager hilft Ihnen, die Anmeldeinformationen für Ihre Datenbanken und Services sicher zu verschlüsseln, zu speichern und wieder abzurufen. Der AWS Systems Manager Parameter Store ermöglicht eine sichere, hierarchische Speicherung für die Konfigurationsdatenverwaltung.
Für weitere Informationen zum Definieren von Vorlagenparametern siehe CloudFormation Vorlage Parameters-Syntax.
Verwenden von AWS-spezifischen Parametertypen
Wenn Ihre Vorlage Eingaben für vorhandene AWS-spezifische Werte erfordert, z. B. vorhandene IDS von Amazon Virtual Private Cloud oder einen Amazon-EC2-Schlüsselpaarnamen, verwenden Sie AWS-spezifische Parameter-Typen. Sie können beispielsweise einen Parameter vom Typ AWS::EC2::KeyPair::KeyNameangeben, der einen bestehenden Schlüsselpaar-Namen aufnimmt, der sich in Ihrem AWS-Konto und in der Region befindet, in der Sie den Stapel erstellen. CloudFormation kann Werte für-AWSspezifische Parametertypen schnell validieren, bevor Sie Ihren Stack erstellen. Wenn Sie die CloudFormation-Konsole verwenden, zeigt CloudFormation eine Dropdown-Liste gültiger Werte an, sodass Sie die richtigen VPC-IDs oder Schlüsselpaar-Namen nicht nachschlagen oder sich merken müssen. Weitere Informationen finden Sie unter Spezifizieren Sie vorhandene Ressourcen zur Laufzeit mit von CloudFormation bereitgestellten Parametertypen.
Verwenden von Parameter-Einschränkungen
Mit Einschränkungen können Sie zulässige Eingabewerte beschreiben, sodass CloudFormation ungültige Werte vor dem Erstellen eines Stack 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 CloudFormation Vorlage Parameters-Syntax.
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 CloudFormation vordefiniert werden. Sie deklarieren sie nicht in Ihrer Vorlage. Die Verwendung von Pseudoparametern in intrinsischen Funktionen erhöht die Portabilität Ihrer Stack-Vorlagen ü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:123456789012:parameter/MySampleParameter. Sie müssen das ARN-Format an Ihre Ziel AWS Partition, 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 CloudFormation verketten: !Sub
'arn:${AWS::Partition}:ssm:${AWS::Region}:${AWS::AccountId}:parameter/MySampleParameter.
Ein weiteres Beispiel: Nehmen Sie an, Sie möchten Ressourcen oder Konfigurationen für mehrere Stacks freigeben. In diesem Beispiel gehen wir davon aus, dass Sie ein Subnetz für Ihren VPC erstellt und dann dessen ID zur Verwendung mit anderen Stapeln in derselben AWS-Konto und Region exportiert haben. In einem anderen Stack referenzieren Sie den exportierten Wert der Subnetz-ID, wenn Sie eine Amazon-EC2-Instance beschreiben. Ein ausführliches Beispiel für die Verwendung des Ausgabefeldes Export und der intrinsischen Funktion Fn::ImportValue finden Sie unter Verweisen Sie auf Ressourcenausgaben in einem anderen CloudFormation Stack.
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 Stapelnamen auch pro Konto und Region eindeutig sein müssen, erhöht die Verwendung dieses Pseudoparameters als Präfix die Möglichkeit, einen eindeutigen Exportnamen zu haben und fördert gleichzeitig einen wiederverwendbaren Ansatz für alle Stapel, aus denen Sie Werte exportieren. Alternativ können Sie ein Präfix Ihrer Wahl verwenden.
Verwenden von AWS::CloudFormation::Init zur Bereitstellung von Software-Anwendungen auf Amazon-EC2-Instances
Wenn Sie Stacks starten, können Sie mit dem Hilfsskript cfn-init und der Ressource AWS::CloudFormation::Init Softwareanwendungen auf Amazon EC2-Instances installieren und konfigurieren. 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 Anleitung zur Verwendung von cfn-init und AWS::CloudFormation::Initfinden Sie unter Anwendungen auf Amazon bereitstellen EC2.
Verwenden der neuesten Hilfsskripts
Die CloudFormation-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 darüber, wie Sie die neuesten Hilfsskripte erhalten, finden Sie in der Referenz für CloudFormation-Hilfsskripte im CloudFormation Template Reference Guide.
Validieren von Vorlagen vor ihrer Verwendung
Bevor Sie eine Vorlage verwenden, um einen Stack zu erstellen oder zu aktualisieren, können Sie diese mit CloudFormation validieren. Durch die Validierung einer Vorlage finden Sie mögliche Syntax-Fehler und semantische Fehler, beispielsweise Zirkelbezüge, bevor CloudFormation Ressourcen erstellt. Wenn Sie die CloudFormation-Konsole verwenden, validiert die Konsole die Vorlage nach Eingabe der Eingabeparameter automatisch. Für die AWS CLI oder CloudFormation API verwenden Sie den validate-template CLI-Befehl oder ValidateTemplate API-Vorgang.
Bei der Validierung wird von CloudFormation geprüft, ob die Vorlage gültiger JSON-Code 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, gibt CloudFormation 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 (CLI)-Tool, das eine Policy-as-Code-Sprache bereitstellt, um Regeln zu definieren, die sowohl erforderliche als auch verbotene Ressourcenkonfigurationen prü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 enthält cfn-guard ein Feature, rulegen, mit der Sie Regeln aus vorhandenen kompatiblen CloudFormation-Vorlagen extrahieren können.
Weitere Informationen finden Sie im cfn-guard
Verwendung von YAML oder JSON für die Erstellung von Vorlagen
CloudFormation unterstützt sowohl das YAML- als auch das JSON-Format für Vorlagen. Jedes hat seine Vorteile, und die Wahl hängt von Ihren spezifischen Bedürfnissen ab:
Verwenden Sie YAML, wenn
-
Sie legen Wert auf Lesbarkeit und Wartungsfreundlichkeit
-
Sie möchten Kommentare einfügen, um Ihre Vorlage zu dokumentieren
-
Sie arbeiten an komplexen Vorlagen mit verschachtelten Strukturen
-
Sie möchten YAML-spezifische Features wie Anker und Aliase verwenden, um Wiederholungen zu vermeiden
Verwenden Sie JSON, wenn:
-
Sie müssen sich mit Tools oder Systemen integrieren, die JSON bevorzugen
-
Sie arbeiten mit programmgesteuerter Vorlagenerstellung oder-manipulation
-
Sie benötigen eine strenge Datenvalidierung
YAML wird im Allgemeinen für die manuelle Erstellung von Vorlagen empfohlen, da es gut lesbar ist und Kommentare unterstützt. Sie ist besonders nützlich für komplexe Vorlagen, bei denen die auf Einrückungen basierende Struktur die Visualisierung von Ressourcenhierarchien erleichtert. JSON kann in automatisierten Arbeitsabläufen oder bei der Arbeit mit APIs, die JSON-Eingaben erwarten, von Vorteil sein. Es ist auch von Vorteil, wenn Sie die strikte Einhaltung einer bestimmten Struktur sicherstellen müssen. Unabhängig davon, welches Format Sie wählen, sollten Sie sich auf die Erstellung gut strukturierter, dokumentierter und wartbarer Vorlagen konzentrieren. Wenn Sie YAML verwenden, nutzen Sie dessen Features wie Anker und Aliase, um Wiederholungen zu vermeiden und die Wartbarkeit zu verbessern.
Implementieren Sie eine umfassende Tagging-Strategie
Implementieren Sie eine einheitliche Tagging-Strategie für alle von Ihren CloudFormation-Vorlagen erstellten Ressourcen. Tags helfen bei der Organisation von Ressourcen, der Kostenzuweisung, der Zugriffskontrolle und der Automatisierung. Erwägen Sie die Aufnahme von Tags für Umgebung, Eigentümer, Kostenstelle, Anwendung und Zweck.
Verwenden Sie die Eigenschaft Tags der Ressource AWS::CloudFormation::Stack, um Tags auf alle unterstützten Ressourcen in einem Stapel anzuwenden. Sie können auch die Eigenschaft TagSpecifications verwenden, die bei vielen Ressourcentypen verfügbar ist, um Tags bei der Erstellung der Ressource anzuwenden.
Weitere Informationen zum Taggen finden Sie unter Ressourcentag.
Nutzen Sie Vorlagenmakros für erweiterte Transformationen
Mit CloudFormation-Makros können Sie benutzerdefinierte Verarbeitungen an Vorlagen vornehmen, von einfachen Aktionen wie Suchen und Ersetzen bis hin zu komplexen Transformationen, die zusätzliche Ressourcen erzeugen. Verwenden Sie Makros, um die Funktionen von CloudFormation-Vorlagen zu erweitern und wiederverwendbare Muster in Ihrem Unternehmen zu implementieren.
Das AWS Serverless Application Model ist ein Beispiel für ein Makro, das die Entwicklung von Serverless-Anwendungen vereinfacht. Erwägen Sie die Erstellung benutzerdefinierter Makros für unternehmensspezifische Muster und Anforderungen.
Weitere Informationen zur Verwendung von Makros in Ihren Vorlagen finden Sie unter Überblick über CloudFormation-Makros.
Verwalten Sie alle Stack-Ressourcen über CloudFormation
Nachdem Sie einen Stack gestartet haben, verwenden Sie die CloudFormation Konsole
Weitere Informationen zur Drift finden Sie unter Was ist Abweichung?.
Weitere Informationen zum Aktualisieren von Stapeln finden Sie unter Einen CloudFormation Stack aktualisieren.
Erstellen von Änderungssätzen vor der Aktualisierung von Stacks
Anhand von Änderungssätzen können Sie vor der Implementierung von Änderungen sehen, wie sich die vorgeschlagene Änderungen an einem Stack möglicherweise auf Ihre laufenden Ressourcen auswirken. CloudFormation nimmt keine Änderungen an Ihrem Stack vor, bevor Sie den Änderungssatz ausführen. Auf diese Weise können Sie entscheiden, 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 Instance ändern, erstellt CloudFormation eine neue Datenbank und löscht die alte. Sie verlieren die Daten in der alten Datenbank, es sei denn, Sie haben sie bereits gespeichert. 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 CloudFormation Stapel mithilfe von Änderungssätzen aktualisieren.
Verwenden Sie Stapelrichtlinien zum Schutz von Ressourcen
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 Sie AWS CloudTrail, um CloudFormation-Aufrufe zu protokollieren.
AWS CloudTrail verfolgt jeden, der CloudFormation API-Aufrufe in Ihrem AWS-Kontomacht. API-Aufrufe werden immer dann protokolliert, wenn jemand die CloudFormation-API, die CloudFormation-Konsole, eine Back-End-Konsole oder CloudFormation AWS CLI-Befehle verwendet. Aktivieren Sie die Protokollierung und legen Sie einen Amazon-S3-Bucket zum Speichern der Protokolle fest. Auf diese Weise können Sie bei Bedarf überprüfen, wer welchen CloudFormation-Aufruf in Ihrem Konto vorgenommen hat.
Weitere Informationen finden Sie unter Protokollierung von CloudFormation-API-Aufrufen mit AWS CloudTrail.
Verwenden von Code-Bewertungen und Revisionskontrollen für die Verwaltung Ihrer Vorlagen
Ihre Stack-Vorlagen beschreiben die Konfiguration Ihrer AWS-Ressourcen, z. B. die 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 Ihren Amazon-EC2-Windows-Instances und Amazon-EC2-Linux-Instances, die in CloudFormation erstellt wurden, regelmäßig den Befehl yum update aus, um das RPM-Paket zu aktualisieren. Auf diese Weise wird sichergestellt, dass Sie die neuesten Fixes und Sicherheits-Updates erhalten.
Verwenden Sie die Drifterkennung regelmäßig
Verwenden Sie regelmäßig das Feature CloudFormation Drift Detection, um Ressourcen zu identifizieren, die außerhalb der CloudFormation-Verwaltung geändert wurden. Das Aufspüren und Beheben von Drifts trägt dazu bei, die Integrität Ihres Infrastructure as Code-Ansatzes aufrechtzuerhalten und stellt sicher, dass Ihre Vorlagen den Zustand Ihrer bereitgestellten Ressourcen genau wiedergeben.
Erwägen Sie die Einführung einer automatischen Drift-Erkennung als Teil Ihrer Betriebsabläufe. Sie können AWS Lambda-Funktionen verwenden, die durch Amazon EventBridge-Regeln ausgelöst werden, um regelmäßig auf Drift zu prüfen und Ihr Team zu benachrichtigen, wenn Diskrepanzen entdeckt werden.
Weitere Informationen zu Drift finden Sie unter Erkennen von nicht verwalteten Konfigurationsänderungen an Stacks und Ressourcen mit der Drifterkennung.
Konfigurieren Sie Rollback-Auslöser für die automatische Wiederherstellung
Verwenden Sie Rollback-Trigger, um Amazon CloudWatch-Alarme anzugeben, die CloudFormation während der Stack-Erstellung und Aktualisierungsvorgänge überwachen soll. Wenn einer der angegebenen Alarme in den ALARM-Status übergeht, rollt CloudFormation automatisch den gesamten Stack-Betrieb zurück und sorgt so dafür, dass Ihre Infrastruktur in einem stabilen Zustand bleibt.
Konfigurieren Sie Rollback-Auslöser für kritische Metriken wie Anwendungsfehlerraten, Systemressourcenauslastung oder benutzerdefinierte Geschäftsmetriken, die den Zustand Ihrer Anwendung und Infrastruktur anzeigen.
Weitere Informationen über Rollback-Auslöser finden Sie unter Rollback Ihres Stacks bei Alarmverletzung.
Implementieren Sie effektive Stack-Refactoring-Strategien
Wenn sich Ihre Infrastruktur weiterentwickelt, müssen Sie Ihre CloudFormation-Stacks möglicherweise umstrukturieren, um die Wartbarkeit zu verbessern, die Komplexität zu reduzieren oder sich an veränderte Anforderungen anzupassen. Das Stack-Refactoring umfasst die Umstrukturierung Ihrer Vorlagen und Ressourcen unter Beibehaltung ihres externen Verhaltens und ihrer Funktionalität. Stack Refactoring ist in Verbindung mit CloudFormation auf folgende Weise von Vorteil:
-
Aufspaltung monolithischer Stapel: Aufteilung großer, komplexer Stapel in kleinere, besser verwaltbare Stapel, die nach Lebenszyklus oder Eigentümerschaft organisiert sind
-
Konsolidierung verwandter Ressourcen: Zusammengehörige Ressourcen aus mehreren Stapeln in einem einzigen, zusammenhängenden Stapel zusammenfassen, um die Verwaltung zu vereinfachen
-
Extrahieren wiederverwendbarer Komponenten: Verschieben gemeinsamer Muster in Module oder verschachtelte Stapel, um Wiederverwendung und Konsistenz zu fördern
-
Verbesserung der Ressourcenorganisation: Umstrukturierung von Ressourcen innerhalb eines Stapels, um ihre Beziehungen und Abhängigkeiten besser widerzuspiegeln
Weitere Informationen zum Refactoring Ihrer CloudFormation Stacks finden Sie unter Stapel-Refactoring.
Verwenden Sie CloudFormation Hooks für die Verwaltung des Lebenszyklus
CloudFormation Hooks bieten Code, der die Konfiguration Ihrer AWS-Ressourcen vor der Bereitstellung proaktiv überprüft und komplexe Validierungsprüfungen durchführt. Hooks überprüfen, ob Ihre Ressourcen, Stacks und Änderungssätze mit den Anforderungen Ihres Unternehmens an Sicherheit, Betrieb und Kostenoptimierung übereinstimmen. Sie geben Warnungen aus, bevor eine Ressource bereitgestellt wird, oder schlagen den Vorgang fehl und stoppen ihn ganz, je nachdem, wie er konfiguriert wurde. Verstöße und Warnungen werden in Amazon CloudWatch protokolliert, um Einblick in nicht konforme Bereitstellungen zu erhalten.
Weitere Informationen zu diesen bewährten Verfahren für Hooks finden Sie unter, AWS CloudFormation Hooks-Konzepte.
Weitere Informationen darüber, was Hooks für Ihre CloudFormation-Ressourcen tun können, finden Sie unter Was sind AWS CloudFormation Hooks?
Verwenden Sie den IaC-Generator, um Vorlagen aus vorhandenen Ressourcen zu erstellen.
Der CloudFormation IaC-Generator (Infrastruktur als Code) hilft Ihnen, CloudFormation-Vorlagen aus Ihren vorhandenen AWS-Ressourcen zu erstellen. Diese Funktion ist besonders nützlich, wenn Sie bestehende Infrastrukturen replizieren, manuell erstellte Ressourcen dokumentieren oder bisher nicht verwaltete Ressourcen in die CloudFormation-Verwaltung übernehmen möchten. Der IaC-Generator ist für die Erstellung Ihrer CloudFormation-Vorlagen auf folgende Weise nützlich:
-
Beschleunigte Vorlagenerstellung: Generieren Sie Vorlagen aus vorhandenen Ressourcen, anstatt sie von Grund auf neu zu schreiben
-
Konsistente Infrastruktur: Stellen Sie sicher, dass neue Umgebungen mit bestehenden Umgebungen übereinstimmen, indem Sie generierte Vorlagen als Ausgangspunkt verwenden
-
Migration zu Infrastruktur als Code: Manuell erstellte Ressourcen schrittweise unter CloudFormation-Verwaltung bringen
-
Documentation: Erstellen Sie eine Aufzeichnung Ihrer bestehenden Infrastruktur in Form einer Vorlage
Weitere Informationen über den IaC-Generator finden Sie unter Vorlagen aus vorhandenen Ressourcen mit dem IaC-Generator generieren.
Verwenden Sie AWS Infrastructure Composer für die visuelle Gestaltung von Vorlagen
AWS Infrastructure Composer ist ein visuelles Design-Tool, mit dem Sie CloudFormation-Vorlagen über eine Drag-and-Drop-Oberfläche erstellen, visualisieren und ändern können. Es kann besonders vorteilhaft sein, wenn Sie CloudFormation auf folgende Weise verwenden:
-
Architekturplanung: Entwurf und Validierung von Infrastruktur-Architekturen vor der Implementierung
-
Modernisierung von Vorlagen: Visualisieren Sie vorhandene Vorlagen, um ihre Struktur zu verstehen und Verbesserungsmöglichkeiten zu erkennen
-
Schulung und Onboarding: Helfen Sie neuen Teammitgliedern, CloudFormation-Konzepte und AWS Service-Beziehungen durch visuelles Lernen zu verstehen.
-
Kommunikation mit den Interessengruppen: Präsentieren Sie Infrastrukturentwürfe für nicht-technische Interessengruppen mit Hilfe klarer visueller Darstellungen
-
Compliance-Überprüfungen: Verwenden Sie visuelle Diagramme, um Sicherheits- und Compliance-Prüfungen Ihrer Infrastrukturentwürfe zu erleichtern.
-
Compliance-Überprüfungen: Verwenden Sie visuelle Diagramme, um Sicherheits- und Compliance-Prüfungen Ihrer Infrastrukturentwürfe zu erleichtern.
Weitere Informationen über Infrastructure Composer finden Sie unter Was ist AWS Infrastructure Composer?.
Erwägen Sie die Verwendung von AWS Cloud Development Kit (AWS CDK) für komplexe Infrastrukturen
Für komplexe Infrastrukturanforderungen sollten Sie das CDK verwenden, um Ihre Cloud-Ressourcen mit vertrauten Programmiersprachen wie TypeScript, Python, Java und .NET zu definieren. AWS CDK generiert CloudFormation-Vorlagen aus Ihrem Code, so dass Sie die vollen Möglichkeiten von CloudFormation nutzen können, während Sie die Abstraktionen und Programmierkonstrukte Ihrer bevorzugten Sprache verwenden.
Die AWS CDK bietet High-Level-Konstrukte, die bewährte Verfahren kapseln und die Definition gemeinsamer Infrastrukturmuster vereinfachen. Dies kann die Menge an Code, die für die Definition Ihrer Infrastruktur benötigt wird, erheblich reduzieren und gleichzeitig die Einhaltung von Best Practices sicherstellen.
Weitere Informationen über die CDK finden Sie unter AWS Cloud Development Kit (AWS CDK).
Verwendung von IAM für die Zugriffskontrolle
IAM ist ein AWS-Service, mit dem Sie Benutzer und deren Berechtigungen in AWS verwalten können. Sie können IAM mit CloudFormation verwenden, um festzulegen, welche CloudFormation-Aktionen Benutzer durchführen können, wie beispielsweise das Anzeigen von Stapelvorlagen, das Erstellen von Stapeln oder das Löschen von Stapeln. Außerdem benötigt jeder, der CloudFormation-Stacks verwaltet, Berechtigungen für die Ressourcen innerhalb dieser Stacks. Wenn Benutzer CloudFormation beispielsweise zum Starten, Aktualisieren oder Beenden von Amazon EC2-Instances verwenden möchten, müssen sie über die Berechtigung zum Aufrufen der entsprechenden Amazon EC2-Aktionen verfügen.
In den meisten Fällen benötigen Benutzer vollen Zugriff, um alle Ressourcen in einer Vorlage zu verwalten. CloudFormation ruft diese Ressourcen in ihrem Namen auf, um sie zu erstellen, zu ändern und zu löschen. Um die Berechtigungen zwischen einem Benutzer und dem CloudFormation-Dienst zu trennen, verwenden Sie eine Dienstrolle. CloudFormation verwendet die Richtlinie der Service-Rolle, um Anrufe zu tätigen, und nicht die Richtlinie des Benutzers. Weitere Informationen finden Sie unter CloudFormation-Servicerolle.
Wenden Sie das Prinzip des geringsten Privilegs an
Wenden Sie bei der Konfiguration von IAM-Rollen für CloudFormation-Service-Rollen oder für Ressourcen, die von Ihren Vorlagen erstellt wurden, immer das Prinzip der geringsten Berechtigung an. Gewähren Sie nur die Berechtigungen, die für die vorgesehene Funktionalität erforderlich sind, und vermeiden Sie nach Möglichkeit die Verwendung von Platzhalterberechtigungen.
Verwenden Sie den IAM Access Analyzer, um die Ihren CloudFormation-Service-Rollen gewährten Berechtigungen zu überprüfen und ungenutzte Berechtigungen zu identifizieren, die entfernt werden können. Überprüfen und aktualisieren Sie die IAM-Richtlinien regelmäßig, um sicherzustellen, dass sie weiterhin mit Ihren Sicherheitsanforderungen übereinstimmen.
Sichern Sie sensible Parameter
Verwenden Sie für vertrauliche Informationen wie Passwörter, API-Schlüssel und andere Geheimnisse AWS Systems Manager Parameter Store oder AWS Secrets Manager, anstatt sie direkt in Ihre Vorlagen einzubetten. Verwenden Sie dynamische Referenzen in Ihren Vorlagen, um diese Werte bei Stapeloperationen sicher abzurufen.
Wenn Sie Parameter in Ihren Vorlagen verwenden, setzen Sie die Eigenschaft NoEcho für sensible Parameter auf true, um zu verhindern, dass ihre Werte in der Konsole, in API-Antworten oder in der CLI-Ausgabe angezeigt werden. Beachten Sie, dass NoEcho nicht verhindert, dass der Wert protokolliert wird, wenn er an andere Dienste oder Ressourcen übergeben wird, die den Wert möglicherweise protokollieren.
Weitere Informationen zur Verwendung von AWS Systems Manager Parameter Store mit CloudFormation finden Sie unter Abrufen eines Klartextwerts aus AWS Systems Manager Parameter Store.
Weitere Informationen zur Verwendung der Eigenschaft NoEcho finden Sie unter CloudFormation Vorlage Parameter Syntax.
Weitere Informationen zur Verwendung von AWS Secrets Manager mit CloudFormation finden Sie unter Erstellen AWS Secrets Manager von Geheimnissen in AWS CloudFormation.
Richtlinie als Code mit AWS CloudFormation Guardimplementieren
AWS CloudFormation Guard (cfn-guard) ist ein Open-Source Policy-as-Code-Tool, mit dem Sie Regeln für Ihre CloudFormation-Vorlagen definieren und durchsetzen können. Verwenden Sie cfn-guard, um sicherzustellen, dass Ihre Vorlagen den Unternehmensrichtlinien, bewährten Sicherheitsverfahren und Governance-Anforderungen entsprechen.
Integrieren Sie cfn-guard in Ihre CI/CD-Pipelines, um Vorlagen vor der Bereitstellung automatisch anhand Ihrer Richtlinien zu validieren. Auf diese Weise können Sie verhindern, dass nicht konforme Ressourcen in Ihrer Umgebung bereitgestellt werden, und den Entwicklern frühzeitig eine Rückmeldung über Richtlinienverstöße geben.
Für weitere Informationen über Guard siehe Was ist AWS CloudFormation Guard?