

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.

# Stellen Sie mithilfe von AWS CodePipeline, AWS und AWS Code in mehreren CodeCommit AWS-Regionen bereit CodeBuild
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild"></a>

*Anand Krishna Varanasi, Amazon Web Services*

## Zusammenfassung
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild-summary"></a>

Dieses Muster zeigt, wie mithilfe von AWS eine Infrastruktur oder Architektur in mehreren Amazon Web Services (AWS) -Regionen aufgebaut werden kann CloudFormation. Es umfasst Continuous Integration (CI) /Continuous Deployment (CD) in mehreren AWS-Regionen für schnellere Bereitstellungen. ****Die Schritte in diesem Muster wurden beispielsweise für die Erstellung eines CodePipeline AWS-Jobs zur Bereitstellung in drei AWS-Regionen getestet. Sie können die Anzahl der Regionen je nach Anwendungsfall ändern.

## Voraussetzungen und Einschränkungen
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto.
+ 
  + Eine CodeBuild Rolle bei *AmazonS3 FullAccess* und *CloudWatchFullAccess*den Richtlinien. Diese Richtlinien ermöglichen CodeBuild den Zugriff auf die Überwachung von AWS-Ereignissen CodeCommit über Amazon CloudWatch und die Nutzung von Amazon Simple Storage Service (Amazon S3) als Artefaktspeicher.
  + Eine CloudFormation AWS-Rolle mit den folgenden Richtlinien, die AWS CloudFormation in der letzten Build-Phase die Möglichkeit geben, AWS Lambda-Funktionen zu erstellen oder zu aktualisieren, CloudWatch Amazon-Protokolle zu übertragen oder zu überwachen und Änderungssätze zu erstellen und zu aktualisieren. 
    + *AWSLambdaFullAccess*
    + *AWSCodeDeployFullAccess*
    + *CloudWatchFullAccess*
    + *AWSCloudFormationFullAccess*
    + *AWSCodePipelineFullAccess*
**Anmerkung**  
Zwei AWS Identity and Access Management (IAM) -Rollen für AWS CodeBuild und AWS CloudFormation mit geeigneten Richtlinien für CodeBuild die parallel Ausführung der CI-Aufgaben wie Testen, Bündeln, Verpacken der Artefakte und Bereitstellung in mehreren AWS-Regionen.  Überprüfen Sie die von erstellten Richtlinien, CodePipeline um sicherzustellen, dass AWS in den CI CodeBuild - und CD-Phasen CloudFormation über die entsprechenden Berechtigungen verfügt.

## Architektur
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild-architecture"></a>

![\[Ein CodePipeline AWS-Job, der in drei AWS-Regionen bereitgestellt wird.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/d44c393c-7243-4d4e-8b84-88a8503af98f/images/5c27fc35-5e62-4292-8b18-a7bc7faf2631.png)


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

1. Sie senden Ihren Code an ein Repository. CodeCommit 

1. Ruft beim Empfang einer Codeaktualisierung oder CodeCommit eines Commits ein CloudWatch Ereignis auf, das wiederum einen CodePipeline Job startet.

1. CodePipeline aktiviert das CI, das von verwaltet wird. CodeBuild Die folgenden Aufgaben werden ausgeführt.
   + Testen der CloudFormation AWS-Vorlagen (optional)
   + Paketierung der CloudFormation AWS-Vorlagen für jede Region, die in der Bereitstellung enthalten ist. Dieses Muster wird beispielsweise parallel in drei AWS-Regionen bereitgestellt, sodass die CloudFormation AWS-Vorlagen in drei S3-Buckets CodeBuild gepackt werden, einen in jeder angegebenen Region. Die S3-Buckets werden nur CodeBuild als Artefakt-Repositorys verwendet.

1. CodeBuild packt die Artefakte als Eingabe für die nächste Bereitstellungsphase, die parallel in den drei AWS-Regionen läuft. Wenn Sie eine andere Anzahl von Regionen angeben, CodePipeline erfolgt die Bereitstellung in diesen Regionen.

## Tools
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild-tools"></a>

**Tools**
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) — CodePipeline ist ein Continuous Delivery Service, mit dem Sie die Schritte modellieren, visualisieren und automatisieren können, die für die kontinuierliche Veröffentlichung Ihrer Softwareänderungen erforderlich sind.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) — CodeBuild ist ein vollständig verwalteter Build-Service, der Ihren Quellcode kompiliert, Komponententests durchführt und Artefakte erzeugt, die sofort einsatzbereit sind.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) — CodeCommit ist ein von Amazon Web Services gehosteter Service zur Versionskontrolle, mit dem Sie Ressourcen (wie Quellcode und Binärdateien) privat in der Cloud speichern und verwalten können.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) — AWS CloudFormation ist ein Service, der Sie bei der Modellierung und Einrichtung Ihrer Amazon Web Services Services-Ressourcen unterstützt, sodass Sie weniger Zeit mit der Verwaltung dieser Ressourcen verbringen und sich mehr auf Ihre Anwendungen konzentrieren können, die in AWS ausgeführt werden.
+ [AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) — AWS Identity and Access Management (IAM) ist ein Webservice, mit dem Sie den Zugriff auf AWS-Ressourcen sicher kontrollieren können.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html) — Amazon Simple Storage Service (Amazon S3) ist ein 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.yaml` Datei (Erstellungsphase).

```
---
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
```

## Epen
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild-epics"></a>

### Bereiten Sie den Code und das CodeCommit Repository vor
<a name="prepare-the-code-and-the-codecommit-repository"></a>


| Aufgabe | Description | Erforderliche 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 umfasst im Allgemeinen die AWS CloudFormation - oder AWS-SAM-Vorlagen, Lambda-Code, falls vorhanden, und die CodeBuild `buildspec.yaml` Dateien als Eingabe für AWS CodePipeline. | DevOps | 
| Schieben Sie den Code in das CodeCommit Repository. | Laden Sie im Bereich *Anlagen* 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 | 

### Quellphase: Erstellen Sie die Pipeline
<a name="source-phase-create-the-pipeline"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie den CodePipeline Job. | Wählen Sie in der CodePipeline Konsole die Option **Pipeline erstellen** aus. | DevOps | 
| Geben Sie dem CodePipeline Job einen Namen und wählen Sie die Einstellung für die Servicerolle aus. | Geben Sie einen Namen für den Job ein und behalten Sie die Standardeinstellung für die Servicerolle bei, sodass die Rolle mit den erforderlichen Richtlinien CodePipeline erstellt wird. | DevOps | 
| Geben Sie den Speicherort für den Artefaktspeicher an. | Behalten Sie unter **Erweiterte Einstellungen** die Standardoption bei, sodass ein S3-Bucket CodePipeline erstellt wird, der für die Speicherung von Codeartefakten verwendet wird. Wenn Sie stattdessen einen vorhandenen S3-Bucket verwenden, muss sich der Bucket in der primären Region befinden, die Sie im ersten Epic angegeben haben. | DevOps | 
| Geben Sie den Verschlüsselungsschlüssel an. | Behalten Sie die Standardoption **AWS Managed Key** bei oder entscheiden Sie sich dafür, Ihren eigenen vom Kunden verwalteten AWS Key Management Service (AWS KMS) -Schlüssel zu verwenden. | DevOps | 
| Geben Sie den Quellanbieter an. | Wählen Sie unter **Quellanbieter** die Option **AWS** aus CodeCommit. | DevOps | 
| Geben Sie das Repository an. | Wähle das CodeCommit Repository aus, das du im ersten Epos erstellt hast. Wenn du den Code in einer Filiale platziert hast, wähle die Filiale aus. | DevOps | 
| Geben Sie an, wie Codeänderungen erkannt werden. | Behalten Sie die Standardeinstellung **Amazon CloudWatch Events** als Auslöser für die Änderung bei CodeCommit , um den CodePipeline Job zu starten. | DevOps | 

### Erstellungsphase: Konfigurieren Sie die Pipeline
<a name="build-phase-configure-the-pipeline"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Geben Sie den Build-Anbieter an. | Wählen Sie als 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 | 

### Erstellungsphase: Erstellen und konfigurieren Sie das Projekt
<a name="build-phase-create-and-configure-the-project"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen des Projekts | Wählen Sie **Projekt erstellen** und geben Sie einen Namen für das Projekt ein. | DevOps | 
| Geben Sie das Umgebungsbild 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.Amazon Linux 2 nähert sich dem Ende des Supports. Weitere Informationen finden Sie unter [Amazon Linux FAQs 2.](https://aws.amazon.com/amazon-linux-2/faqs/) | 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 Jobs begonnen haben. (Weitere Informationen finden Sie im Abschnitt *Voraussetzungen*.) | DevOps | 
| Legen Sie zusätzliche Optionen fest. | Behalten Sie für **Timeout** und **Queued Timeout** die Standardwerte bei. Behalten Sie für das 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 die Bereitstellung durchführen möchten, Umgebungsvariablen, indem Sie den S3-Bucket-Namen und den Regionsnamen 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 Standardname ist. `buildspec.yaml` Wenn Sie die Buildspec-Datei umbenannt haben, geben Sie den Namen hier ein. Stellen Sie sicher, dass er dem Namen der Datei entspricht, die sich im Repository befindet. CodeCommit  | DevOps | 
| Geben Sie die Protokollierung an. | Um Protokolle für Amazon CloudWatch Events zu sehen, behalten Sie die Standardeinstellung bei. Sie können auch beliebige Gruppen- oder Logger-Namen definieren. | DevOps | 

### Überspringen Sie die Bereitstellungsphase
<a name="skip-the-deploy-phase"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Überspringen Sie die Bereitstellungsphase und schließen Sie die Erstellung der Pipeline ab. | Wenn Sie die Pipeline einrichten, CodePipeline können Sie nur eine Phase in der Bereitstellungsphase erstellen. Um die Bereitstellung in mehreren AWS-Regionen durchzuführen, überspringen Sie diese Phase. Nachdem die Pipeline erstellt wurde, können Sie mehrere Phasen der Bereitstellungsphase hinzufügen. | DevOps | 

### Bereitstellungsphase: Konfigurieren Sie die Pipeline für die Bereitstellung in der ersten Region
<a name="deploy-phase-configure-the-pipeline-for-deployment-to-the-first-region"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Fügen Sie der Bereitstellungsphase eine Phase hinzu. | Bearbeiten Sie die Pipeline und wählen Sie in der Bereitstellungsphase die Option Phase **hinzufügen** aus. Diese erste Phase ist für die primäre Region vorgesehen. | DevOps | 
| Geben Sie einen Aktionsnamen für die Phase ein. | Geben Sie einen eindeutigen Namen ein, der die erste (primäre) Phase und Region widerspiegelt. <region>Geben Sie beispielsweise **primary\$1 \$1deploy** ein. | DevOps | 
| Geben Sie den Aktionsanbieter an. | Wählen Sie für **Action Provider** die Option 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 das Ergebnis der Erstellungsphase. | DevOps | 
| Geben Sie die Aktion an, die ausgeführt werden soll. | Wählen Sie für **den 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 vom S3-Bucket für die erste (primäre) Region gepackt CodeBuild und dort abgelegt 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\$1IAM, CAPABILITY\$1NAMED\$1IAM, CAPABILITY\$1AUTO\$1EXPAND. | DevOps | 

### Bereitstellungsphase: Konfigurieren Sie die Pipeline für die Bereitstellung in der zweiten Region
<a name="deploy-phase-configure-the-pipeline-for-deployment-to-the-second-region"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Fügen Sie die zweite Phase zur Bereitstellungsphase hinzu. | Um eine Phase für die zweite Region hinzuzufügen, bearbeiten Sie die Pipeline und wählen Sie in der Bereitstellungsphase die Option Phase **hinzufügen** aus. Wichtig: Die zweite Region wird genauso erstellt wie die erste Region, mit Ausnahme der folgenden Werte. | DevOps | 
| Geben Sie einen Aktionsnamen für die zweite Phase ein. | 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 der zweiten Region gepackt CodeBuild und in den S3-Bucket abgelegt wurde. | DevOps | 

### Bereitstellungsphase: Konfigurieren Sie die Pipeline für die Bereitstellung in der dritten Region
<a name="deploy-phase-configure-the-pipeline-for-deployment-to-the-third-region"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Fügen Sie die dritte Phase zur Bereitstellungsphase hinzu. | Um eine Phase für die dritte Region hinzuzufügen, bearbeiten Sie die Pipeline und wählen Sie in der Bereitstellungsphase die Option Phase **hinzufügen** aus. Wichtig: Der Vorgang zum Erstellen der zweiten Region entspricht dem der beiden vorherigen Regionen, mit Ausnahme der folgenden Werte. | DevOps | 
| Geben Sie einen Aktionsnamen für die dritte Phase ein. | 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 der dritten Region gepackt CodeBuild und in den S3-Bucket abgelegt wurde. | DevOps | 

### Bereinigen Sie die Bereitstellung
<a name="clean-up-the-deployment"></a>


| Aufgabe | Description | Erforderliche 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 anschließend die CodePipeline Ressourcen CodeCommit CodeBuild, und aus der primären Region. | DevOps | 

## Zugehörige Ressourcen
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild-resources"></a>
+ [Was ist AWS CodePipeline?](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)
+ [Serverloses AWS-Anwendungsmodell](https://aws.amazon.com/serverless/sam/)
+ [AWS CloudFormation](https://aws.amazon.com/cloudformation/)
+ [Referenz zur CloudFormation AWS-Architekturstruktur für AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference-CloudFormation.html)

## Anlagen
<a name="attachments-d44c393c-7243-4d4e-8b84-88a8503af98f"></a>

[Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip](samples/p-attach/d44c393c-7243-4d4e-8b84-88a8503af98f/attachments/attachment.zip)