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 verwendet AWS CloudTrail , um CloudFormation Anrufe 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 das Lebenszyklusmanagement
- Autorentools
- Sicherheit und Compliance
Verkürzen Sie die Feedbackschleife, um die Entwicklungsgeschwindigkeit zu erhöhen.
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 CloudFormation Lintercfn-lint) und TaskCatcfn-lint Tool bietet Ihnen die Möglichkeit, Ihre CloudFormation Vorlagen anhand der Ressourcenspezifikation zu validieren.CloudFormation 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 Pre-Commit-Validierung von 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 Stapel exportiert wurde
Wenn Sie Ihre AWS Ressourcen nach Lebenszyklus und Eigentum organisieren, möchten Sie vielleicht einen Stack 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 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 Holen Sie sich exportierte Ausgaben aus einem bereitgestellten CloudFormation Stack.
Wird CloudFormation StackSets für Bereitstellungen mit mehreren Konten und mehreren Regionen verwendet
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.
Einführung von Infrastruktur als Code
Behandeln Sie Ihre CloudFormation Vorlagen wie Code, indem Sie Infrastructure-as-Code-Praktiken (IaC) 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 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
Fügen Sie keine Anmeldedaten 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, auf externe Werte zu verweisen, die in anderen Diensten gespeichert und verwaltet werden, z. B. im AWS Systems Manager Parameter Store oder AWS Secrets Manager. 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 Drop-down-Liste 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 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 Ihnen das folgende Beispiel, wie Sie Elemente in einem ARN verketten mit:. CloudFormation !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. 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 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.
Wird AWS::CloudFormation::Init zur Bereitstellung von Softwareanwendungen auf EC2 Amazon-Instances verwendet
Wenn Sie Stacks starten, können Sie mithilfe des cfn-init Hilfsskripts und der AWS::CloudFormation::Init Ressource Softwareanwendungen auf EC2 Amazon-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 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 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 zum Herunterladen der neuesten Hilfsskripte finden Sie in der Referenz zu CloudFormation Hilfsskripten im 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 catch und einige semantische Fehler, wie z. B. 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
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 Workflows oder bei der Arbeit mit APIs dieser erwarteten JSON-Eingabe 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 konsistente Tagging-Strategie für alle Ressourcen, die mit Ihren CloudFormation Vorlagen erstellt wurden. 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 Stack 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
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.
Weitere Informationen zur Verwendung von Makros in Ihren Vorlagen finden Sie unter Überblick über Makros. CloudFormation
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
Mithilfe von Änderungssätzen können Sie sehen, wie sich vorgeschlagene Änderungen an einem Stack auf Ihre laufenden Ressourcen auswirken könnten, bevor Sie sie implementieren. 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 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.
Wird verwendet AWS CloudTrail , um CloudFormation Anrufe zu protokollieren
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 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 die Drifterkennung regelmäßig
Verwenden Sie regelmäßig die CloudFormation Drift-Erkennungsfunktion, 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 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 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 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-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
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. Das Stack-Refactoring umfasst die Umstrukturierung Ihrer Vorlagen und Ressourcen unter Beibehaltung ihres externen Verhaltens und ihrer Funktionalität. Die Verwendung von Stack-Refactoring ist auf folgende Weise von Vorteil: CloudFormation
-
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 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 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 protokolliert CloudWatch , um Einblick in nicht konforme Bereitstellungen zu geben.
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 (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 Umgebungen übereinstimmen, indem Sie generierte Vorlagen als Ausgangspunkt verwenden
-
Migration zur Infrastruktur als Code: Schrittweise werden manuell erstellte Ressourcen verwaltet CloudFormation
-
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.
AWS Infrastructure Composer Für die visuelle Vorlagengestaltung verwenden
AWS Infrastructure 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: 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 Einarbeitung: Helfen Sie neuen Teammitgliedern durch visuelles Lernen, CloudFormation Konzepte und AWS Servicebeziehungen 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 zu Infrastructure Composer finden Sie unter Was ist AWS Infrastructure 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. 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 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 CloudFormation Servicerolle.
Wenden Sie das Prinzip des geringsten Privilegs 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 vorgesehene 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 weiterhin mit Ihren Sicherheitsanforderungen übereinstimmen.
Sichern Sie sensible Parameter
Verwenden Sie für vertrauliche Informationen wie Passwörter, API-Schlüssel und andere geheime Daten den AWS Systems Manager Parameter Store oder betten Sie sie AWS Secrets Manager nicht direkt in Ihre Vorlagen ein. 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 CloudFormation finden Sie unter Abrufen eines Klartextwerts 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 die Richtlinie 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, um sicherzustellen, dass Ihre Vorlagen den Unternehmensrichtlinien, bewährten Sicherheitsverfahren 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 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.
Weitere Informationen zu Guard finden Sie unter Was ist AWS CloudFormation Guard?