Automatisieren Sie die Stackset-Bereitstellung mithilfe von AWS CodePipeline und AWS CodeBuild - AWS Prescriptive Guidance

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.

Automatisieren Sie die Stackset-Bereitstellung mithilfe von AWS CodePipeline und AWS CodeBuild

Erstellt von Thiyagarajan Mani (AWS), Mihir Borkar (AWS) und Raghu Gowda (AWS)

automated-code-pipeline-stacksetCode-Repository: -deployment

Umgebung: Produktion

Technologien: DevOps; DevelopmentAndTesting

AWS-Dienste: AWS CodeBuild CodeCommit; AWS CodePipeline; AWS Organizations; AWS CloudFormation

Übersicht

In Ihren CI/CD-Prozessen (Continuous Integration and Continuous Delivery) möchten Sie möglicherweise Anwendungen automatisch in all Ihren vorhandenen AWS-Konten und in neuen Konten bereitstellen, die Sie Ihrer Organisation in AWS Organizations hinzufügen. Wenn Sie eine CI/CD-Lösung für diese Anforderung entwerfen, CloudFormation ist die delegierte Stack-Set-Administratorfunktion von AWS nützlich, da sie eine Sicherheitsebene ermöglicht, indem der Zugriff auf das Verwaltungskonto eingeschränkt wird. AWS CodePipeline verwendet jedoch das vom Service verwaltete Berechtigungsmodell, um Anwendungen in mehreren Konten und Regionen bereitzustellen. Sie müssen das Verwaltungskonto von AWS Organizations für die Bereitstellung mit Stack-Sets verwenden, da AWS die Funktion zum delegierten Stack-Set-Administrator CodePipeline nicht unterstützt.

Dieses Muster beschreibt, wie Sie diese Einschränkung umgehen können. Das Muster verwendet AWS CodeBuild und ein benutzerdefiniertes Skript, um die Stackset-Bereitstellung mit AWS zu automatisieren CodePipeline. Es automatisiert diese Aktivitäten zur Anwendungsbereitstellung:

  • Stellen Sie eine Anwendung als Stack-Sets in vorhandenen Organisationseinheiten (OUs) bereit

  • Erweitern Sie die Bereitstellung einer Anwendung auf weitere Organisationseinheiten und Regionen 

  • Entfernen Sie eine bereitgestellte Anwendung aus allen oder bestimmten Organisationseinheiten oder Regionen

Voraussetzungen und Einschränkungen

Voraussetzungen

Bevor Sie die Schritte in diesem Muster ausführen:

Einschränkungen

Der Code, der mit diesem Muster geliefert wird, hat die folgenden Einschränkungen: 

  • Sie können nur eine einzige CloudFormation Vorlage für eine Anwendung bereitstellen. Die Bereitstellung mehrerer Vorlagen wird derzeit nicht unterstützt.

  • Die Anpassung der aktuellen Implementierung erfordert DevOps Fachwissen.

  • Dieses Muster verwendet keine AWS Key Management System (AWS KMS) -Schlüssel. Sie können diese Funktionalität jedoch aktivieren, indem Sie die in diesem Muster enthaltene CloudFormation Vorlage neu konfigurieren.

Architektur

Architektur für die Automatisierung der CI/CD-Pipeline

Diese Architektur für die CI/CD-Bereitstellungspipeline behandelt Folgendes:

  • Schränkt den direkten Zugriff auf das Verwaltungskonto ein, indem die Verantwortung für die Stackset-Bereitstellung an ein spezielles CI/CD-Konto als Stackset-Administrator für Anwendungsbereitstellungen delegiert wird.

  • Verwendet das vom Service verwaltete Berechtigungsmodell, um die Anwendung automatisch bereitzustellen, wenn ein neues Konto erstellt und einer Organisationseinheit zugeordnet wird.

  • Stellt die Konsistenz der Anwendungsversionen für alle Konten auf Umgebungsebene sicher.

  • Nutzt mehrere Genehmigungsphasen auf Repository- und Pipeline-Ebene, um zusätzliche Sicherheits- und Governance-Ebenen für die bereitgestellte Anwendung bereitzustellen.

  • Überwindet die derzeitige Einschränkung, Stack-Sets und Stack-Instances CodePipeline mithilfe eines benutzerdefinierten Bereitstellungsskripts automatisch bereitzustellen oder CodeBuild zu entfernen. Eine Veranschaulichung der Ablaufsteuerung und der Hierarchie der API-Aufrufe, die durch das benutzerdefinierte Skript implementiert werden, finden Sie im Abschnitt Zusätzliche Informationen.

  • Erstellt individuelle Stacksets für die Entwicklungs-, Test- und Produktionsumgebung. Darüber hinaus können Sie Stack-Sets erstellen, die in jeder Phase mehrere Organisationseinheiten und Regionen kombinieren. Sie können beispielsweise Sandbox- und Entwicklungs-OUs innerhalb einer Entwicklungsphase kombinieren.

  • Unterstützt die Anwendungsbereitstellung in einer Teilmenge von Konten oder in einer Liste von Organisationseinheiten oder den Ausschluss von Anwendungen.

Automatisierung und Skalierung

Sie können den mit diesem Muster bereitgestellten Code verwenden, um ein CodeCommit AWS-Repository und eine Code-Pipeline für Ihre Anwendung zu erstellen. Sie können diese dann als Stack-Sets für mehrere Konten auf OU-Ebene bereitstellen. Der Code automatisiert auch Komponenten wie Amazon Simple Notification Service (Amazon SNS) -Themen zur Benachrichtigung von Genehmigern, die erforderlichen AWS Identity and Access Management (IAM) -Rollen und die Service Control Policy (SCP), die für das Verwaltungskonto gelten soll.

Tools

AWS-Services

  • AWS CloudFormation hilft Ihnen dabei, AWS-Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus über AWS-Konten und Regionen hinweg zu verwalten.

  • AWS CodeBuild ist ein vollständig verwalteter Build-Service, mit dem Sie Quellcode kompilieren, Komponententests ausführen und bereitstellungsbereite Artefakte erstellen können.

  • AWS CodeCommit ist ein Versionskontrollservice, mit dem Sie Git-Repositorys privat speichern und verwalten können, ohne Ihr eigenes Quellcodeverwaltungssystem verwalten zu müssen.

  • AWS CodeDeploy automatisiert Bereitstellungen auf Amazon Elastic Compute Cloud (Amazon EC2) oder lokalen Instances, AWS Lambda Lambda-Funktionen oder Amazon Elastic Container Service (Amazon ECS) -Services.

  • AWS CodePipeline hilft Ihnen dabei, die verschiedenen Phasen einer Softwareversion schnell zu modellieren und zu konfigurieren und die Schritte zu automatisieren, die für die kontinuierliche Veröffentlichung von Softwareänderungen erforderlich sind.

  • AWS Organizations ist ein Kontoverwaltungsservice, mit dem Sie mehrere AWS-Konten in einer Organisation konsolidieren können, die Sie erstellen und zentral verwalten.

  • Amazon Simple Notification Service (Amazon SNS) unterstützt Sie bei der Koordination und Verwaltung des Nachrichtenaustauschs zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen.

Code-Repository

Der Code für dieses Muster ist im Repository GitHub automated-code-pipeline-stackset-deployment verfügbar. Die Ordnerstruktur und weitere Details finden Sie in der Readme-Datei für das Repository.

Bewährte Methoden

Dieses Muster schränkt den direkten Zugriff auf das Verwaltungskonto bei der Bereitstellung der Anwendung auf OU-Ebene ein. Das Hinzufügen mehrerer Genehmigungsphasen zum Pipeline- und Repository-Prozess trägt dazu bei, zusätzliche Sicherheit und Steuerung für die Anwendungen und Komponenten zu gewährleisten, die Sie mit diesem Ansatz bereitstellen.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Aktivieren Sie alle Funktionen im Verwaltungskonto.

Aktivieren Sie alle Funktionen im Verwaltungskonto für Ihre Organisation, indem Sie den Anweisungen in der Dokumentation zu AWS Organizations folgen.

AWS-Administrator, Plattformadministrator

Erstellen Sie ein CI/CD-Konto.

Erstellen Sie in AWS Organizations in Ihrer Organisation ein spezielles CI/CD-Konto und weisen Sie einem Team zu, das für das Konto verantwortlich ist und den Zugriff darauf kontrolliert.

AWS-Administrator

Fügen Sie einen delegierten Administrator hinzu.

Registrieren Sie im Verwaltungskonto das CI/CD-Konto, das Sie im vorherigen Schritt erstellt haben, als delegierten Stackset-Administrator. Anweisungen finden Sie in der CloudFormation AWS-Dokumentation.

AWS-Administrator, Plattformadministrator
AufgabeBeschreibungErforderliche Fähigkeiten

Klonen Sie das Code-Repository.

  1. Klonen Sie das Code-Repository, das mit diesem Muster bereitgestellt wurde, auf Ihren Computer:

    git clone https://github.com/aws-samples/automated-code-pipeline-stackset-deployment.git
  2. Lesen Sie die Readme-Datei, um die Verzeichnisstruktur und andere Details zu verstehen.

AWS DevOps

Erstellen Sie SNS-Themen.

Sie können die im GitHub Repository bereitgestellte sns-template.yaml Vorlage verwenden, um SNS-Themen zu erstellen und Abonnements für Genehmigungsanfragen zu konfigurieren.

  1. Melden Sie sich auf der AWS-Konsole beim CI/CD-Konto an.

  2. Öffnen Sie die CloudFormation Konsole unter https://console.aws.amazon.com/cloudformation.

  3. Erstellen Sie einen neuen Stack mit neuen Ressourcen (Standardoption).

  4. Wählen Sie für Vorlage angeben die Option Eine Vorlagendatei hochladen, Datei auswählen und wählen Sie dann die sns-template.yaml Datei aus dem templates Ordner des geklonten GitHub Repositorys aus. Wählen Sie Weiter aus.

  5. Geben Sie einen aussagekräftigen Namen für den Anwendungsstapel ein.

  6. Geben Sie ein Präfix für Ressourcen an.

  7. Wählen Sie Weiter, Weiter und Absenden.

  8. Wenn der Stack erfolgreich erstellt wurde, wählen Sie den Tab Outputs und notieren Sie sich die Amazon-Ressourcennamen (ARNs) der SNS-Themen für Pull-Requests, die Testumgebung und die Produktionsumgebung. Sie werden diese Informationen in den nachfolgenden Schritten verwenden.

AWS DevOps

Erstellen Sie IAM-Rollen für CI/CD-Komponenten.

Sie können die im GitHub Repository bereitgestellte cicd-role-template.yaml Vorlage verwenden, um IAM-Rollen und -Richtlinien zu erstellen, die für CI/CD-Komponenten erforderlich sind.

  1. Melden Sie sich auf der AWS-Konsole beim CI/CD-Konto an.

  2. Öffnen Sie die CloudFormation Konsole unter https://console.aws.amazon.com/cloudformation.

  3. Erstellen Sie einen neuen Stack mit neuen Ressourcen (Standardoption).

  4. Wählen Sie für Vorlage angeben die Option Eine Vorlagendatei hochladen, Datei auswählen und wählen Sie dann die cicd-role-template.yaml Datei aus dem templates Ordner des geklonten GitHub Repositorys aus. Wählen Sie Weiter aus.

  5. Geben Sie einen aussagekräftigen Namen für den Anwendungsstapel ein.

  6. Geben Sie Werte für die folgenden Parameter ein:

    • Der ARN für die Permission Boundary Policy. Sie können diesen ARN in der IAM-Konsole im Abschnitt „Richtliniendetails“ Ihrer Richtlinie zur Begrenzung der Zugriffsrechte abrufen.

    • Die ARN für das Thema SNS-Produktionsgenehmigung, das Sie zuvor notiert haben.

    • Der ARN für das Thema SNS-Testgenehmigung, das Sie zuvor notiert haben.

    • Ein Präfix für Ressourcen, die mit der Vorlage erstellt wurden.

  7. Wählen Sie „Weiter“, „Weiter“ und „Absenden“.

  8. Wenn der Stack erfolgreich erstellt wurde, wählen Sie die Registerkarte Outputs und notieren Sie sich die ARNs der IAM-Rollen, die erstellt wurden. Sie werden diese Informationen in den nachfolgenden Schritten verwenden.

AWS DevOps

Erstellen Sie ein CodeCommit Repository und eine Code-Pipeline für Ihre Anwendung.

Sie können die im Repository bereitgestellte cicd-pipeline-template.yaml Vorlage verwenden, um ein GitHub CodeCommit Repository und eine Code-Pipeline für Ihre Anwendung zu erstellen.

  1. Melden Sie sich auf der AWS-Konsole beim CI/CD-Konto an.

  2. Öffnen Sie die CloudFormation Konsole unter https://console.aws.amazon.com/cloudformation.

  3. Erstellen Sie einen neuen Stack mit neuen Ressourcen (Standardoption).

  4. Wählen Sie für Vorlage angeben die Option Eine Vorlagendatei hochladen, Datei auswählen und wählen Sie dann die cicd-pipeline-template.yaml Datei aus dem templates Ordner des geklonten GitHub Repositorys aus. Wählen Sie Weiter aus.

  5. Geben Sie einen aussagekräftigen Namen für den Anwendungsstapel ein.

  6. Geben Sie Werte für die folgenden Parameter ein:

    • AppRepositoryName— Der Name des CodeCommit Repositorys, das für die Anwendung erstellt wird.

    • AppRepositoryDescription— Eine kurze Beschreibung des CodeCommit Repositorys, das für die Anwendung erstellt wird.

    • ApplicationName— Der Name Ihrer Anwendung. Diese Zeichenfolge wird als Name des CodeCommit Repositorys und als Präfix der CI/CD-Pipeline verwendet.

    • CloudWatchEventRoleARN — Der ARN der CloudWatch Ereignisrolle aus der vorherigen Aufgabe.

    • CodeBuildProjectRoleARN — Der ARN der CodeBuild Projektrolle aus der vorherigen Aufgabe.

    • CodePipelineRoleARN — Der ARN der CodePipeline Rolle aus der vorherigen Aufgabe.

    • DeploymentConfigBucket— Der Name des Amazon Simple Storage Service (Amazon S3) -Buckets, in dem die Einrichtungskonfigurationsdateien und die ZIP-Skriptdatei gespeichert werden.

    • DeploymentConfigKey— Der Pfad und der ZIP-Dateiname (Amazon S3 S3-Schlüssel).

    • prApprovalsnsArn — Der ARN für das SNS-Thema für Pull-Request-Benachrichtigungen.

    • ProdApprovalSNSARN — Der ARN für das SNS-Thema für Produktionsgenehmigungen.

    • TestApprovalsNSARN — Der ARN für das SNS-Thema für Testgenehmigungen.

    • TemplateBucket— Der Name des S3-Buckets im CI/CD-Konto, in dem die Vorlage zur Erstellung der CI/CD-Pipeline gespeichert wird.

  7. Wählen Sie Weiter, Weiter und Senden aus.

  8. Wenn der Stack erfolgreich abgeschlossen wurde, erstellt er ein CodeCommit Repository mit dem angegebenen Namen und einer Standardverzeichnisstruktur, Einrichtungskonfigurationsdateien, Skripten und einer Code-Pipeline für das Repository.

AWS DevOps
AufgabeBeschreibungErforderliche Fähigkeiten

Klonen Sie das Anwendungs-Repository.

Die CI/CD-Pipeline-Vorlage, die Sie zuvor verwendet haben, erstellt ein Beispielanwendungs-Repository und eine Code-Pipeline. So klonen und verifizieren Sie das Repository:

  1. Melden Sie sich beim CI/CD-Konto an.

  2. Suchen Sie das Anwendungs-Repository und die CI/CD-Pipeline, die Sie im vorherigen Epic erstellt haben.

  3. Kopieren Sie die URL für das Repository und verwenden Sie den Befehl git clone, um das Repository auf Ihrem lokalen Computer zu klonen.

  4. Stellen Sie sicher, dass die Verzeichnisstruktur und die Dateien den folgenden Kriterien entsprechen:

    root |- deploy_configs | |- deployment_config.json |- parameters | |- template-parameter-dev.json | |- template-parameter-test.json | |- template-parameter-prod.json |- templates | |- template.yml |- buildspec.yml

    wobei der deploy_configs Ordner die Einrichtungskonfigurationsdatei und die parameters Ordner templates und Standarddateien enthalten, die Sie durch Ihre eigenen CloudFormation Vorlagen- und Parameterdateien ersetzen.

    Wichtig: Passen Sie die Ordnerstruktur nicht an.

  5. Erstellen Sie einen Feature-Branch.

App-Entwickler, Dateningenieur

Fügen Sie Anwendungsartefakte hinzu.

Aktualisieren Sie das Anwendungs-Repository mithilfe einer CloudFormation Vorlage.

Hinweis: Diese Lösung unterstützt die Bereitstellung nur einer einzigen CloudFormation Vorlage.

  1. Erstellen Sie Ihre CloudFormation Vorlage für die Bereitstellung der Änderungen am Anwendungscode und geben Sie ihr einen Namen<application-name>.yaml.

  2. Ersetzen Sie die template.yml Datei im templates Ordner des Anwendungs-Repositorys durch die CloudFormation Vorlage, die Sie in Schritt 1 erstellt haben.

  3. Bereiten Sie Parameterdateien für jede Umgebung (Entwicklung, Test und Produktion) vor. 

  4. Benennen Sie die Parameterdateien mithilfe des Formats<cloudformation-template-name>-parameter-<environment-name>.json.

  5. Ersetzen Sie die Standardparameterdateien im parameters Ordner durch Ihre Dateien aus Schritt 4.

App-Entwickler, Dateningenieur

Aktualisieren Sie die Einrichtungskonfigurationsdatei.

Aktualisieren Sie die deployment_config.json Datei:

  1. Navigieren Sie im Anwendungs-Repository zu dem deploy_configs Ordner.

  2. Öffnen Sie die Dateideployment_config.json:

    { "deployment_action": "<deploy/delete>", "stack_set_name": "<stack set name>", "stack_set_desciption": "<stack set description>", "deployment_targets": { "dev": { "org_units": ["list of OUs"], "regions": ["list of regions"], "filter_accounts": ["list of accounts"], "filter_type": "<DIFFERENCE/INTERSECTION/UNION>" }, "test": { "org_units": ["list of OUs"], "regions": ["list of regions"], "filter_accounts": ["list of accounts"], "filter_type": "<DIFFERENCE/INTERSECTION/UNION>" }, "prod": { "org_units": ["list of OUs"], "regions": ["list of regions"], "filter_accounts": ["list of accounts"], "filter_type": "<DIFFERENCE/INTERSECTION/UNION>" } }, "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"], "auto_deployement": "<True/False>", "retain_stacks_on_account_removal": "<True/False>", "region_deployment_concurrency": "<SEQUENTIAL/PARALLEL>" }
  3. Aktualisieren Sie die Werte für die Bereitstellungsaktion, den Namen des Stack-Sets, die Beschreibung des Stack-Sets und die Bereitstellungsziele.

    Sie können beispielsweise festlegen, deployment_action dass delete das gesamte Stack-Set und die zugehörigen Stack-Instances gelöscht werden. Wird verwendet, deploy um ein neues Stack-Set zu erstellen, ein vorhandenes Stack-Set zu aktualisieren oder um Stack-Instances für zusätzliche OUs oder Regionen hinzuzufügen oder zu entfernen. Weitere Beispiele finden Sie im Abschnitt Zusätzliche Informationen.

Dieses Muster erstellt individuelle Stack-Sets für jede Umgebung, indem der Umgebungsname zu dem Stack-Set-Namen hinzugefügt wird, den Sie in der Einrichtungskonfigurationsdatei angeben.

App-Entwickler, Dateningenieur

Übernehmen Sie die Änderungen und stellen Sie das Stack-Set bereit.

Übernehmen Sie die Änderungen, die Sie in Ihrer Anwendungsvorlage angegeben haben, und führen Sie das Stack-Set Schritt für Schritt zusammen und stellen Sie es in mehreren Umgebungen bereit:

  1. Speichern Sie alle Ihre Dateien und übertragen Sie die Änderungen in den Feature-Branch Ihres lokalen Anwendungs-Repositorys.

  2. Übertragen Sie den Feature-Branch in das Remote-Repository.

  3. Erstellen Sie einen Pull-Request, um die Änderungen mit dem Haupt-Branch zusammenzuführen.

    Wenn der Pull-Request genehmigt wurde und die Änderungen mit dem Hauptzweig zusammengeführt wurden, wird die CI/CD-Pipeline initiiert.

  4. Wenn die Dev-Deployment-Phase erfolgreich abgeschlossen wurde, überprüfen Sie die CloudFormation Konsole auf der Registerkarte Service-Managed. StackSets

    Sie werden ein neues Stack-Set mit dem Suffix sehen. dev

  5. Suchen Sie in den CodeBuild Protokollen für die Dev-Deployment-Phase nach Problemen.

  6. Stellen Sie das Stack-Set in den Test- und Produktionsumgebungen bereit, indem Sie Ihre Genehmigungsberechtigten bitten, die Bereitstellungen für diese Phasen zu genehmigen, und die Schritte 5 und 6 wiederholen. Die Stacksets für die Test- und Produktionsumgebungen haben die test Suffixe und. prod

App-Entwickler, Dateningenieur

Fehlerbehebung

ProblemLösung

Die Bereitstellung schlägt mit der folgenden Ausnahme fehl:

Ändern Sie den Namen der Vorlagenparameterdatei in -parameter- .json mit, Standardnamen sind nicht zulässig <application name><evn>

Die CloudFormation Vorlagenparameterdateien müssen der angegebenen Namenskonvention entsprechen. Aktualisieren Sie die Namen der Parameterdateien und versuchen Sie es erneut.

Die Bereitstellung schlägt mit der folgenden Ausnahme fehl:

Ändern Sie den Namen der CloudFormation Vorlage in .yml. Die Standardwerte template.yml oder template.yaml sind nicht zulässig <application name>

Der CloudFormation Vorlagenname muss der angegebenen Benennungskonvention entsprechen. Aktualisieren Sie den Dateinamen und versuchen Sie es erneut.

Die Bereitstellung schlägt mit der folgenden Ausnahme fehl:

Für die Umgebung {Umgebungsname} wurden keine gültige CloudFormation Vorlage und die zugehörige Parameterdatei gefunden

Überprüfen Sie die Dateibenennungskonventionen für die CloudFormation Vorlage und ihre Parameterdatei für die angegebene Umgebung.

Die Bereitstellung schlägt mit der folgenden Ausnahme fehl:

In der Einrichtungskonfigurationsdatei wurde eine ungültige Bereitstellungsaktion angegeben. Gültige Optionen sind „Bereitstellen“ und „Löschen“.

Sie haben einen ungültigen Wert für den deployment_action Parameter in der Einrichtungskonfigurationsdatei angegeben. Der Parameter hat zwei gültige Werte: deploy unddelete. Wird verwendetdeploy, um die Stack-Sets und die zugehörigen Stack-Instances zu erstellen und zu aktualisieren. deleteNur verwenden, wenn Sie das gesamte Stack-Set und die zugehörigen Stack-Instances entfernen möchten.

Zugehörige Ressourcen

Zusätzliche Informationen

Flussdiagramm

Das folgende Flussdiagramm zeigt die Ablaufsteuerung und die Hierarchie der API-Aufrufe, die durch das benutzerdefinierte Skript implementiert werden, um die Bereitstellung von Stacksets zu automatisieren.

Flusskontrolle und API-Aufrufe, implementiert durch ein Python-Skript

Beispiele für Konfigurationsdateien für die Bereitstellung

Ein neues Stack-Set erstellen

Die folgende Einrichtungskonfigurationsdatei erstellt ein neues Stack-Set, das sample-stack-set in der AWS-Region us-east-1 in drei Organisationseinheiten aufgerufen wird.

{ "deployment_action": "deploy", "stack_set_name": "sample-stack-set", "stack_set_desciption": "this is a sample stack set", "deployment_targets": { "dev": { "org_units": ["dev-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" }, "test": { "org_units": ["test-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" }, "prod": { "org_units": ["prod-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" } }, "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"], "auto_deployement": "True", "retain_stacks_on_account_removal": "True", "region_deployment_concurrency": "PARALLEL" }

Bereitstellung eines vorhandenen Stack-Sets in einer anderen Organisationseinheit

Wenn Sie die im vorherigen Beispiel gezeigte Konfiguration bereitstellen und das Stack-Set in einer zusätzlichen Organisationseinheit bereitstellen möchten, die dev-org-unit-2 in der Entwicklungsumgebung aufgerufen wird, könnte die Einrichtungskonfigurationsdatei wie folgt aussehen.

{ "deployment_action": "deploy", "stack_set_name": "sample-stack-set", "stack_set_desciption": "this is a sample stack set", "deployment_targets": { "dev": { "org_units": ["dev-org-unit-1", "dev-org-unit-2"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" }, "test": { "org_units": ["test-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" }, "prod": { "org_units": ["prod-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" } }, "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"], "auto_deployement": "True", "retain_stacks_on_account_removal": "True", "region_deployment_concurrency": "PARALLEL" }

Bereitstellung eines vorhandenen Stack-Sets in einer anderen AWS-Region

Wenn Sie die im vorherigen Beispiel gezeigte Konfiguration bereitstellen und das Stack-Set in einer zusätzlichen AWS-Region (us-east-2) in der Entwicklungsumgebung für zwei Organisationseinheiten (dev-org-unit-1unddev-org-unit-2) bereitstellen möchten, könnte die Einrichtungskonfigurationsdatei wie folgt aussehen.

Hinweis: Die Ressourcen in der CloudFormation Vorlage müssen gültig und regionsspezifisch sein.

{ "deployment_action": "deploy", "stack_set_name": "sample-stack-set", "stack_set_desciption": "this is a sample stack set", "deployment_targets": { "dev": { "org_units": ["dev-org-unit-1", "dev-org-unit-2"], "regions": ["us-east-1", "us-east-2"], "filter_accounts": [], "filter_type": "" }, "test": { "org_units": ["test-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" }, "prod": { "org_units": ["prod-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" } }, "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"], "auto_deployement": "True", "retain_stacks_on_account_removal": "True", "region_deployment_concurrency": "PARALLEL" }

Entfernen einer Stack-Instance aus einer OU- oder AWS-Region

Nehmen wir an, dass die im vorherigen Beispiel gezeigte Bereitstellungskonfiguration bereitgestellt wurde. Die folgende Konfigurationsdatei entfernt die Stack-Instances aus beiden Regionen der OUdev-org-unit-2.

{ "deployment_action": "deploy", "stack_set_name": "sample-stack-set", "stack_set_desciption": "this is a sample stack set", "deployment_targets": { "dev": { "org_units": ["dev-org-unit-1"], "regions": ["us-east-1", "us-east-2"], "filter_accounts": [], "filter_type": "" }, "test": { "org_units": ["test-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" }, "prod": { "org_units": ["prod-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" } }, "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"], "auto_deployement": "True", "retain_stacks_on_account_removal": "True", "region_deployment_concurrency": "PARALLEL" }

Die folgende Konfigurationsdatei entfernt die Stack-Instance aus der AWS-Region us-east-1 für beide Organisationseinheiten in der Entwicklungsumgebung.    

{ "deployment_action": "deploy", "stack_set_name": "sample-stack-set", "stack_set_desciption": "this is a sample stack set", "deployment_targets": { "dev": { "org_units": ["dev-org-unit-1", "dev-org-unit-2"], "regions": ["us-east-2"], "filter_accounts": [], "filter_type": "" }, "test": { "org_units": ["test-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" }, "prod": { "org_units": ["prod-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" } }, "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"], "auto_deployement": "True", "retain_stacks_on_account_removal": "True", "region_deployment_concurrency": "PARALLEL" }

Das gesamte Stack-Set wird gelöscht

Die folgende Einrichtungskonfigurationsdatei löscht das gesamte Stack-Set und alle zugehörigen Stack-Instances.

{ "deployment_action": “delete”, "stack_set_name": "sample-stack-set", "stack_set_desciption": "this is a sample stack set", "deployment_targets": { "dev": { "org_units": ["dev-org-unit-1", "dev-org-unit-2"], "regions": ["us-east-2"], "filter_accounts": [], "filter_type": "" }, "test": { "org_units": ["test-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" }, "prod": { "org_units": ["prod-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" } }, "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"], "auto_deployement": "True", "retain_stacks_on_account_removal": "True", "region_deployment_concurrency": "PARALLEL" }

Ein Konto von der Bereitstellung ausschließen

 Die folgende Einrichtungskonfigurationsdatei schließt das Konto111122223333, das Teil der Organisationseinheit istdev-org-unit-1, von der Bereitstellung aus.

{ "deployment_action": "deploy", "stack_set_name": "sample-stack-set", "stack_set_desciption": "this is a sample stack set", "deployment_targets": { "dev": { "org_units": ["dev-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": ["111122223333"], "filter_type": "DIFFERENCE" }, "test": { "org_units": ["test-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" }, "prod": { "org_units": ["prod-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" } }, "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"], "auto_deployement": "True", "retain_stacks_on_account_removal": "True", "region_deployment_concurrency": "PARALLEL" }

Bereitstellung der Anwendung für eine Teilmenge von Konten in einer Organisationseinheit

Mit der folgenden Einrichtungskonfigurationsdatei wird die Anwendung nur für drei Konten (111122223333444455556666, und777788889999) in der Organisationseinheit bereitgestellt. dev-org-unit-1

{ "deployment_action": "deploy", "stack_set_name": "sample-stack-set", "stack_set_desciption": "this is a sample stack set", "deployment_targets": { "dev": { "org_units": ["dev-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": ["111122223333", "444455556666", "777788889999"], "filter_type": "INTERSECTION" }, "test": { "org_units": ["test-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" }, "prod": { "org_units": ["prod-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" } }, "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"], "auto_deployement": "True", "retain_stacks_on_account_removal": "True", "region_deployment_concurrency": "PARALLEL" }