Bereitstellen von Code in mehreren AWS-Regionen mithilfe von AWS CodePipeline, AWS CodeCommitund 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.

Bereitstellen von Code in mehreren AWS-Regionen mithilfe von AWS CodePipeline, AWS CodeCommitund AWS CodeBuild

Erstellt von Rama Anand Krishna Varanasi (AWS)

Erstellt von: AWS

Umgebung: PoC oder Pilotprojekt

Technologien: Management und Governance; DevOps

AWS-Services: AWS CodeCommit; AWS CodePipeline; AWS CodeBuild

Übersicht

Dieses Muster zeigt, wie Infrastruktur oder Architektur mithilfe von AWS über mehrere Amazon Web Services (AWS)-Regionen hinweg erstellt werden CloudFormation. Es umfasst kontinuierliche Integration (CI)/kontinuierliche Bereitstellung (CD) in mehreren AWS-Regionen für schnellere Bereitstellungen. Die Schritte in diesem Muster wurden getestet, um einen AWS- CodePipeline Auftrag zur Bereitstellung in drei AWS-Regionen als Beispiel zu erstellen. Sie können die Anzahl der Regionen je nach Anwendungsfall ändern.

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Ein aktives AWS-Konto.

  • Zwei AWS Identity and Access Management (IAM)-Rollen für AWS CodeBuild und AWS CloudFormation mit den richtigen Richtlinien für , CodeBuild um die CI-Aufgaben Tests, Bündelung, Paketierung der Artefakte und Bereitstellung in mehreren AWS-Regionen parallel auszuführen.  Hinweis: Überprüfen Sie die Richtlinien, die von erstellt wurden CodePipeline , um sicherzustellen, dass CodeBuild und AWS über die richtigen Berechtigungen in den CI- und CD-Phasen CloudFormation verfügen.

    • Eine CodeBuild Rolle mit den AmazonS3FullAccess- und -CloudWatchFullAccessRichtlinien. Diese Richtlinien ermöglichen den CodeBuild Zugriff, Ereignisse von AWS CodeCommit über Amazon zu überwachen CloudWatch und Amazon Simple Storage Service (Amazon S3) als Artefaktspeicher zu verwenden.

    • Eine AWS- CloudFormation Rolle mit den folgenden Richtlinien, die AWS in der letzten Build-Phase die Möglichkeit geben CloudFormation, AWS Lambda-Funktionen zu erstellen oder zu aktualisieren, Amazon- CloudWatch Protokolle zu pushen oder zu überwachen und Änderungssätze zu erstellen und zu aktualisieren. 

      • AWSLambdaFullAccess

      • AWSCodeDeployFullAccess

      • CloudWatchFullAccess

      • AWSCloudFormationFullAccess

      • AWSCodePipelineFullAccess

Architektur

Die Architektur und der Workflow dieses Musters für mehrere Regionen umfassen die folgenden Schritte.

  1. Sie senden Ihren Code an ein CodeCommit Repository.

  2. Nach Erhalt einer Codeaktualisierung oder eines Commit CodeCommit ruft ein CloudWatch Ereignis auf, das wiederum einen CodePipeline Auftrag startet.

  3. CodePipeline aktiviert das CI, das von verarbeitet wird CodeBuild. Die folgenden Aufgaben werden ausgeführt.

    • Testen der AWS- CloudFormation Vorlagen (optional)

    • Verpackung der AWS- CloudFormation Vorlagen für jede Region, die in der Bereitstellung enthalten ist. Dieses Muster wird beispielsweise parallel für drei AWS-Regionen bereitgestellt, sodass die AWS- CloudFormation Vorlagen in drei S3-Buckets CodeBuild verpackt, einen in jeder angegebenen Region. Die S3-Buckets werden von nur CodeBuild als Artefakt-Repositorys verwendet.

  4. CodeBuild packt die Artefakte als Eingabe für die nächste Bereitstellungsphase, die parallel in den drei AWS-Regionen ausgeführt wird. Wenn Sie eine andere Anzahl von Regionen angeben, CodePipeline wird in diesen Regionen bereitgestellt.

Tools

Tools

  • AWS CodePipeline – CodePipeline ist ein kontinuierlicher Bereitstellungsservice, mit dem Sie die Schritte modellieren, visualisieren und automatisieren können, die erforderlich sind, um Ihre Softwareänderungen kontinuierlich freizugeben.

  • AWS CodeBuild – CodeBuild ist ein vollständig verwalteter Build-Service, der Ihren Quellcode kompiliert, Einheitentests ausführt und Artefakte erzeugt, die bereitgestellt werden können.

  • AWS CodeCommit – CodeCommit ist ein von Amazon Web Services gehosteter Service zur Versionskontrolle, mit dem Sie Komponenten (wie Quellcode und Binärdateien) privat in der Cloud speichern und verwalten können.

  • AWS CloudFormation – AWS CloudFormation ist ein Service, der Sie bei der Modellierung und Einrichtung Ihrer Amazon Web Services-Ressourcen unterstützt, sodass Sie weniger Zeit für die Verwaltung dieser Ressourcen aufwenden müssen und sich stattdessen mehr auf Ihre Anwendungen konzentrieren können, die in AWS ausgeführt werden.

  • AWS Identity and Access Management – AWS Identity and Access Management (IAM) ist ein Webservice, mit dem Sie den Zugriff auf AWS-Ressourcen sicher steuern können.

  • Amazon S3 – Amazon Simple Storage Service (Amazon S3) ist Speicher für das Internet. Der Service ist darauf ausgelegt, Cloud Computing für Entwickler zu erleichtern.

Code

Der folgende Beispielcode bezieht sich auf die -BuildSpec.yamlDatei (Build-Phase).

--- artifacts: discard-paths: true files: - packaged-first-region.yaml - packaged-second-region.yaml - packaged-third-region.yaml phases: build: commands: - echo "********BUILD PHASE - CF PACKAGING**********" - "aws cloudformation package --template-file sam-template.yaml --s3-bucket $S3_FIRST_REGION --output-template-file packaged-first-region.yaml --region $FIRST_REGION" - "aws cloudformation package --template-file sam-template.yaml --s3-bucket $S3_SECOND_REGION --output-template-file packaged-second-region.yaml --region $SECOND_REGION" - "aws cloudformation package --template-file sam-template-anand.yaml --s3-bucket $S3_THIRD_REGION --output-template-file packaged-third-region.yaml --region $THIRD_REGION" install: commands: - echo "********BUILD PHASE - PYTHON SETUP**********" runtime-versions: python: 3.8 post_build: commands: - echo "********BUILD PHASE - PACKAGING COMPLETION**********" pre_build: commands: - echo "********BUILD PHASE - DEPENDENCY SETUP**********" - "npm install --silent --no-progress" - echo "********BUILD PHASE - DEPENDENCY SETUP DONE**********" version: 0.2

Polen

AufgabeBeschreibungErforderliche Fähigkeiten
Wählen Sie die primäre AWS-Region für die Bereitstellung aus.

Melden Sie sich bei Ihrem AWS-Konto an und wählen Sie die primäre Region für die Bereitstellung aus. Das CodeCommit Repository wird sich in der primären Region befinden.

DevOps
Erstellen Sie das CodeCommit Repository.

Erstellen Sie das CodeCommit Repository und übertragen Sie den erforderlichen Code hinein. Der Code enthält im Allgemeinen die AWS- CloudFormation oder AWS SAM-Vorlagen, gegebenenfalls den Lambda-Code und die CodeBuild buildspec.yaml Dateien als Eingabe für AWS CodePipeline.

DevOps
Übertragen Sie den Code in das CodeCommit Repository.

Laden Sie im Abschnitt Anhänge den Code für dieses Beispiel herunter und übertragen Sie dann den erforderlichen Code hinein. Im Allgemeinen kann der Code AWS- CloudFormation oder AWS SAM-Vorlagen, Lambda-Code und die CodeBuild buildspec.yaml Dateien als Eingabe für die Pipeline enthalten.

DevOps
AufgabeBeschreibungErforderliche Fähigkeiten
Erstellen Sie den CodePipeline Auftrag.

Wählen Sie in der - CodePipeline Konsole Pipeline erstellen aus.

DevOps
Benennen Sie den CodePipeline Auftrag und wählen Sie die Servicerolleneinstellung aus.

Geben Sie einen Namen für den Auftrag ein und behalten Sie die Standardeinstellung für die Servicerolle bei, sodass die Rolle mit den erforderlichen Richtlinien CodePipeline erstellt.

DevOps
Geben Sie den Speicherort für den Artefaktspeicher an.

Behalten Sie unter Erweiterte Einstellungen die Standardoption bei, sodass einen S3-Bucket CodePipeline erstellt, der für die Speicherung von Codeartefakten verwendet werden soll. Wenn Sie stattdessen einen vorhandenen S3-Bucket verwenden, muss sich der Bucket in der primären Region befinden, die Sie im ersten Epi angegeben haben.

DevOps
Geben Sie den Verschlüsselungsschlüssel an.

Behalten Sie die Standardoption Standard-AWS-verwalteter Schlüssel bei oder wählen Sie Ihren eigenen vom Kunden verwalteten AWS Key Management Service (AWS KMS)-Schlüssel.

DevOps
Geben Sie den Quellanbieter an.

Wählen Sie unter Quellanbieter die Option AWS aus CodeCommit.

DevOps
Geben Sie das Repository an.

Wählen Sie das CodeCommit Repository aus, das Sie im ersten Epi erstellt haben. Wenn Sie den Code in einer Verzweigung platziert haben, wählen Sie die Verzweigung aus.

DevOps
Geben Sie an, wie Codeänderungen erkannt werden.

Behalten Sie den Standardwert Amazon CloudWatch Events als Änderungsauslöser für bei, CodeCommit um den CodePipeline Auftrag zu starten.

DevOps
AufgabeBeschreibungErforderliche Fähigkeiten
Geben Sie den Build-Anbieter an.

Wählen Sie für den Build-Anbieter AWS aus CodeBuild.

DevOps
Geben Sie die AWS-Region an.

Wählen Sie die primäre Region aus, die Sie im ersten Epic angegeben haben.

DevOps
AufgabeBeschreibungErforderliche Fähigkeiten
Erstellen des Projekts

Wählen Sie Projekt erstellen und geben Sie einen Namen für das Projekt ein.

DevOps
Geben Sie das Umgebungs-Image an.

Verwenden Sie für diese Musterdemonstration das standardmäßige CodeBuild verwaltete Image. Sie haben auch die Möglichkeit, ein benutzerdefiniertes Docker-Image zu verwenden, falls Sie eines haben.

DevOps
Geben Sie das Betriebssystem an.

Wählen Sie entweder Amazon Linux 2 oder Ubuntu aus.

DevOps
Geben Sie die Servicerolle an.

Wählen Sie die Rolle aus, für die Sie erstellt haben, CodeBuild bevor Sie mit der Erstellung des CodePipeline Auftrags begonnen haben. (Siehe Abschnitt Voraussetzungen.)

DevOps
Legen Sie zusätzliche Optionen fest.

Behalten Sie für Timeout und Timeout in der Warteschlange die Standardwerte bei. Behalten Sie für Zertifikat die Standardeinstellung bei, es sei denn, Sie haben ein benutzerdefiniertes Zertifikat, das Sie verwenden möchten.

DevOps
Erstellen Sie die Umgebungsvariablen.

Erstellen Sie für jede AWS-Region, in der Sie bereitstellen möchten, Umgebungsvariablen, indem Sie den Namen des S3-Buckets und den Namen der Region angeben (z. B. us-east-1).

DevOps
Geben Sie den Namen der buildspec-Datei an, falls es sich nicht um buildspec.yml handelt.

Lassen Sie dieses Feld leer, wenn der Dateiname der Standardwert ist, buildspec.yaml. Wenn Sie die buildspec-Datei umbenannt haben, geben Sie hier den Namen ein. Stellen Sie sicher, dass er mit dem Namen der Datei übereinstimmt, die sich im CodeCommit Repository befindet.

DevOps
Geben Sie die Protokollierung an.

Um Protokolle für Amazon CloudWatch Events anzuzeigen, behalten Sie die Standardeinstellung bei. Oder Sie können bestimmte Gruppen- oder Logger-Namen definieren.

DevOps
AufgabeBeschreibungErforderliche Fähigkeiten
Überspringen Sie die Bereitstellungsphase und schließen Sie die Erstellung der Pipeline ab.

Wenn Sie die Pipeline einrichten, CodePipeline können Sie in der Bereitstellungsphase nur eine Phase erstellen. Um in mehreren AWS-Regionen bereitzustellen, überspringen Sie diese Phase. Nachdem die Pipeline erstellt wurde, können Sie mehrere Phasen der Bereitstellung hinzufügen.

DevOps
AufgabeBeschreibungErforderliche Fähigkeiten
Fügen Sie der Bereitstellungsphase eine Stufe hinzu.

Bearbeiten Sie die Pipeline und wählen Sie in der Bereitstellungsphase Stufe hinzufügen aus. Diese erste Phase bezieht sich auf die primäre Region.

DevOps
Geben Sie einen Aktionsnamen für die Stufe an.

Geben Sie einen eindeutigen Namen ein, der die erste (primäre) Phase und Region widerspiegelt. Geben Sie beispielsweise primary_<region>_deploy ein.

DevOps
Geben Sie den Aktionsanbieter an.

Wählen Sie für Aktionsanbieter AWS aus CloudFormation.

DevOps
Konfigurieren Sie die Region für die erste Phase.

Wählen Sie die erste (primäre) Region aus, dieselbe Region, in der CodePipeline und eingerichtet CodeBuild sind. Dies ist die primäre Region, in der Sie den Stack bereitstellen möchten.

DevOps
Geben Sie das Eingabeartefakt an.

Wählen Sie BuildArtifact. Dies ist die Ausgabe der Build-Phase.

DevOps
Geben Sie die Aktion an, die ausgeführt werden soll.

Wählen Sie für Aktionsmodus die Option Stack erstellen oder aktualisieren aus.

DevOps
Geben Sie einen Namen für den CloudFormation Stack ein.DevOps
Geben Sie die Vorlage für die erste Region an.

Wählen Sie den regionsspezifischen Paketnamen aus, der von gepackt CodeBuild und für die erste (primäre) Region in den S3-Bucket verschoben wurde.

DevOps
Geben Sie die Funktionen an.

Funktionen sind erforderlich, wenn die Stack-Vorlage IAM-Ressourcen enthält oder wenn Sie einen Stack direkt aus einer Vorlage erstellen, die Makros enthält. Verwenden Sie für dieses Muster CAPABILITY_IAM, CAPABILITY_NAMED_IAM, CAPABILITY_AUTO_EXPAND.

DevOps
AufgabeBeschreibungErforderliche Fähigkeiten
Fügen Sie die zweite Phase der Bereitstellungsphase hinzu.

Um eine Stufe für die zweite Region hinzuzufügen, bearbeiten Sie die Pipeline und wählen Sie in der Bereitstellungsphase Stufe hinzufügen aus. Wichtig: Der Prozess zum Erstellen der zweiten Region entspricht dem der ersten Region, mit Ausnahme der folgenden Werte.

DevOps
Geben Sie einen Aktionsnamen für die zweite Phase an.

Geben Sie einen eindeutigen Namen ein, der die zweite Phase und die zweite Region widerspiegelt.

DevOps
Konfigurieren Sie die Region für die zweite Phase.

Wählen Sie die zweite Region aus, in der Sie den Stack bereitstellen möchten.

DevOps
Geben Sie die Vorlage für die zweite Region an.

Wählen Sie den regionsspezifischen Paketnamen aus, der von verpackt CodeBuild und in den S3-Bucket für die zweite Region verschoben wurde.

DevOps
AufgabeBeschreibungErforderliche Fähigkeiten
Fügen Sie die dritte Phase der Bereitstellungsphase hinzu.

Um eine Stufe für die dritte Region hinzuzufügen, bearbeiten Sie die Pipeline und wählen Sie in der Bereitstellungsphase Stufe hinzufügen aus. Wichtig: Der Prozess zum Erstellen der zweiten Region ist derselbe wie der der beiden vorherigen Regionen, mit Ausnahme der folgenden Werte.

DevOps
Geben Sie einen Aktionsnamen für die dritte Stufe an.

Geben Sie einen eindeutigen Namen ein, der die dritte Phase und die dritte Region widerspiegelt.

DevOps
Konfigurieren Sie die Region für die dritte Stufe.

Wählen Sie die dritte Region aus, in der Sie den Stack bereitstellen möchten.

DevOps
Geben Sie die Vorlage für die dritte Region an.

Wählen Sie den regionsspezifischen Paketnamen aus, der von verpackt CodeBuild und in den S3-Bucket für die dritte Region verschoben wurde.

DevOps
AufgabeBeschreibungErforderliche Fähigkeiten
Löschen Sie die AWS-Ressourcen.

Um die Bereitstellung zu bereinigen, löschen Sie die CloudFormation Stacks in jeder Region. Löschen Sie dann die CodePipeline Ressourcen CodeCommit CodeBuild, und aus der primären Region.

DevOps

Zugehörige Ressourcen

Anlagen

Um auf zusätzliche Inhalte zuzugreifen, die diesem Dokument zugeordnet sind, entpacken Sie die folgende Datei: attachment.zip