AWS CloudFormation bewährte Verfahren - AWS CloudFormation

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

AWS CloudFormation bewährte Verfahren

Bewährte Methoden sind Empfehlungen, die Ihnen helfen können, den gesamten Workflow AWS CloudFormation effektiver und sicherer zu nutzen. 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.

Verkürzen der Feedbackschleife zur Verbesserung der Liefergeschwindigkeit

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 Linter (cfn-lint) und TaskCatBefehlszeilentools. Das cfn-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ügbar. Dies gibt Ihnen die Möglichkeit, Probleme in Ihrem Editor zu visualisieren und direktes Linter-Feedback zu erhalten. Sie können sich auch dafür entscheiden, sie cfn-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-lint. Sobald du dein erstes Linting durchgeführt und alle cfn-lint eventuell aufgetretenen Probleme behoben hast, kannst du deine Vorlagen testen, indem du programmatisch TaskCat Stapel deiner Wahl erstellst. AWS-Regionen TaskCatgeneriert außerdem einen Bericht mit den Noten „Bestehen/Nicht bestanden“ für jede Region, die Sie ausgewählt haben.

Eine step-by-step praktische Anleitung zur Verwendung beider Tools zur Verkürzung der Feedback-Schleife finden Sie im Linting and Testing Lab des Workshops.AWS CloudFormation

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.

Als zusätzliche Anleitung zur Organisation Ihrer Stacks können Sie zwei gängige Frameworks verwenden: eine mehrschichtige Architektur und eine serviceorientierte Architektur (). SOA

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

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

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

Wenn Sie Ihre AWS Ressourcen auf der Grundlage von Lebenszyklus und Besitz 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 Stack-übergreifende Verweise, um Ressourcen aus einem Stack zu exportieren und in einem anderen Stack zu verwenden. Stacks können die exportierten Ressourcen verwenden, indem sie sie mithilfe der Fn::ImportValue-Funktion aufrufen.

Beispielsweise könnten Sie über einen Netzwerk-Stack verfügen, der eine VPC Sicherheitsgruppe und ein Subnetz umfasst. 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.

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 (AmazonEC2) -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.

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. AWS 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 Namen oder Schlüsselpaarnamen nachschlagen VPC IDs oder sich diese merken müssen. Weitere Informationen finden Sie unter Verweisen Sie mit von CloudFormation -bereitgestellten Parametertypen auf vorhandene Ressourcen und Systems Manager Manager-Parameter.

Verwenden von Parameter-Einschränkungen

Mithilfe von Einschränkungen können Sie zulässige Eingabewerte so beschreiben, dass alle ungültigen Werte erfasst werden, bevor ein CloudFormation 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 Parameters Abschnittssyntaxreferenz für CloudFormation Vorlagen.

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 zum Beispiel 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 handelt es sich bei der vorhandenen Ressource um eine AWS Systems Manager Parameter Store-Ressource mit den folgenden EigenschaftenARN:arn:aws:ssm:us-east-1:123456789012:parameter/MySampleParameter. Sie müssen das ARNFormat 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 mit verketten:. CloudFormation !Sub 'arn:${AWS::Partition}:ssm:${AWS::Region}:${AWS::AccountId}:parameter/MySampleParameter

Nehmen wir als weiteres Beispiel an, dass Sie Ressourcen oder Konfigurationen für mehrere Stapel gemeinsam nutzen möchten. Gehen Sie in diesem Beispiel davon aus, dass Sie ein Subnetz für Ihr eigenes VPC Subnetz erstellt und anschließend 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 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 exemplarische Vorgehensweise zur Verwendung von cfn-init und finden Sie AWS::CloudFormation::Init unterAnwendungen auf Amazon bereitstellen EC2.

Verwenden der neuesten Hilfsskripts

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

yum install -y aws-cfn-bootstrap

Weitere Informationen zum Abrufen der neuesten Hilfsskripte finden Sie in der Referenz zu CloudFormation Hilfsskripten.

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 CloudFormation API das AWS CLI oder validate-templateCLIBefehl oder ValidateTemplateAPIBetrieb.

Bei der Validierung wird CloudFormation zunächst geprüft, ob die Vorlage gültig istJSON. Ist dies nicht der Fall, wird CloudFormation geprüft, ob die Vorlage gültig istYAML. 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.

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.

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 unter. GitHub

Verwalte alle Stack-Ressourcen über AWS CloudFormation

Nachdem Sie einen Stack gestartet haben, verwenden Sie die CloudFormation Konsole oder aktualisieren AWS CLISie die Ressourcen in Ihrem Stack. API Nehmen Sie keine Änderungen an Stack-Ressourcen außerhalb von vor CloudFormation. Andernfalls stimmen Ihre Stack-Vorlage und der aktuelle Status Ihrer Stack-Ressourcen möglicherweise nicht mehr überein, was zu Fehlern führen kann, wenn Sie den Stack aktualisieren oder löschen. Dies wird als Drift bezeichnet. Wenn eine Änderung an einer Ressource außerhalb der CloudFormation Vorlage vorgenommen wird und Sie den Stack aktualisieren, werden die direkt an der Ressource vorgenommenen Änderungen verworfen und die Ressourcenkonfiguration wird auf die Konfiguration in der Vorlage zurückgesetzt.

Weitere Informationen zu Drift finden Sie unter. Was ist Abweichung?

Weitere Informationen zum Aktualisieren von Stacks finden Sie unterSchrittweiser Walkthrough: Aktualisierung eines Stacks.

Erstellen von Änderungssätzen vor der Aktualisierung von Stacks

Mithilfe von Änderungssätzen können Sie sich vor der Implementierung ein Bild davon machen, 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 RDS Amazon-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 von Stack-Richtlinien

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

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

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

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

Aktualisieren Sie Ihre 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.