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 Verfahren
Bewährte Verfahren sind Empfehlungen, die Ihnen helfen können, den gesamten Arbeitsablauf CloudFormation effektiver zu nutzen und sichere Verfahren einzuführen. 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 realen Erfahrungen aktueller CloudFormation Kunden.
- Planung und Organisation
- Erstellung von Vorlagen
- Verwaltung von Stacks
-
-
Erstellen von Änderungssätzen vor der Aktualisierung von Stacks
-
Wird AWS CloudTrail zum Protokollieren von CloudFormation Anrufen verwendet
-
Verwenden von Code-Bewertungen und Revisionskontrollen für die Verwaltung Ihrer Vorlagen
-
Konfigurieren Sie Rollback-Trigger für die automatische Wiederherstellung
-
Implementieren Sie effektive Strategien zum Stack-Refactoring
-
Verwenden Sie CloudFormation Hooks für das Lebenszyklusmanagement
- Tools für die Erstellung
- Sicherheits und Compliance
Verkürzen Sie die Feedback-Schleife, um die Entwicklungsgeschwindigkeit zu verbessern
Verwenden Sie Methoden und Tools, mit denen Sie die Feedback-Schleife für Ihre Infrastruktur, die Sie mit CloudFormation Vorlagen beschreiben, 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, mit denen Sie schnelle Abläufe umsetzen können, gehören AWS CloudFormation Lintercfn-lint) und TaskCatcfn-lint Tool bietet Ihnen die Möglichkeit, Ihre CloudFormation Vorlagen anhand der Ressourcenspezifikation zu validieren.AWS CloudFormation Dazu gehört das Überprüfen gültiger Werte für Ressourceneigenschaften, sowie bewährte Methoden. Plug-ins für cfn-lint sind für eine Reihe von Code-Editoren verfügbarcfn-lint in die Konfiguration Ihres Quellcode-Repositorys zu integrieren, sodass Sie beim Commit Ihrer Beiträge die Vorlage validieren können. Weitere Informationen finden Sie unter Git Pre-Commit-Validierung von AWS CloudFormation Vorlagen mit cfn-lintcfn-lint eventuell aufgetretenen Probleme behoben hast, kannst du deine Vorlagen testen, indem du programmatisch Stapel in TaskCat den von dir ausgewählten Dateien erstellst. AWS-Regionen TaskCat generiert außerdem einen Bericht mit Noten für jede Region, die Sie ausgewählt haben. pass/fail
Eine praktische Anleitung step-by-step, wie Sie beide Tools verwenden können, um die Feedback-Schleife zu verkürzen, finden Sie im Linting and Testing Lab des Workshops
Stacks nach Lebenszyklus und Besitz organisieren
Verwenden Sie den Lebenszyklus und die Eigentümerschaft Ihrer AWS Ressourcen, um zu entscheiden, welche Ressourcen in den einzelnen Stapel 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.
Stellen Sie sich zum Beispiel ein Team von Entwicklern und Technikern vor, das eine Website besitzt, die auf Amazon EC2 Auto Scaling 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 Stack exportiert wurde
Wenn Sie Ihre AWS Ressourcen nach Lebenszyklus und Besitz organisieren, möchten Sie vielleicht einen Stapel erstellen, der Ressourcen verwendet, die sich in einem anderen Stapel befinden. Sie können Werte fest codieren oder Eingabeparameter verwenden, um Ressourcennamen und IDs zu übergeben. 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 Ausgabe zurückzugeben, die von einem anderen Stapel exportiert wurde, sodass 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 Holen Sie sich exportierte Ausgaben aus einem bereitgestellten CloudFormation Stack.
Wird AWS CloudFormation StackSets für Bereitstellungen mit mehreren Konten und mehreren Regionen verwendet
AWS CloudFormation StackSets erweitern Sie die Funktionalität von Stacks, indem Sie es Ihnen ermöglichen, Stacks für mehrere Konten und Regionen mit einem einzigen Vorgang zu erstellen, zu aktualisieren oder zu löschen. Verwenden Sie es StackSets für die Bereitstellung allgemeiner Infrastrukturkomponenten, Compliance-Kontrollen oder gemeinsam genutzter Dienste in Ihrem Unternehmen.
Implementieren Sie bei der Verwendung StackSets serviceverwaltete Berechtigungen AWS Organizations für eine vereinfachte Berechtigungsverwaltung. Dieser Ansatz ermöglicht die Bereitstellung StackSets für Konten innerhalb Ihrer Organisation, ohne dass Sie die IAM-Rollen in jedem Konto manuell konfigurieren müssen.
Weitere Informationen finden StackSets Sie unter StackSets Konzepte.
Prüfen der Kontingente für alle Ressourcentypen
Stellen Sie vor dem Start eines Stacks sicher, dass Sie alle gewünschten Ressourcen erstellen können, ohne Ihre AWS Kontolimits zu überschreiten. Wenn Sie ein Limit erreichen, CloudFormation wird Ihr Stack erst erfolgreich erstellt, 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. Beispielsweise können Sie standardmäßig nur 2000 CloudFormation Stacks pro Region in Ihrer AWS-Konto starten. 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 CloudFormation Vorlagenabschnitte.
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 verwendet werden, wie z. B. Best Practices für die Definition 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 anderen Modulen verschachtelt werden, sodass Sie Ihre Best Practices zu übergeordneten Bausteinen zusammenfassen 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 zur verbrauchenden Vorlage erweitert, sodass Sie mit einem Ref oder Fn:: auf die Ressourcen innerhalb des Moduls zugreifen könnenGetAtt. Weitere Informationen finden Sie unter Erstellen Sie wiederverwendbare Ressourcenkonfigurationen, die in allen Vorlagen mit CloudFormation Modulen enthalten sein können.
Implementieren Sie Infrastruktur als Code-Praktiken
Behandeln Sie Ihre CloudFormation Vorlagen wie Code, indem Sie Infrastructure-as-Code-Praktiken (IaC) implementieren. Speichern Sie Ihre Vorlagen in Versionskontrollsystemen, implementieren Sie Code-Reviews und verwenden Sie automatisierte Tests, um Änderungen zu validieren. Dieser Ansatz gewährleistet Konsistenz, verbessert die Zusammenarbeit und bietet einen Prüfpfad für Infrastrukturänderungen.
Erwägen Sie die Implementierung von CI/CD Pipelines für Ihren Infrastrukturcode, um das Testen und Bereitstellen Ihrer CloudFormation Vorlagen zu automatisieren. Tools wie AWS CodePipeline AWS CodeBuild, und AWS CodeDeploy können verwendet werden, um automatisierte Workflows für Ihre Infrastrukturbereitstellungen zu erstellen.
Weitere Informationen zur Implementierung von Best Practices für IaC finden Sie unter AWS CloudFormation Als IaC-Tool verwenden.
Weitere Informationen zur Verwendung von Continuous Delivery mit CloudFormation finden Sie unter Continuous Delivery with. CodePipeline
Betten Sie keine Anmeldeinformationen in Ihre Vorlagen ein
Anstatt vertrauliche Informationen in Ihre CloudFormation Vorlagen einzubetten, empfehlen wir Ihnen, dynamische Verweise in Ihrer Stack-Vorlage zu verwenden.
Dynamische Verweise bieten eine kompakte und leistungsstarke Möglichkeit, externe Werte zu referenzieren, die in anderen Diensten wie dem AWS Systems Manager Parameter Store oder AWS Secrets Manager gespeichert und verwaltet werden. Wenn Sie eine dynamische Referenz verwenden, CloudFormation ruft sie den Wert der angegebenen Referenz ab, falls dies bei Stack- und Änderungsset-Vorgängen erforderlich ist, und übergibt den Wert an die entsprechende Ressource. Speichert jedoch CloudFormation niemals den tatsächlichen Referenzwert. Weitere Informationen finden Sie unter Verwenden von dynamischen Verweisen zum Angeben von Vorlagenwerten.
AWS Secrets Manager hilft Ihnen dabei, Anmeldeinformationen für Ihre Datenbanken und andere Dienste sicher zu verschlüsseln, zu speichern und 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 ParametersVorlagensyntax.
Verwenden Sie AWS-spezifische Parametertypen
Wenn Ihre Vorlage Eingaben für bestehende AWS-spezifische Werte erfordert, wie z. B. eine bestehende Amazon Virtual Private Cloud IDs oder einen EC2 Amazon-Schlüsselpaarnamen, verwenden Sie AWS-spezifische Parametertypen. Sie können beispielsweise einen Parameter als Typ angebenAWS::EC2::KeyPair::KeyName, der einen vorhandenen Schlüsselpaarnamen verwendet, der sich in Ihrer AWS-Konto und in der Region befindet, in der Sie den Stack erstellen. CloudFormation kann schnell Werte für AWS-spezifische Parametertypen validieren, bevor Sie Ihren Stack erstellen. Wenn Sie die CloudFormation Konsole verwenden, wird außerdem eine Dropdownliste mit gültigen Werten CloudFormation angezeigt, sodass Sie nicht die richtigen VPC- oder Schlüsselpaarnamen nachschlagen IDs oder sich diese merken müssen. Weitere Informationen finden Sie unter Geben Sie vorhandene Ressourcen zur Laufzeit mit von CloudFormation -bereitgestellten Parametertypen an.
Verwenden von Parameter-Einschränkungen
Mithilfe von Einschränkungen können Sie zulässige Eingabewerte so beschreiben, dass alle ungültigen Werte CloudFormation erfasst werden, bevor ein Stack erstellt wird. 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 ParametersVorlagensyntax.
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. Pseudo-Parameter sind Parameter, die von vordefiniert sind. CloudFormation Sie deklarieren sie nicht in Ihrer Vorlage. Die Verwendung von Pseudo-Parametern in systemeigenen 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 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 Ihnen das folgende Beispiel, wie Sie Elemente in einem ARN verketten mit:. CloudFormation !Sub
'arn:${AWS::Partition}:ssm:${AWS::Region}:${AWS::AccountId}:parameter/MySampleParameter
Nehmen wir als weiteres Beispiel an, Sie möchten Ressourcen oder Konfigurationen für mehrere Stacks gemeinsam nutzen. Gehen Sie in diesem Beispiel davon aus, dass Sie ein Subnetz für Ihre VPC erstellt und dann dessen ID zur Verwendung mit anderen Stacks in derselben AWS-Konto Region exportiert haben. In einem anderen Stack verweisen Sie bei der Beschreibung einer EC2 Amazon-Instance auf den exportierten Wert der Subnetz-ID. 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 Stacknamen auch pro Konto und Region eindeutig sein müssen, erhöht die Verwendung dieses Pseudo-Parameters als Präfix die Möglichkeit, einen eindeutigen Exportnamen zu haben, und fördert gleichzeitig einen wiederverwendbaren Ansatz für alle Stacks, aus denen Sie Werte exportieren. Alternativ können Sie ein Präfix Ihrer Wahl verwenden.
Wird AWS::CloudFormation::Init zur Bereitstellung von Softwareanwendungen auf EC2 Amazon-Instances verwendet
Wenn Sie Stacks starten, können Sie Softwareanwendungen auf EC2 Amazon-Instances mithilfe des cfn-init Hilfsskripts und der AWS::CloudFormation::Init Ressource 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 falls bei Ihrer Konfiguration etwas schief geht, CloudFormation generiert es Protokolle, anhand derer Sie Probleme untersuchen können.
Legen Sie in Ihrer Vorlage den Installations- und Konfigurationsstatus in der Ressource AWS::CloudFormation::Init fest. Eine exemplarische Vorgehensweise zur Verwendung von cfn-init und finden Sie AWS::CloudFormation::Init unterStellen Sie Anwendungen auf Amazon bereit 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 zum Herunterladen der neuesten Hilfsskripte finden Sie in der Referenz zu CloudFormation Hilfsskripten im AWS CloudFormation Vorlagenreferenzhandbuch.
Validieren von Vorlagen vor ihrer Verwendung
Bevor Sie eine Vorlage verwenden, um einen Stack zu erstellen oder zu aktualisieren, können Sie ihn CloudFormation zur Validierung verwenden. Die Validierung einer Vorlage kann Ihnen helfen, Syntax- und einige semantische Fehler wie zirkuläre Abhängigkeiten zu erkennen, bevor Ressourcen CloudFormation erstellt werden. Wenn Sie die CloudFormation Konsole verwenden, validiert die Konsole die Vorlage automatisch, nachdem Sie die Eingabeparameter angegeben haben. Verwenden Sie für die AWS CLI CloudFormation API den validate-templateCLI-Befehl oder die ValidateTemplateAPI-Operation.
Prüft bei der Validierung CloudFormation zunächst, ob es sich bei der Vorlage um ein gültiges JSON handelt. Wenn dies nicht der Fall ist, wird von CloudFormation geprüft, ob die Vorlage gültiger YAML-Code ist. Wenn beide Prüfungen fehlschlagen, wird ein Fehler bei der Vorlagenvalidierung CloudFormation zurückgegeben.
Prüfen von Vorlagen auf die Einhaltung von Organisationsrichtlinien
Sie können auch überprüfen, ob Ihre Vorlage den Richtlinien der Organisation entspricht. AWS CloudFormation Guard (cfn-guard) ist ein Open-Source-Tool für die Befehlszeilenschnittstelle (CLI), das eine policy-as-code Sprache zur Definition von Regeln bereitstellt, mit denen sowohl nach erforderlichen als auch nach verbotenen Ressourcenkonfigurationen gesucht werden kann. 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.
Sie können es cfn-guard entweder lokal bei der Bearbeitung von Vorlagen oder automatisch als Teil einer CI/CD Pipeline verwenden, um die Bereitstellung nicht richtlinienkonformer Ressourcen zu unterbinden.
cfn-guardEnthält außerdem eine Funktionrulegen, mit der Sie Regeln aus vorhandenen kompatiblen CloudFormation Vorlagen extrahieren können.
Weitere Informationen finden Sie im CFN-Guard-Repository
Verwenden 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 menschliche Lesbarkeit und Wartbarkeit
-
Sie möchten Kommentare hinzufügen, um Ihre Vorlage zu dokumentieren
-
Sie arbeiten an komplexen Vorlagen mit verschachtelten Strukturen
-
Sie möchten YAML-spezifische Funktionen wie Anker und Aliase verwenden, um Wiederholungen zu reduzieren
Verwenden Sie JSON, wenn:
-
Sie müssen Tools oder Systeme integrieren, die JSON bevorzugen
-
Sie arbeiten mit der programmatischen Generierung oder Bearbeitung von Vorlagen
-
Sie benötigen eine strenge Datenvalidierung
YAML wird aufgrund seiner Lesbarkeit und Kommentarunterstützung generell für die manuelle Erstellung von Vorlagen empfohlen. Es ist besonders nützlich für komplexe Vorlagen, bei denen die auf Einrückungen basierende Struktur zur Visualisierung von Ressourcenhierarchien beiträgt. JSON kann in automatisierten Workflows oder bei der Arbeit mit APIs diesen erwarteten JSON-Eingaben von Vorteil sein. Es ist auch von Vorteil, wenn Sie die strikte Einhaltung einer bestimmten Struktur sicherstellen müssen. Unabhängig vom gewählten Format sollten Sie sich darauf konzentrieren, gut strukturierte, dokumentierte und wartbare Vorlagen zu erstellen. Wenn Sie YAML verwenden, nutzen Sie dessen Funktionen wie Anker und Aliase, um Wiederholungen zu reduzieren und die Wartbarkeit zu verbessern.
Implementieren Sie eine umfassende Tagging-Strategie
Implementieren Sie eine konsistente Tagging-Strategie für alle Ressourcen, die mit Ihren CloudFormation Vorlagen erstellt wurden. Tags helfen bei der Ressourcenorganisation, Kostenzuweisung, Zugriffskontrolle und Automatisierung. Erwägen Sie, Tags für Umgebung, Eigentümer, Kostenstelle, Anwendung und Zweck hinzuzufügen.
Verwenden Sie die Tags Eigenschaft der AWS::CloudFormation::Stack Ressource, um Tags auf alle unterstützten Ressourcen in einem Stapel anzuwenden. Sie können die TagSpecifications Eigenschaft, die für viele Ressourcentypen verfügbar ist, auch verwenden, um Tags während der Ressourcenerstellung anzuwenden.
Weitere Informationen zum Taggen finden Sie unter Ressourcen-Tag.
Nutzen Sie Vorlagenmakros für erweiterte Transformationen
CloudFormation Makros ermöglichen Ihnen die benutzerdefinierte Verarbeitung von Vorlagen, von einfachen Aktionen wie find-and-replace Operationen bis hin zu komplexen Transformationen, die zusätzliche Ressourcen generieren. Verwenden Sie Makros, um die Funktionen von CloudFormation Vorlagen zu erweitern und wiederverwendbare Muster in Ihrer gesamten Organisation zu implementieren.
Dies AWS Serverless Application Model ist ein Beispiel für ein Makro, das die Entwicklung serverloser Anwendungen vereinfacht. Erwägen Sie die Erstellung benutzerdefinierter Makros für unternehmensspezifische Muster und Anforderungen.
Verwalten Sie alle Stack-Ressourcen über CloudFormation
Nachdem Sie einen Stack gestartet haben, verwenden Sie die CloudFormation Konsole
Weitere Informationen zu Drift finden Sie unter. Was ist Abweichung?
Weitere Informationen zum Aktualisieren von Stacks finden Sie unterAktualisieren eines Stacks.
Erstellen von Änderungssätzen vor der Aktualisierung von Stacks
Mithilfe von Änderungssätzen können Sie vor der Implementierung sehen, wie sich vorgeschlagene Änderungen an einem Stack auf Ihre laufenden Ressourcen auswirken könnten. CloudFormation nimmt keine Änderungen an Ihrem Stack vor, bis Sie den Änderungssatz ausgeführt haben, sodass Sie entscheiden können, ob Sie mit Ihren vorgeschlagenen Änderungen fortfahren oder einen weiteren Ä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, CloudFormation wird eine neue Datenbank erstellt und die alte gelöscht. Sie verlieren die Daten in der alten Datenbank, sofern Sie sie nicht bereits gesichert haben. 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 Stack-Richtlinien, um Ressourcen zu schützen
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.
Wird AWS CloudTrail zum Protokollieren von CloudFormation Anrufen verwendet
AWS CloudTrail verfolgt jeden, der CloudFormation API-Aufrufe in Ihrem macht AWS-Konto. API-Aufrufe werden 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 Anruf in Ihrem Konto getätigt hat.
Weitere Informationen finden Sie unter AWS CloudFormation API-Aufrufe protokollieren 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. 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 EC2 Amazon-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 zum Aktualisieren des RPM-Pakets aus. Auf diese Weise wird sichergestellt, dass Sie die neuesten Fixes und Sicherheits-Updates erhalten.
Verwenden Sie regelmäßig die Drift-Erkennung
Verwenden Sie regelmäßig die CloudFormation Drift-Erkennungsfunktion, um Ressourcen zu identifizieren, die außerhalb der CloudFormation Verwaltung geändert wurden. Das Erkennen und Beheben von Abweichungen trägt dazu bei, die Integrität Ihrer Infrastruktur als Code-Ansatz zu wahren und stellt sicher, dass Ihre Vorlagen den Status Ihrer bereitgestellten Ressourcen genau wiedergeben.
Erwägen Sie die Implementierung einer automatisierten Drift-Erkennung als Teil Ihrer betrieblichen Abläufe. Sie können AWS Lambda Funktionen verwenden, die durch die EventBridge Amazon-Regeln ausgelöst werden, um regelmäßig nach Abweichungen zu suchen und Ihr Team zu benachrichtigen, wenn Unstimmigkeiten festgestellt werden.
Weitere Informationen zu Abweichungen finden Sie unter Erkennen nicht verwalteter Konfigurationsänderungen an Stacks und Ressourcen mit Drift-Erkennung.
Konfigurieren Sie Rollback-Trigger für die automatische Wiederherstellung
Verwenden Sie Rollback-Trigger, um CloudWatch Amazon-Alarme festzulegen, die während der Stack-Erstellung und Aktualisierung überwacht werden CloudFormation sollen. Wenn einer der angegebenen Alarme in den ALARM Status wechselt, CloudFormation wird der gesamte Stack-Vorgang automatisch zurückgesetzt, wodurch sichergestellt wird, dass Ihre Infrastruktur in einem stabilen Zustand bleibt.
Konfigurieren Sie Rollback-Trigger für kritische Kennzahlen wie Anwendungsfehlerraten, Systemressourcenauslastung oder benutzerdefinierte Geschäftskennzahlen, die den Zustand Ihrer Anwendung und Infrastruktur angeben.
Weitere Informationen zu Rollback-Triggern finden Sie unter Rollback Ihres Stacks bei einem Alarmverstoß.
Implementieren Sie effektive Strategien zum Stack-Refactoring
Im Zuge der Weiterentwicklung Ihrer Infrastruktur müssen Sie möglicherweise Ihre CloudFormation Stacks umgestalten, um die Wartbarkeit zu verbessern, die Komplexität zu reduzieren oder sich an sich ändernde Anforderungen anzupassen. Beim Stack-Refactoring müssen Sie Ihre Vorlagen und Ressourcen neu strukturieren und dabei ihr externes Verhalten und ihre Funktionalität beibehalten. Die Verwendung von Stack-Refactoring ist auf folgende Weise von Vorteil: CloudFormation
-
Aufteilung monolithischer Stacks: Zerlegung großer, komplexer Stacks in kleinere, besser verwaltbare Stapel, die nach Lebenszyklus oder Besitz geordnet sind
-
Konsolidierung verwandter Ressourcen: Kombinieren verwandter Ressourcen aus mehreren Stacks zu einem einzigen, zusammenhängenden Stapel, um die Verwaltung zu vereinfachen
-
Extrahieren wiederverwendbarer Komponenten: Verschieben gängiger Muster in Module oder verschachtelte Stacks, um die Wiederverwendung und Konsistenz zu fördern
-
Verbesserung der Ressourcenorganisation: Restrukturierung von Ressourcen innerhalb eines Stacks, um ihre Beziehungen und Abhängigkeiten besser widerzuspiegeln
Weitere Informationen zum Refactoring Ihrer CloudFormation Stacks finden Sie unter. Stack-Refactoring
Verwenden Sie CloudFormation Hooks für das Lebenszyklusmanagement
CloudFormation Hooks stellen Code bereit, 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 den Anforderungen Ihres Unternehmens in Bezug auf Sicherheit, Betrieb und Kostenoptimierung entsprechen. Sie geben Warnungen aus, bevor Ressourcen bereitgestellt werden, oder sie geben Warnungen aus, wenn der Vorgang fehlschlägt, und beenden ihn, je nachdem, wie er konfiguriert wurde. Verstöße und Warnungen werden in Amazon protokolliert CloudWatch , um Einblick in nicht konforme Bereitstellungen zu geben.
Weitere Informationen darüber, wie Hooks Ihre CloudFormation Ressourcen nutzen können, finden Sie unter Was sind AWS CloudFormation Hooks?
Verwenden Sie IaC Generator, um Vorlagen aus vorhandenen Ressourcen zu erstellen
Der CloudFormation IaC (Infrastructure as Code) Generator hilft Ihnen dabei, CloudFormation Vorlagen aus Ihren vorhandenen AWS Ressourcen zu erstellen. Diese Funktion ist besonders nützlich, wenn Sie eine bestehende Infrastruktur replizieren, manuell erstellte Ressourcen dokumentieren oder zuvor nicht verwaltete Ressourcen verwalten müssen. CloudFormation Der IaC-Generator ist nützlich, um Ihre CloudFormation Vorlagen auf folgende Weise zu erstellen:
-
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 übereinstimmen, indem Sie generierte Vorlagen als Ausgangspunkt verwenden
-
Migration zur Infrastruktur als Code: Schrittweise werden manuell erstellte Ressourcen CloudFormation verwaltet
-
Dokumentation: Erstellen Sie eine Aufzeichnung Ihrer vorhandenen Infrastruktur in Vorlagenform
Weitere Informationen zum IaC-Generator finden Sie unter Generieren von Vorlagen aus vorhandenen Ressourcen mit dem IaC-Generator.
Wird AWS-Infrastruktur-Composer für das visuelle Vorlagendesign verwendet
AWS-Infrastruktur-Composer ist ein Tool für visuelles Design, mit dem Sie CloudFormation Vorlagen mithilfe einer drag-and-drop Benutzeroberfläche erstellen, visualisieren und ändern können. Es kann besonders nützlich sein, wenn es CloudFormation auf folgende Weise verwendet wird:
-
Architekturplanung: Entwerfen und validieren Sie Infrastrukturarchitekturen vor der Implementierung
-
Modernisierung von Vorlagen: Visualisieren Sie bestehende Vorlagen, um deren Struktur zu verstehen und Verbesserungsmöglichkeiten zu identifizieren
-
Schulung und Einarbeitung: Helfen Sie neuen Teammitgliedern, CloudFormation Konzepte und AWS Servicebeziehungen durch visuelles Lernen zu verstehen
-
Kommunikation mit Stakeholdern: Präsentieren Sie Infrastrukturentwürfe für technisch nicht versierte Interessengruppen anhand klarer visueller Darstellungen
-
Konformitätsprüfungen: Verwenden Sie visuelle Diagramme, um die Sicherheits- und Konformitätsprüfungen Ihrer Infrastrukturentwürfe zu erleichtern
-
Konformitätsprüfungen: Verwenden Sie visuelle Diagramme, um die Sicherheits- und Konformitätsprüfungen Ihrer Infrastrukturentwürfe zu erleichtern
Weitere Informationen zu Infrastructure Composer finden Sie unter Was ist AWS-Infrastruktur-Composer? .
Erwägen Sie AWS Cloud Development Kit (AWS CDK) die Verwendung für komplexe Infrastrukturen
Bei komplexen Infrastrukturanforderungen sollten Sie erwägen, das CDK zu verwenden, um Ihre Cloud-Ressourcen mithilfe vertrauter Programmiersprachen wie Python TypeScript, Java und .NET zu definieren. AWS CDK generiert CloudFormation Vorlagen aus Ihrem Code, sodass Sie alle Funktionen von nutzen und CloudFormation gleichzeitig die Abstraktionen und Programmierkonstrukte Ihrer bevorzugten Sprache verwenden können.
Das AWS CDK bietet Konstrukte auf hoher Ebene, die bewährte Verfahren zusammenfassen und die Definition gängiger Infrastrukturmuster vereinfachen. Dadurch kann die Menge an Code, die zur Definition Ihrer Infrastruktur benötigt wird, erheblich reduziert und gleichzeitig die Einhaltung von Best Practices gewährleistet werden.
Weitere Informationen zum CDK finden Sie unter. AWS Cloud Development Kit (AWS CDK)
Verwendung von IAM für die Zugriffskontrolle
IAM ist ein AWS Dienst, mit dem Sie Benutzer und deren Berechtigungen verwalten können. AWS Sie können IAM with verwenden CloudFormation , um festzulegen, welche CloudFormation Aktionen Benutzer ausführen können, z. B. das Anzeigen von Stack-Vorlagen, das Erstellen von Stacks oder das Löschen von Stacks. Zudem benötigt jeder, der CloudFormation-Stacks verwaltet, Berechtigungen für Ressourcen innerhalb dieser Stacks. Wenn Benutzer beispielsweise EC2 Amazon-Instances starten, aktualisieren oder beenden möchten, müssen sie über die Erlaubnis verfügen, die entsprechenden EC2 Amazon-Aktionen aufzurufen. CloudFormation
In den meisten Fällen benötigen Benutzer vollen Zugriff, um alle Ressourcen in einer Vorlage zu verwalten. CloudFormation führt Aufrufe durch, um diese Ressourcen in ihrem Namen zu erstellen, zu ändern und zu löschen. Verwenden Sie eine Servicerolle, um die Berechtigungen zwischen einem Benutzer und dem CloudFormation Service zu trennen. CloudFormation verwendet anstelle der Benutzerrichtlinie die Richtlinie der Servicerolle, um Anrufe zu tätigen. Weitere Informationen finden Sie unter AWS CloudFormation Servicerolle.
Wendet das Prinzip der geringsten Rechte an
Wenden Sie bei der Konfiguration von IAM-Rollen für CloudFormation Servicerollen oder für Ressourcen, die mit Ihren Vorlagen erstellt wurden, immer das Prinzip der geringsten Rechte an. Gewähren Sie nur die Berechtigungen, die für die beabsichtigte Funktionalität erforderlich sind, und vermeiden Sie nach Möglichkeit die Verwendung von Platzhalterberechtigungen.
Verwenden Sie IAM Access Analyzer, um die Ihren CloudFormation Servicerollen 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 Ihren Sicherheitsanforderungen entsprechen.
Schützen Sie sensible Parameter
Verwenden Sie für vertrauliche Informationen wie Passwörter, API-Schlüssel und andere Geheimnisse den AWS Systems Manager Parameter Store oder betten Sie sie AWS Secrets Manager nicht direkt in Ihre Vorlagen ein. Verwenden Sie dynamische Verweise in Ihren Vorlagen, um diese Werte bei Stack-Vorgängen sicher abzurufen.
Wenn Sie Parameter in Ihren Vorlagen verwenden, legen Sie die NoEcho Eigenschaft true für sensible Parameter auf fest, um zu verhindern, dass ihre Werte in der Konsole, in API-Antworten oder in der CLI-Ausgabe angezeigt werden. Beachten Sie, dass NoEcho dies nicht verhindert, dass der Wert protokolliert wird, wenn er an andere Dienste oder Ressourcen weitergegeben wird, die den Wert möglicherweise protokollieren.
Weitere Informationen zur Verwendung von AWS Systems Manager Parameter Store mit CloudFormation finden Sie unter Abrufen eines Klartext-Werts aus dem AWS Systems Manager Parameterspeicher.
Weitere Informationen zur Verwendung der NoEcho Eigenschaft finden Sie unter Syntax der CloudFormation Vorlagenparameter.
Weitere Informationen zur Verwendung von AWS Secrets Manager mit CloudFormation finden Sie unter Create AWS Secrets Manager secrets in AWS CloudFormation.
Implementieren Sie Richtlinien als Code mit AWS CloudFormation Guard
AWS CloudFormation Guard (cfn-guard) ist ein policy-as-code Open-Source-Tool, mit dem Sie Regeln für Ihre CloudFormation Vorlagen definieren und durchsetzen können. Verwenden Sie cfn-guard es, um sicherzustellen, dass Ihre Vorlagen den Unternehmensrichtlinien, bewährten Sicherheitsmethoden und Governance-Anforderungen entsprechen.
Integrieren Sie es cfn-guard in Ihre CI/CD Pipelines, um Vorlagen vor der Bereitstellung automatisch anhand Ihrer Richtlinienregeln zu validieren. Auf diese Weise wird verhindert, dass Ressourcen, die nicht den Vorschriften entsprechen, in Ihrer Umgebung bereitgestellt werden, und Entwickler erhalten frühzeitig Feedback zu Richtlinienverstößen.
Weitere Informationen zu Guard finden Sie unter Was ist AWS CloudFormation Guard?