

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.

# Serviceübergreifende Beispiele für CodeBuild
<a name="cross-service-samples"></a>

Sie können diese serviceübergreifenden Beispiele verwenden, um mit folgenden Dingen zu experimentieren: AWS CodeBuild

[Amazon ECR-Beispiel](sample-ecr.md)  
Verwendet ein Docker-Image in einem Amazon ECR-Repository, um mit Apache Maven eine einzelne JAR-Datei zu erstellen. Die Beispielanweisungen zeigen Ihnen, wie Sie ein Docker-Image erstellen und an Amazon ECR übertragen, ein Go-Projekt erstellen, das Projekt erstellen, das Projekt ausführen und Berechtigungen einrichten, um eine Verbindung CodeBuild zu Amazon ECR herzustellen.

[Amazon EFS-Beispiel](sample-efs.md)  
Zeigt, wie eine Buildspec-Datei so konfiguriert wird, dass ein CodeBuild Projekt auf einem Amazon EFS-Dateisystem bereitgestellt und darauf aufgebaut wird. Die Beispielanweisungen zeigen Ihnen, wie Sie eine Amazon VPC erstellen, ein Dateisystem in der Amazon VPC erstellen, ein Projekt erstellen und erstellen, das die Amazon VPC verwendet, und anschließend die generierte Projektdatei und die Variablen überprüfen. 

[AWS CodePipeline Proben](sample-codepipeline.md)  
Zeigt, wie Sie AWS CodePipeline einen Build mit Batch-Builds sowie mehreren Eingabequellen und mehreren Ausgabeartefakten erstellen können. In diesem Abschnitt sind JSON-Beispieldateien enthalten, die Pipeline-Strukturen zeigen, die Batch-Builds mit separaten Artefakten und kombinierten Artefakten erstellen. Es wird ein zusätzliches JSON-Beispiel bereitgestellt, das die Pipeline-Struktur mit mehreren Eingabequellen und mehreren Ausgabeartefakten zeigt.

[AWS Config Probe](how-to-integrate-config.md)  
Zeigt, wie man es einrichtet. AWS Config Führt auf, welche CodeBuild Ressourcen nachverfolgt werden, und beschreibt, wie CodeBuild Projekte nachgeschlagen werden können AWS Config. Die Beispielanweisungen zeigen Ihnen die Voraussetzungen für die Integration mit AWS Config, die Schritte zur Einrichtung AWS Config und die Schritte zum Nachschlagen von CodeBuild Projekten und Daten AWS Config. 

[Build-Benachrichtigungsbeispiel](sample-build-notifications.md)  
Verwendet Apache Maven, um eine einzelne JAR-Datei zu erstellen. Sendet eine Build-Benachrichtigung an Abonnenten eines Amazon SNS SNS-Themas. Die Beispielanweisungen zeigen Ihnen, wie Sie Berechtigungen einrichten, um mit Amazon SNS kommunizieren zu CodeBuild können CloudWatch, und wie Sie CodeBuild Themen in Amazon SNS erstellen und identifizieren, wie Sie Empfänger für das Thema abonnieren und wie Sie Regeln in einrichten. CloudWatch

# Amazon ECR-Beispiel für CodeBuild
<a name="sample-ecr"></a>

In diesem Beispiel wird ein Docker-Image in einem Image-Repository von Amazon Elastic Container Registry (Amazon ECR) verwendet, um ein Go-Beispielprojekt zu erstellen.

**Wichtig**  
Die Ausführung dieses Beispiels kann dazu führen, dass Ihr AWS Konto belastet wird. Dazu gehören mögliche Gebühren für AWS CodeBuild und für AWS Ressourcen und Aktionen im Zusammenhang mit Amazon S3 AWS KMS, CloudWatch Logs und Amazon ECR. Weitere Informationen finden Sie unter [CodeBuild Preise](https://aws.amazon.com/codebuild/pricing), [Amazon S3 S3-Preise](https://aws.amazon.com/s3/pricing), [AWS Key Management Service Preise](https://aws.amazon.com/kms/pricing), [ CloudWatch Amazon-Preise](https://aws.amazon.com/cloudwatch/pricing) und [Amazon Elastic Container Registry — Preise](https://aws.amazon.com/ecr/pricing).

**Topics**
+ [Führen Sie das Amazon ECR-Beispiel aus](#sample-ecr-running)

## Führen Sie das Amazon ECR-Beispiel aus
<a name="sample-ecr-running"></a>

Verwenden Sie die folgenden Anweisungen, um das Amazon ECR-Beispiel für CodeBuild auszuführen.

**So führen Sie das Beispiel aus**

1. Um das Docker-Image zu erstellen und in Ihr Image-Repository in Amazon ECR zu übertragen, führen Sie die Schritte im [Führen Sie das Beispiel „Docker-Image in Amazon ECR veröffentlichen“ aus](sample-docker.md#sample-docker-running) Abschnitt der aus. [Beispiel für „Docker-Image auf Amazon ECR veröffentlichen“](sample-docker.md)

1. Erstellen eines Go-Projekts: 

   1. Erstellen Sie die Dateien wie in den [Go-Projektdateien](#sample-ecr-go-project-files) Abschnitten [Go-Projektstruktur](#ecr-sample-go-project-file-structure) und in diesem Thema beschrieben und laden Sie sie dann in einen S3-Eingabe-Bucket oder ein AWS CodeCommit, GitHub, oder Bitbucket-Repository hoch. 
**Wichtig**  
Laden Sie nicht `(root directory name)` hoch, sondern nur die Dateien in `(root directory name)`.   
Wenn Sie einen S3-Empfangs-Bucket verwenden, sollten Sie eine ZIP-Datei erstellen, die die Dateien enthält, und diese dann in den Empfangs-Bucket hochladen. Fügen Sie `(root directory name)` nicht zur ZIP-Datei hinzu, sondern nur die Dateien in `(root directory name)`.

   1. Erstelle ein Build-Projekt, führe den Build aus und sieh dir die zugehörigen Build-Informationen an.

      Wenn Sie das AWS CLI Build-Projekt mit erstellen, sieht die Eingabe des `create-project` Befehls im JSON-Format möglicherweise ähnlich aus. (Ersetzen Sie die Platzhalter durch Ihre eigenen Werte.)

      ```
      {
        "name": "sample-go-project",
        "source": {
          "type": "S3",
          "location": "codebuild-region-ID-account-ID-input-bucket/GoSample.zip"
        },
        "artifacts": {
          "type": "S3",
          "location": "codebuild-region-ID-account-ID-output-bucket",
          "packaging": "ZIP",
          "name": "GoOutputArtifact.zip"
        },
        "environment": {
          "type": "LINUX_CONTAINER",
          "image": "aws/codebuild/standard:5.0",
          "computeType": "BUILD_GENERAL1_SMALL"
        },
        "serviceRole": "arn:aws:iam::account-ID:role/role-name",
        "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID"
      }
      ```

   1. Zum Abrufen des Build-Ausgabeartefakts, öffnen Sie Ihren S3-Ausgabe-Bucket.

   1. Laden Sie die Datei `GoOutputArtifact.zip` auf Ihren lokalen Computer oder Ihre lokale Instance herunter. Extrahieren Sie anschließend den Inhalt der Datei . Rufen Sie im extrahierten Inhalt die Datei `hello` auf. 

1.  Wenn eine der folgenden Bedingungen zutrifft, müssen Sie Ihrem Image-Repository in Amazon ECR Berechtigungen hinzufügen, damit das zugehörige Docker-Image in die Build-Umgebung abgerufen werden AWS CodeBuild kann. 
   +  Ihr Projekt verwendet CodeBuild Anmeldeinformationen, um Amazon ECR-Bilder abzurufen. Dies wird durch den Wert von `CODEBUILD` im Attribut `imagePullCredentialsType` Ihrer `ProjectEnvironment` angezeigt. 
   +  Ihr Projekt verwendet ein kontoübergreifendes Amazon ECR-Image. In diesem Fall muss Ihr Projekt seine Servicerolle verwenden, um Amazon ECR-Images abzurufen. Um dieses Verhalten zu aktivieren, setzen Sie das Attribut `imagePullCredentialsType` Ihrer `ProjectEnvironment` auf `SERVICE_ROLE`. 

   1. Öffnen Sie die Amazon ECR-Konsole unter [https://console.aws.amazon.com/ecr/](https://console.aws.amazon.com/ecr/).

   1. Klicken Sie in der Liste der Repository-Namen den Namen des Repositories aus, das Sie erstellt oder ausgewählt haben.

   1. Wählen Sie im Navigationsbereich **Permissions (Berechtigungen)** und dann **Edit (Bearbeiten)** aus. Klicken Sie anschließend auf **Add statement (Anweisung hinzufügen)**.

   1. Geben Sie in **Statement name** einen Bezeichner (z. B. **CodeBuildAccess**) ein.

   1. Für **Effect (Effekt)** lassen Sie **Allow (Zulassen)** ausgewählt. Dies zeigt an, dass Sie den Zugriff auf ein anderes AWS -Konto zulassen möchten.

   1. Wählen Sie für **Principal (Prinzipal)** eine der folgenden Vorgehensweisen:
      + Wenn Ihr Projekt CodeBuild Anmeldeinformationen verwendet, um ein Amazon ECR-Image abzurufen, geben **codebuild.amazonaws.com** Sie im Feld **Service Principal** den folgenden Wert ein. 
      + Wenn Ihr Projekt ein IDs kontoübergreifendes Amazon ECR-Image verwendet IDs, geben Sie **AWS unter Konto** die AWS Konten ein, denen Sie Zugriff gewähren möchten.

   1. Überspringen Sie die Liste **All IAM entities**.

   1. **Wählen Sie **unter Aktion** die Aktionen, die nur abgerufen werden können: ecr:GetDownloadUrlForLayer, **ecr:** und **ecr**: aus. BatchGetImage BatchCheckLayerAvailability**

   1. Fügen Sie **unter Bedingungen Folgendes hinzu**:

      ```
      {
         "StringEquals":{
            "aws:SourceAccount":"<AWS-account-ID>",
            "aws:SourceArn":"arn:aws:codebuild:<region>:<AWS-account-ID>:project/<project-name>"
         }
      }
      ```

   1. Wählen Sie **Speichern**.

      Diese Richtlinie wird in **Permissions (Berechtigungen)** angezeigt. Der Prinzipal entspricht dem, was Sie in Schritt 3 dieses Verfahrens für **Principal (Prinzipal)** eingegeben haben:
      + Wenn Ihr Projekt CodeBuild Anmeldeinformationen verwendet, um ein Amazon ECR-Image abzurufen, `"codebuild.amazonaws.com"` wird es unter **Service Principals** angezeigt.
      + **Wenn Ihr Projekt ein kontoübergreifendes Amazon ECR-Image verwendet, wird die ID des AWS Kontos, dem Sie Zugriff gewähren möchten, unter AWS Konto angezeigt. IDs**

        Die folgende Beispielrichtlinie verwendet sowohl CodeBuild Anmeldeinformationen als auch ein kontoübergreifendes Amazon ECR-Image.

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "CodeBuildAccessPrincipal",
                  "Effect": "Allow",
                  "Action": [
                      "ecr:GetDownloadUrlForLayer",
                      "ecr:BatchGetImage",
                      "ecr:BatchCheckLayerAvailability"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:SourceArn": "arn:aws:codebuild:us-east-1:111122223333:project/MyProject",
                          "aws:SourceAccount": "111122223333"
                      }
                  }
              },
              {
                  "Sid": "CodeBuildAccessCrossAccount",
                  "Effect": "Allow",
                  "Action": [
                      "ecr:GetDownloadUrlForLayer",
                      "ecr:BatchGetImage",
                      "ecr:BatchCheckLayerAvailability"
                  ],
                  "Resource": "*"
              }
          ]
      }
      ```

------
      + Wenn Ihre Projekte CodeBuild Anmeldeinformationen verwenden und Sie möchten, dass Ihre CodeBuild Projekte offenen Zugriff auf das Amazon ECR-Repository haben, können Sie die `Condition` Schlüssel weglassen und die folgende Beispielrichtlinie hinzufügen.

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "CodeBuildAccessPrincipal",
                  "Effect": "Allow",
                  "Resource": [
                      "arn:aws:codecommit:us-east-2:111122223333:MySharedDemoRepo"
                  ],
                  "Action": [
                      "ecr:GetDownloadUrlForLayer",
                      "ecr:BatchGetImage",
                      "ecr:BatchCheckLayerAvailability"
                  ]
              },
              {
                  "Sid": "CodeBuildAccessCrossAccount",
                  "Effect": "Allow",
                  "Resource": [
                      "arn:aws:codecommit:us-east-2:111122223333:MySharedDemoRepo"
                  ],
                  "Action": [
                      "ecr:GetDownloadUrlForLayer",
                      "ecr:BatchGetImage",
                      "ecr:BatchCheckLayerAvailability"
                  ]
              }
          ]
      }
      ```

------

1. Erstellen Sie ein Build-Projekt, führen Sie den Build aus und sehen Sie sich die Build-Informationen an.

   Wenn Sie das AWS CLI Build-Projekt mit erstellen, sieht die Eingabe des `create-project` Befehls im JSON-Format möglicherweise ähnlich aus. (Ersetzen Sie die Platzhalter durch Ihre eigenen Werte.)

   ```
   {
     "name": "amazon-ecr-sample-project",
     "source": {
       "type": "S3",
       "location": "codebuild-region-ID-account-ID-input-bucket/GoSample.zip"
     },
     "artifacts": {
       "type": "S3",
       "location": "codebuild-region-ID-account-ID-output-bucket",
       "packaging": "ZIP",
       "name": "GoOutputArtifact.zip"
     },
     "environment": {
       "type": "LINUX_CONTAINER",
       "image": "account-ID.dkr.ecr.region-ID.amazonaws.com/your-Amazon-ECR-repo-name:tag",
       "computeType": "BUILD_GENERAL1_SMALL"
     },
     "serviceRole": "arn:aws:iam::account-ID:role/role-name",
     "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID"
   }
   ```

1. Zum Abrufen des Build-Ausgabeartefakts, öffnen Sie Ihren S3-Ausgabe-Bucket.

1. Laden Sie die Datei `GoOutputArtifact.zip` auf Ihren lokalen Computer oder Ihre lokale Instance herunter. Extrahieren Sie anschließend den Inhalt der Datei `GoOutputArtifact.zip`. Rufen Sie im extrahierten Inhalt die Datei `hello` auf.

### Go-Projektstruktur
<a name="ecr-sample-go-project-file-structure"></a>

In diesem Beispiel wird von dieser Verzeichnisstruktur ausgegangen.

```
(root directory name)
├── buildspec.yml
└── hello.go
```

### Go-Projektdateien
<a name="sample-ecr-go-project-files"></a>

In diesem Beispiel werden diese Dateien verwendet.

`buildspec.yml` (in `(root directory name)`)

```
version: 0.2

phases:
  install: 
   runtime-versions: 
     golang: 1.13 
  build:
    commands:
      - echo Build started on `date`
      - echo Compiling the Go code
      - go build hello.go 
  post_build:
    commands:
      - echo Build completed on `date`
artifacts:
  files:
    - hello
```

`hello.go` (in `(root directory name)`)

```
package main
import "fmt"

func main() {
  fmt.Println("hello world")
  fmt.Println("1+1 =", 1+1)
  fmt.Println("7.0/3.0 =", 7.0/3.0)
  fmt.Println(true && false)
  fmt.Println(true || false)
  fmt.Println(!true)
}
```

# Amazon Elastic File System-Beispiel für AWS CodeBuild
<a name="sample-efs"></a>

 Möglicherweise möchten Sie Ihre AWS CodeBuild Builds auf Amazon Elastic File System erstellen, einem skalierbaren, gemeinsam genutzten Dateidienst für Amazon EC2 EC2-Instances. Die Speicherkapazität von Amazon EFS ist elastisch, sodass sie mit dem Hinzufügen und Entfernen von Dateien wächst oder schrumpft. Über eine einfache Web-Service-Schnittstelle können Sie Dateisysteme erstellen und konfigurieren. Die gesamte Dateispeicher-Infrastruktur wird für Sie verwaltet. Sie müssen sich damit nicht um Bereitstellung, Patching oder Wartung von Dateisystem-Konfigurationen kümmern. Weitere Informationen finden Sie unter [Was ist Amazon Elastic File System?](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) im *Amazon Elastic File System-Benutzerhandbuch*. 

 Dieses Beispiel zeigt Ihnen, wie Sie ein CodeBuild Projekt so konfigurieren, dass es eine Java-Anwendung in einem Amazon EFS-Dateisystem mountet und dann erstellt. Bevor Sie beginnen, müssen Sie eine Java-Anwendung zur Erstellung bereit haben, die in einen S3-Eingabe-Bucket oder ein AWS CodeCommit, GitHub, GitHub Enterprise Server- oder Bitbucket-Repository hochgeladen wird. 

Daten, die für Ihr Dateisystem übertragen werden, werden verschlüsselt. Informationen zum Verschlüsseln von Daten während der Übertragung mit einem anderen Bild finden Sie unter [Daten im Transit verschlüsseln](https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html). 

**Topics**
+ [Verwendung AWS CodeBuild mit Amazon Elastic File System](#sample-efs-high-level-steps)
+ [Fehlerbehebung bei der Amazon EFS-Integration](sample-efs-troubleshooting.md)

## Verwendung AWS CodeBuild mit Amazon Elastic File System
<a name="sample-efs-high-level-steps"></a>

Das Beispiel behandelt die vier grundlegenden Schritte, die für die Verwendung von Amazon EFS mit erforderlich sind AWS CodeBuild. Diese sind: 

1. Erstellen Sie eine virtuelle private Cloud (VPC) in Ihrem AWS Konto. 

1. Erstellen Sie ein Dateisystem, das diese VPC verwendet. 

1. Erstellen und erstellen Sie ein CodeBuild Projekt, das die VPC verwendet. Das CodeBuild Projekt verwendet Folgendes, um das Dateisystem zu identifizieren:
   +  Eine eindeutige Dateisystemkennung. Sie wählen die Kennung, wenn Sie das Dateisystem in Ihrem Build-Projekt angeben.
   + Die Dateisystem-ID. Die ID wird angezeigt, wenn Sie Ihr Dateisystem in der Amazon EFS-Konsole aufrufen.
   +  Ein Mountingpunkt. Dies ist ein Verzeichnis in Ihrem Docker-Container, das das Dateisystem mountet. 
   + Mountingoptionen. Dazu gehören Details zum Mounten des Dateisystems.

1. Überprüfen Sie das Build-Projekt, um sicherzustellen, dass die richtigen Projektdateien und Variablen generiert wurden.

**Anmerkung**  
 Ein in Amazon EFS erstelltes Dateisystem wird nur auf Linux-Plattformen unterstützt. 

 

**Topics**
+ [Schritt 1: Erstellen Sie eine VPC mit CloudFormation](#sample-efs-create-vpc)
+ [Schritt 2: Erstellen Sie ein Amazon Elastic File System-Dateisystem mit Ihrer VPC](#sample-efs-create-efs)
+ [Schritt 3: Erstellen Sie ein CodeBuild Projekt zur Verwendung mit Amazon EFS](#sample-efs-create-acb)
+ [Schritt 4: Überprüfen Sie das Build-Projekt](#sample-efs-summary)

### Schritt 1: Erstellen Sie eine VPC mit CloudFormation
<a name="sample-efs-create-vpc"></a>

 Erstellen Sie Ihre VPC mit einer CloudFormation Vorlage. 

1.  Folgen Sie den Anweisungen unter [CloudFormation VPC-Vorlage](cloudformation-vpc-template.md) CloudFormation So erstellen Sie eine VPC. 
**Anmerkung**  
 Die mit dieser CloudFormation Vorlage erstellte VPC hat zwei private Subnetze und zwei öffentliche Subnetze. Sie dürfen private Subnetze nur verwenden, wenn Sie das Dateisystem mounten AWS CodeBuild , das Sie in Amazon EFS erstellt haben. Bei Verwendung eines der öffentlichen Subnetze schlägt der Build fehl. 

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die Amazon VPC-Konsole unter [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1.  Wählen Sie die VPC aus, mit CloudFormation der Sie erstellt haben.

1. Notieren Sie sich den Namen der VPC und ihre ID, die auf der Registerkarte **Description (Beschreibung)** angezeigt werden. Beide Werte werden später beim Erstellen des AWS CodeBuild -Projekts in diesem Beispiel benötigt. 

### Schritt 2: Erstellen Sie ein Amazon Elastic File System-Dateisystem mit Ihrer VPC
<a name="sample-efs-create-efs"></a>

 Erstellen Sie ein einfaches Amazon EFS-Dateisystem für dieses Beispiel mit der VPC, die Sie zuvor erstellt haben. 

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die Amazon EFS-Konsole unter [ https://console.aws.amazon.com/efs/](https://console.aws.amazon.com/efs/).

1.  Wählen Sie **Create file system (Dateisystem erstellen)** aus. 

1.  Wählen Sie unter **VPC** den zuvor in diesem Beispiel notierten VPC-Namen aus. 

1.  Lassen Sie die Availability Zones für Ihre Subnetze ausgewählt. 

1.  Wählen Sie **Next Step (Weiter)** aus. 

1.  Geben **Sie unter Tags hinzufügen** für den Standardschlüssel **Name** im Feld **Wert** den Namen Ihres Amazon EFS-Dateisystems ein. 

1.  Lassen Sie **Bursting** und **General Purpose (Universal)** als Standardleistungs- und -durchsatzmodus ausgewählt. Wählen Sie dann **Next Step (Nächster Schritt)** aus. 

1. Wählen Sie unter **Configure client access (Client-Zugriff konfigurieren)** die Option **Next Step (Nächster Schritt)**.

1.  Klicken Sie auf **Create File System (Dateisystem erstellen)**. 

1.  (Optional) Wir empfehlen, Ihrem Amazon EFS-Dateisystem eine Richtlinie hinzuzufügen, die die Verschlüsselung von Daten bei der Übertragung erzwingt. Wählen Sie in der Amazon EFS-Konsole **Dateisystemrichtlinie**, klicken Sie auf **Bearbeiten**, aktivieren Sie das Kästchen **Verschlüsselung während der Übertragung für alle Clients erzwingen** und wählen Sie dann **Speichern** aus.

### Schritt 3: Erstellen Sie ein CodeBuild Projekt zur Verwendung mit Amazon EFS
<a name="sample-efs-create-acb"></a>

 Erstellen Sie ein AWS CodeBuild Projekt, das die VPC verwendet, die Sie zuvor in diesem Beispiel erstellt haben. Wenn der Build ausgeführt wird, hängt er das zuvor erstellte Amazon EFS-Dateisystem ein. Als Nächstes speichert es die von Ihrer Java-Anwendung erstellte .jar-Datei im Mountingpunkt-Verzeichnis Ihres Dateisystems.

1. Öffnen Sie die AWS CodeBuild Konsole unter [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1.  Wählen Sie im Navigationsbereich **Build projects (Build-Projekte)** gefolgt von **Create build project (Build-Projekt erstellen)** aus. 

1.  Geben Sie im Feld **Projektname** einen Namen für Ihr Projekt an. 

1.  Wählen Sie unter **Source provider (Quellanbieter)** das Repository aus, in dem sich die zu erstellende Java-Anwendung befindet. 

1.  Geben Sie Informationen ein, z. B. eine Repository-URL, CodeBuild anhand derer Ihre Anwendung gefunden wird. Die Optionen unterscheiden sich je nach Quellanbieter. Weitere Informationen finden Sie unter [Choose source provider](create-project.md#create-project-source-provider). 

1.  Wählen Sie unter **Environment image (Umgebungs-Image)** die Option **Managed image (Verwaltetes Image)** aus. 

1.  Wählen Sie unter **Operating system (Betriebssystem)** die Option **Amazon Linux 2** aus. 

1. Wählen Sie unter **Runtime(s) (Laufzeit(en))** die Option **Standard** aus. 

1.  Wählen Sie unter **Image** die Option **aws/codebuild/amazonlinux-x86\$164-standard:4.0** aus. 

1.  Wählen Sie für **Environment type (Umgebungstyp)** die Option **Linux** aus. 

1.  Wählen Sie unter **Service role (Servicerolle)** die Option **New service role (Neue Servicerolle)** aus. Geben Sie im Feld Rollenname einen **Namen für die Rolle** ein, die für Sie erstellt wurde. CodeBuild 

1. Erweitern Sie **Additional configuration (Zusätzliche Konfiguration)**.

1.  Wählen Sie **Enable this flag if you want to build Docker images or want your builds to get elevated privileges (Dieses Flag aktivieren, wenn Docker-Abbilder erstellt oder die Builds erweiterte Berechtigungen erhalten sollen)** aus.
**Anmerkung**  
Standardmäßig ist der Docker-Daemon für Nicht-VPC-Builds aktiviert. Wenn Sie Docker-Container für VPC-Builds verwenden möchten, lesen Sie auf der Docker Docs-Website unter [Runtime Privilege and Linux Capabilities](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) nach und aktivieren Sie den privilegierten Modus. Außerdem unterstützt Windows den privilegierten Modus nicht.

1.  Wählen Sie unter **VPC** die VPC-ID aus. 

1.  Wählen Sie unter **Subnets (Subnetze)** mindestens eines der privaten Subnetze aus, die Ihrer VPC zugeordnet sind. Sie müssen private Subnetze in einem Build verwenden, der ein Amazon EFS-Dateisystem mountet. Bei Verwendung eines öffentlichen Subnetzes schlägt der Build fehl. 

1.  Wählen Sie unter **Security groups (Sicherheitsgruppen)** die Standardsicherheitsgruppe aus.

1.  Geben Sie unter **File systems (Dateisysteme)** die folgenden Informationen ein:
   + Geben Sie unter **Identifier (Bezeichner)**, einen eindeutigen Dateisystembezeichner ein. Dieser muss weniger als 129 Zeichen und nur alphanumerische Zeichen und Unterstriche enthalten. CodeBuild verwendet diesen Bezeichner, um eine Umgebungsvariable zu erstellen, die das elastische Dateisystem identifiziert. Das Format der Umgebungsvariablen ist `CODEBUILD_<file_system_identifier>` in Großbuchstaben. Wenn Sie beispielsweise `my_efs` eingeben, lautet die Umgebungsvariable `CODEBUILD_MY_EFS`. 
   + Wählen Sie für **ID** die Dateisystem-ID aus. 
   + (Optional) Geben Sie ein Verzeichnis im Dateisystem ein. CodeBuild hängt dieses Verzeichnis ein. Wenn Sie **Directory path (Verzeichnispfad)** leer lassen, mountet CodeBuild das gesamte Dateisystem. Der Dateipfad ist relativ zum Stamm des Dateisystems. 
   + Geben Sie für **Mount Point** den absoluten Pfad des Verzeichnisses in Ihrem Build-Container ein, in dem das Dateisystem eingehängt ist. Wenn dieses Verzeichnis nicht existiert, CodeBuild wird es während des Builds erstellt. 
   + (Optional) Geben Sie Mountingoptionen ein. Wenn Sie das Feld **Mount-Optionen** leer lassen, CodeBuild werden die Standard-Mount-Optionen verwendet:

     ```
     nfsvers=4.1
     rsize=1048576
     wsize=1048576
     hard
     timeo=600
     retrans=2
     ```

     Weitere Informationen finden Sie unter [Empfohlene NFS-Mount-Optionen](https://docs.aws.amazon.com/efs/latest/ug/mounting-fs-nfs-mount-settings.html) im *Amazon Elastic File System-Benutzerhandbuch*. 

1.  Wählen Sie unter **Build specification (Build-Spezifikation)** die Option **Insert build commands (Build-Befehle einfügen)** und anschließend **Switch to editor (Zum Editor wechseln)** aus. 

1.  Geben Sie die folgenden Build-Spezifikationsbefehle in den Editor ein. Ersetzen Sie `<file_system_identifier>` durch den Bezeichner, den Sie in Schritt 17 eingegeben haben. Verwenden Sie Großbuchstaben (z. B. `CODEBUILD_MY_EFS`).

   ```
   version: 0.2
   phases:
     install:
       runtime-versions:
         java: corretto11    
     build:
       commands:
         - mvn compile -Dgpg.skip=true -Dmaven.repo.local=$CODEBUILD_<file_system_identifier>
   ```

1.  Verwenden Sie für alle anderen Einstellungen die Standardwerte und wählen Sie **Create build project (Build-Projekt erstellen)** aus. Wenn Ihr Build abgeschlossen ist, wird die Konsolenseite für Ihr Projekt angezeigt. 

1.  Wählen Sie **Start build (Build starten)**. 

### Schritt 4: Überprüfen Sie das Build-Projekt
<a name="sample-efs-summary"></a>



 Nachdem Ihr AWS CodeBuild Projekt erstellt wurde: 
+  Sie haben eine von Ihrer Java-Anwendung erstellte JAR-Datei, die für Ihr Amazon EFS-Dateisystem in Ihrem Mount-Point-Verzeichnis erstellt wurde. 
+  Eine Umgebungsvariable, die Ihr Dateisystem identifiziert, wird mithilfe der beim Erstellen des Projekts eingegebenen Dateisystembezeichner erstellt. 

 Weitere Informationen finden Sie unter [Mounten von Dateisystemen](https://docs.aws.amazon.com/efs/latest/ug/mounting-fs.html) im *Amazon Elastic File System-Benutzerhandbuch*. 

# Fehlerbehebung bei der Amazon EFS-Integration
<a name="sample-efs-troubleshooting"></a>

Die folgenden Fehler können bei der Einrichtung von Amazon EFS auftreten CodeBuild.

**Topics**
+ [CLIENT\$1ERROR: Das Mounten von '127.0.0.1: /' ist fehlgeschlagen. Zugriff verweigert](#sample-efs-troubleshooting.permission-denied)
+ [CLIENT\$1ERROR: Das Mounten von '127.0.0.1: /' ist fehlgeschlagen. Verbindung wurde durch Peer zurückgesetzt](#sample-efs-troubleshooting.connection-reset)
+ [VPC\$1CLIENT\$1ERROR: Unerwarteter EC2-Fehler: UnauthorizedOperation](#sample-efs-troubleshooting.unauthorized-operation)

## CLIENT\$1ERROR: Das Mounten von '127.0.0.1: /' ist fehlgeschlagen. Zugriff verweigert
<a name="sample-efs-troubleshooting.permission-denied"></a>

Die IAM-Autorisierung wird für das Mounten von Amazon EFS mit CodeBuild nicht unterstützt. Wenn Sie eine benutzerdefinierte Amazon EFS-Dateisystemrichtlinie verwenden, müssen Sie allen IAM-Prinzipalen Lese- und Schreibzugriff gewähren. Beispiel:

```
"Principal": {
  "AWS": "*"
}
```

## CLIENT\$1ERROR: Das Mounten von '127.0.0.1: /' ist fehlgeschlagen. Verbindung wurde durch Peer zurückgesetzt
<a name="sample-efs-troubleshooting.connection-reset"></a>

Es gibt zwei mögliche Ursachen für diesen Fehler:
+ Das CodeBuild VPC-Subnetz befindet sich in einer anderen Availability Zone als das Amazon EFS-Mount-Ziel. Sie können dieses Problem lösen, indem Sie ein VPC-Subnetz in derselben Availability Zone wie das Amazon EFS-Mount-Ziel hinzufügen.
+ Die Sicherheitsgruppe ist nicht berechtigt, mit Amazon EFS zu kommunizieren. Sie können dieses Problem lösen, indem Sie eine Regel für eingehenden Datenverkehr hinzufügen, die den gesamten Datenverkehr entweder von der VPC (fügen Sie den primären CIDR-Block für Ihre VPC hinzu) oder von der Sicherheitsgruppe selbst zulässt.

## VPC\$1CLIENT\$1ERROR: Unerwarteter EC2-Fehler: UnauthorizedOperation
<a name="sample-efs-troubleshooting.unauthorized-operation"></a>

Dieser Fehler tritt auf, wenn alle Subnetze in Ihrer VPC-Konfiguration für das CodeBuild Projekt öffentliche Subnetze sind. Sie müssen mindestens ein privates Subnetz in der VPC haben, um die Netzwerkkonnektivität sicherzustellen. 

# AWS CodePipeline Proben für CodeBuild
<a name="sample-codepipeline"></a>

In diesem Abschnitt werden Beispielintegrationen zwischen CodePipeline und CodeBuild beschrieben.


| Beispiel | Description | 
| --- | --- | 
|  [Beispiele für CodePipeline/CodeBuild Integrationen und Batch-Builds](#sample-pipeline-batch)  |  Diese Beispiele zeigen, wie Sie AWS CodePipeline ein Build-Projekt erstellen, das Batch-Builds verwendet.  | 
|  [Beispiel für eine CodePipeline/CodeBuild Integration mit mehreren Eingabequellen und Ausgabeartefakten](#sample-pipeline-multi-input-output)  |  In diesem Beispiel wird gezeigt, wie Sie AWS CodePipeline ein Build-Projekt erstellen, das mehrere Eingabequellen verwendet, um mehrere Ausgabeartefakte zu erstellen.  | 

## Beispiele für CodePipeline/CodeBuild Integrationen und Batch-Builds
<a name="sample-pipeline-batch"></a>

AWS CodeBuild unterstützt Batch-Builds. Die folgenden Beispiele zeigen, wie Sie AWS CodePipeline ein Build-Projekt erstellen, das Batch-Builds verwendet.

Sie können eine Datei im JSON-Format verwenden, die die Struktur Ihrer Pipeline definiert, und sie dann zusammen mit der verwenden, AWS CLI um die Pipeline zu erstellen. *Weitere Informationen finden Sie unter [AWS CodePipeline Pipeline-Strukturreferenz im AWS CodePipeline Benutzerhandbuch.](https://docs.aws.amazon.com/codepipeline/latest/userguide/reference-pipeline-structure.html)*

### Batch-Erstellung mit einzelnen Artefakten
<a name="sample-pipeline-batch.separate-artifacts"></a>

Verwenden Sie die folgende JSON-Datei als Beispiel für eine Pipeline-Struktur, die einen Batch-Build mit separaten Artefakten erstellt. Um Batch-Builds zu aktivieren CodePipeline, setzen Sie den `BatchEnabled` Parameter des `configuration` Objekts auf`true`.

```
{
  "pipeline": {
    "roleArn": "arn:aws:iam::account-id:role/my-AWS-CodePipeline-service-role-name",
    "stages": [
      {
        "name": "Source",
        "actions": [
          {
            "inputArtifacts": [],
            "name": "Source1",
            "actionTypeId": {
              "category": "Source",
              "owner": "AWS",
              "version": "1",
              "provider": "S3"
            },
            "outputArtifacts": [
              {
                "name": "source1"
              }
            ],
            "configuration": {
              "S3Bucket": "<my-input-bucket-name>",
              "S3ObjectKey": "my-source-code-file-name.zip"
            },
            "runOrder": 1
          },
          {
            "inputArtifacts": [],
            "name": "Source2",
            "actionTypeId": {
              "category": "Source",
              "owner": "AWS",
              "version": "1",
              "provider": "S3"
            },
            "outputArtifacts": [
              {
                "name": "source2"
              }
            ],
            "configuration": {
              "S3Bucket": "<my-other-input-bucket-name>",
              "S3ObjectKey": "my-other-source-code-file-name.zip"
            },
            "runOrder": 1
          }
        ]
      },
      {
        "name": "Build",
        "actions": [
          {
            "inputArtifacts": [
              {
                "name": "source1"
              },
              {
                "name": "source2"
              }
            ],
            "name": "Build",
            "actionTypeId": {
              "category": "Build",
              "owner": "AWS",
              "version": "1",
              "provider": "CodeBuild"
            },
            "outputArtifacts": [
              {
                "name": "build1"
              },
              {
                "name": "build1_artifact1"
              },
              {
                "name": "build1_artifact2"
              },
              {
                "name": "build2_artifact1"
              },
              {
                "name": "build2_artifact2"
              }
            ],
            "configuration": {
              "ProjectName": "my-build-project-name",
              "PrimarySource": "source1",
              "BatchEnabled": "true"
            },
            "runOrder": 1
          }
        ]
      }
    ],
    "artifactStore": {
      "type": "S3",
      "location": "<AWS-CodePipeline-internal-bucket-name>"
    },
    "name": "my-pipeline-name",
    "version": 1
  }
}
```

Im Folgenden finden Sie ein Beispiel für eine CodeBuild Buildspec-Datei, die mit dieser Pipeline-Konfiguration funktioniert.

```
version: 0.2
batch:
  build-list:
    - identifier: build1
      env:
        compute-type: BUILD_GENERAL1_SMALL
    - identifier: build2
      env:
        compute-type: BUILD_GENERAL1_MEDIUM

phases:
  build:
    commands:
      - echo 'file' > output_file

artifacts:
  files:
    - output_file
  secondary-artifacts:
    artifact1:
      files:
        - output_file
    artifact2:
      files:
        - output_file
```

Die Namen der in der JSON-Datei der Pipeline angegebenen Ausgabeartefakte müssen mit der Kennung der Builds und Artefakte übereinstimmen, die in Ihrer Buildspec-Datei definiert sind. Die Syntax gilt *buildIdentifier* für die primären Artefakte und *buildIdentifier* \$1 *artifactIdentifier* für die sekundären Artefakte.

 CodeBuild Wird beispielsweise für den Namen des `build1` Ausgabeartefakts das primäre Artefakt von `build1` an den Speicherort von hochgeladen. `build1` Als Ausgabename `build1_artifact1` CodeBuild wird das sekundäre Artefakt `artifact1` von `build1` an den Speicherort von `build1_artifact1` hochgeladen usw. Wenn nur ein Ausgabespeicherort angegeben ist, sollte der Name *buildIdentifier* nur angegeben werden.

Nachdem Sie die JSON-Datei erstellt haben, können Sie die Pipeline erstellen. Verwenden Sie den AWS CLI , um den Befehl **create-pipeline** auszuführen und die Datei an den Parameter zu übergeben. `--cli-input-json` Weitere Informationen finden Sie unter [Erstellen einer Pipeline (CLI)](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-create.html#pipelines-create-cli) im *AWS CodePipeline Benutzerhandbuch*. 

### Batch-Build mit kombinierten Artefakten
<a name="sample-pipeline-batch.combined-artifacts"></a>

Verwenden Sie die folgende JSON-Datei als Beispiel für eine Pipeline-Struktur, die einen Batch-Build mit kombinierten Artefakten erstellt. Um Batch-Builds zu aktivieren CodePipeline, setzen Sie den `BatchEnabled` Parameter des `configuration` Objekts auf`true`. Um die Build-Artefakte an derselben Stelle zu kombinieren, setzen Sie den `CombineArtifacts` Parameter des `configuration` Objekts auf`true`.

```
{
 "pipeline": {
  "roleArn": "arn:aws:iam::account-id:role/my-AWS-CodePipeline-service-role-name",
  "stages": [
    {
      "name": "Source",
      "actions": [
        {
          "inputArtifacts": [],
          "name": "Source1",
          "actionTypeId": {
            "category": "Source",
            "owner": "AWS",
            "version": "1",
            "provider": "S3"
          },
          "outputArtifacts": [
            {
              "name": "source1"
            }
          ],
          "configuration": {
            "S3Bucket": "<my-input-bucket-name>",
            "S3ObjectKey": "my-source-code-file-name.zip"
          },
          "runOrder": 1
        },
        {
          "inputArtifacts": [],
          "name": "Source2",
          "actionTypeId": {
            "category": "Source",
            "owner": "AWS",
            "version": "1",
            "provider": "S3"
          },
          "outputArtifacts": [
            {
              "name": "source2"
            }
          ],
          "configuration": {
            "S3Bucket": "<my-other-input-bucket-name>",
            "S3ObjectKey": "my-other-source-code-file-name.zip"
          },
          "runOrder": 1
        }
      ]
    },
    {
      "name": "Build",
      "actions": [
        {
          "inputArtifacts": [
            {
              "name": "source1"
            },
            {
              "name": "source2"
            }
          ],
          "name": "Build",
          "actionTypeId": {
            "category": "Build",
            "owner": "AWS",
            "version": "1",
            "provider": "CodeBuild"
          },
          "outputArtifacts": [
            {
              "name": "output1 "
            }
          ],
          "configuration": {
            "ProjectName": "my-build-project-name",
            "PrimarySource": "source1",
             "BatchEnabled": "true",
             "CombineArtifacts": "true"
          },
          "runOrder": 1
        }
      ]
    }
  ],
  "artifactStore": {
    "type": "S3",
    "location": "<AWS-CodePipeline-internal-bucket-name>"
  },
  "name": "my-pipeline-name",
  "version": 1
 }
}
```

Im Folgenden finden Sie ein Beispiel für eine CodeBuild Buildspec-Datei, die mit dieser Pipeline-Konfiguration funktioniert.

```
version: 0.2
batch:
  build-list:
    - identifier: build1
      env:
        compute-type: BUILD_GENERAL1_SMALL
    - identifier: build2
      env:
        compute-type: BUILD_GENERAL1_MEDIUM

phases:
  build:
    commands:
      - echo 'file' > output_file

artifacts:
  files:
    - output_file
```

Wenn kombinierte Artefakte für den Batch-Build aktiviert sind, ist nur eine Ausgabe zulässig. CodeBuild kombiniert die primären Artefakte aller Builds in einer einzigen ZIP-Datei.

Nachdem Sie die JSON-Datei erstellt haben, können Sie die Pipeline erstellen. Verwenden Sie den AWS CLI , um den Befehl **create-pipeline** auszuführen und die Datei an den Parameter zu übergeben. `--cli-input-json` Weitere Informationen finden Sie unter [Erstellen einer Pipeline (CLI)](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-create.html#pipelines-create-cli) im *AWS CodePipeline Benutzerhandbuch*. 

## Beispiel für eine CodePipeline/CodeBuild Integration mit mehreren Eingabequellen und Ausgabeartefakten
<a name="sample-pipeline-multi-input-output"></a>

Ein AWS CodeBuild Projekt kann mehr als eine Eingabequelle verwenden. Es kann zudem mehr als ein Ausgabeartefakt erstellen. Dieses Beispiel zeigt, wie Sie AWS CodePipeline ein Build-Projekt erstellen, das mehrere Eingabequellen verwendet, um mehrere Ausgabeartefakte zu erstellen. Weitere Informationen finden Sie unter [Beispiel für mehrere Eingabequellen und Ausgabeartefakte](sample-multi-in-out.md).

Sie können eine Datei im JSON-Format verwenden, die die Struktur Ihrer Pipeline definiert, und sie dann zusammen mit der verwenden, AWS CLI um die Pipeline zu erstellen. Verwenden Sie die folgende JSON-Datei als Beispiel für eine Pipeline-Struktur, die einen Build mit mehr als einer Eingabequelle und mehr als einem Ausgabeartefakt erstellt. Unten in diesem Beispiel werden Sie sehen, wie diese Datei mehrere Eingaben und Ausgaben angibt. *Weitere Informationen finden Sie in der [Referenz zur CodePipeline Pipeline-Struktur im AWS CodePipeline Benutzerhandbuch.](https://docs.aws.amazon.com/codepipeline/latest/userguide/reference-pipeline-structure.html)*

```
{
 "pipeline": {
  "roleArn": "arn:aws:iam::account-id:role/my-AWS-CodePipeline-service-role-name",
  "stages": [
    {
      "name": "Source",
      "actions": [
        {
          "inputArtifacts": [],
          "name": "Source1",
          "actionTypeId": {
            "category": "Source",
            "owner": "AWS",
            "version": "1",
            "provider": "S3"
          },
          "outputArtifacts": [
            {
              "name": "source1"
            }
          ],
          "configuration": {
            "S3Bucket": "my-input-bucket-name",
            "S3ObjectKey": "my-source-code-file-name.zip"
          },
          "runOrder": 1
        },
        {
          "inputArtifacts": [],
          "name": "Source2",
          "actionTypeId": {
            "category": "Source",
            "owner": "AWS",
            "version": "1",
            "provider": "S3"
          },
          "outputArtifacts": [
            {
              "name": "source2"
            }
          ],
          "configuration": {
            "S3Bucket": "my-other-input-bucket-name",
            "S3ObjectKey": "my-other-source-code-file-name.zip"
          },
          "runOrder": 1
        }
      ]
    },
    {
      "name": "Build",
      "actions": [
        {
          "inputArtifacts": [
            {
              "name": "source1"
            },
            {
              "name": "source2"
            }
          ],
          "name": "Build",
          "actionTypeId": {
            "category": "Build",
            "owner": "AWS",
            "version": "1",
            "provider": "AWS CodeBuild"
          },
          "outputArtifacts": [
            {
              "name": "artifact1"
            },
            {
              "name": "artifact2"
            }
          ],
          "configuration": {
            "ProjectName": "my-build-project-name",
            "PrimarySource": "source1"
          },
          "runOrder": 1
        }
      ]
    }
  ],
  "artifactStore": {
    "type": "S3",
    "location": "AWS-CodePipeline-internal-bucket-name"
  },
  "name": "my-pipeline-name",
  "version": 1
 }
}
```

 Für diese JSON-Datei gilt: 
+ Eine der Eingabequellen muss als `PrimarySource` fungieren. Diese Quelle ist das Verzeichnis, in dem CodeBuild nach Ihrer Buildspec-Datei gesucht und diese ausgeführt wird. Das Schlüsselwort `PrimarySource` wird verwendet, um die Primärquelle im `configuration` Abschnitt der CodeBuild Phase in der JSON-Datei anzugeben. 
+ Jede Eingabequelle ist in einem eigenen Verzeichnis installiert. Dieses Verzeichnis ist in der integrierten Umgebungsvariable `$CODEBUILD_SRC_DIR` für die primäre Quelle und `$CODEBUILD_SRC_DIR_yourInputArtifactName` für alle anderen Quellen gespeichert. Für die Pipeline in diesem Beispiel lauten die beiden Eingabequellverzeichnisse `$CODEBUILD_SRC_DIR` und `$CODEBUILD_SRC_DIR_source2`. Weitere Informationen finden Sie unter [Umgebungsvariablen in Build-Umgebungen](build-env-ref-env-vars.md). 
+ Die in der JSON-Datei der Pipeline angegebenen Namen der Ausgabeartefakte müssen den Namen der sekundären Artefakte entsprechen, die in der buildspec-Datei definiert sind. Diese Pipeline verwendet die folgende buildspec-Datei. Weitere Informationen finden Sie unter [Syntax der Build-Spezifikation](build-spec-ref.md#build-spec-ref-syntax). 

  ```
  version: 0.2
  
  phases:
    build:
      commands:
        - touch source1_file
        - cd $CODEBUILD_SRC_DIR_source2
        - touch source2_file
  
  artifacts:
    files:
      - '**/*'
    secondary-artifacts:
      artifact1:
        base-directory: $CODEBUILD_SRC_DIR
        files:
          - source1_file
      artifact2:
        base-directory: $CODEBUILD_SRC_DIR_source2
        files:
          - source2_file
  ```

 Nachdem Sie die JSON-Datei erstellt haben, können Sie die Pipeline erstellen. Verwenden Sie den AWS CLI , um den Befehl **create-pipeline** auszuführen und die Datei an den Parameter zu übergeben. `--cli-input-json` Weitere Informationen finden Sie unter [Erstellen einer Pipeline (CLI)](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-create.html#pipelines-create-cli) im *AWS CodePipeline Benutzerhandbuch*. 

# AWS Config Probe mit CodeBuild
<a name="how-to-integrate-config"></a>

AWS Config bietet eine Bestandsaufnahme Ihrer AWS Ressourcen und einen Verlauf der Konfigurationsänderungen an diesen Ressourcen. AWS Config wird jetzt AWS CodeBuild als AWS Ressource unterstützt, was bedeutet, dass der Dienst Ihre CodeBuild Projekte verfolgen kann. Weitere Informationen zu AWS Config finden Sie unter [Was ist AWS Config?](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html) im *AWS Config Entwicklerhandbuch*.

Auf der Seite „**Ressourceninventar**“ in der AWS Config Konsole finden Sie die folgenden Informationen zu CodeBuild Ressourcen:
+ Eine Zeitleiste Ihrer CodeBuild Konfigurationsänderungen.
+ Konfigurationsdetails für jedes CodeBuild Projekt.
+ Beziehungen zu anderen AWS Ressourcen.
+ Eine Liste der Änderungen an Ihren CodeBuild Projekten.

**Topics**
+ [Verwenden Sie CodeBuild mit AWS Config](#how-to-integrate-config-run)
+ [Schritt 3: AWS CodeBuild Daten in der AWS Config Konsole anzeigen](#viewing-config-details)

## Verwenden Sie CodeBuild mit AWS Config
<a name="how-to-integrate-config-run"></a>

Die Verfahren in diesem Thema zeigen Ihnen, wie Sie CodeBuild Projekte einrichten AWS Config und danach suchen.

**Topics**
+ [Voraussetzungen](#how-to-create-a-build-project)
+ [Schritt 1: Einrichten AWS Config](#setup-config)
+ [Schritt 2: AWS CodeBuild Projekte nachschlagen](#lookup-projects)

### Voraussetzungen
<a name="how-to-create-a-build-project"></a>

Erstellen Sie Ihr AWS CodeBuild Projekt. Detaillierte Anweisungen finden Sie unter [Erstellen eines Build-Projekts](create-project.md).

### Schritt 1: Einrichten AWS Config
<a name="setup-config"></a>
+ [Einrichtung von AWS Config (Konsole)](https://docs.aws.amazon.com/config/latest/developerguide/gs-console.html)
+ [Einrichten von AWS Config (AWS CLI)](https://docs.aws.amazon.com/config/latest/developerguide/gs-cli.html)

**Anmerkung**  
Nach Abschluss der Einrichtung kann es bis zu 10 Minuten dauern, bis AWS CodeBuild Projekte in der AWS Config Konsole angezeigt werden.

### Schritt 2: AWS CodeBuild Projekte nachschlagen
<a name="lookup-projects"></a>

1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die AWS Config Konsole unter [https://console.aws.amazon.com/config](https://console.aws.amazon.com/config). 

1. Wählen Sie auf der Seite **Ressourceninventar** unter **Ressourcentyp** die Option **AWS CodeBuild Projekt** aus. Scrollen Sie nach unten und aktivieren Sie das **CodeBuildProjekt-Kontrollkästchen**.

1. Wählen Sie **Look up**.

1. Nachdem die CodeBuild Projektliste hinzugefügt wurde, wählen Sie in der Spalte **Config Timeline** den Link mit dem CodeBuild Projektnamen aus.

## Schritt 3: AWS CodeBuild Daten in der AWS Config Konsole anzeigen
<a name="viewing-config-details"></a>

Wenn Sie auf der Seite „**Ressourcenbestand**“ nach Ressourcen suchen, können Sie den AWS Config Zeitplan auswählen, um Details zu Ihrem CodeBuild Projekt anzuzeigen. Die Detailseite für eine Ressource bietet Informationen über die Konfiguration, die Beziehungen und die Anzahl der vorgenommenen Änderungen dieser Ressource. 

Die Blöcke oben auf der Seite werden zusammengefasst als Timeline bezeichnet. Die Timeline zeigt das Datum und die Uhrzeit der Aufzeichnung.

Weitere Informationen finden Sie im *AWS Config Entwicklerhandbuch* unter [Konfigurationsdetails in der AWS Config Konsole anzeigen](https://docs.aws.amazon.com/config/latest/developerguide/view-manage-resource-console.html).

# Beispiel für Benachrichtigungen erstellen für CodeBuild
<a name="sample-build-notifications"></a>

Amazon CloudWatch Events bietet integrierte Unterstützung für AWS CodeBuild. CloudWatch Events ist ein Stream von Systemereignissen, die Änderungen an Ihren AWS Ressourcen beschreiben. Mit CloudWatch Ereignissen schreiben Sie deklarative Regeln, um interessante Ereignisse mit zu ergreifenden automatisierten Aktionen zu verknüpfen. In diesem Beispiel werden Amazon CloudWatch Events und Amazon Simple Notification Service (Amazon SNS) verwendet, um Build-Benachrichtigungen an Abonnenten zu senden, wenn Builds erfolgreich sind, fehlschlagen, von einer Build-Phase zur nächsten wechseln oder wenn eine Kombination dieser Ereignisse vorliegt.

**Wichtig**  
Die Ausführung dieses Beispiels kann dazu führen, dass Ihr AWS Konto belastet wird. Dazu gehören mögliche Gebühren für CodeBuild und für AWS Ressourcen und Aktionen im Zusammenhang mit Amazon CloudWatch und Amazon SNS. Weitere Informationen finden Sie unter [CodeBuild Preise](https://aws.amazon.com/codebuild/pricing), [ CloudWatchAmazon-Preise](https://aws.amazon.com/cloudwatch/pricing) und [Amazon SNS-Preise](https://aws.amazon.com/sns/pricing).

**Topics**
+ [Führen Sie das Beispiel für Build-Benachrichtigungen aus](#sample-build-notifications-running)
+ [Eingabeformat-Referenz für Build-Benachrichtigungen](sample-build-notifications-ref.md)

## Führen Sie das Beispiel für Build-Benachrichtigungen aus
<a name="sample-build-notifications-running"></a>

Gehen Sie wie folgt vor, um das Beispiel für Buildbenachrichtigungen auszuführen.

**So führen Sie das Beispiel aus**

1. Wenn Sie in Amazon SNS bereits ein Thema eingerichtet und abonniert haben, das Sie für dieses Beispiel verwenden möchten, fahren Sie mit Schritt 4 fort. Andernfalls, wenn Sie einen IAM-Benutzer anstelle eines AWS Root-Kontos oder eines Administratorbenutzers für die Arbeit mit Amazon SNS verwenden, fügen Sie dem Benutzer (oder der IAM-Gruppe, der der Benutzer zugeordnet ist*\$1\$1\$1 END ADDING STATEMENT HERE \$1\$1\$1*) die folgende Anweisung (zwischen *\$1\$1\$1 BEGIN ADDING STATEMENT HERE \$1\$1\$1* und) hinzu. Die Verwendung eines AWS Root-Kontos wird nicht empfohlen. Diese Erklärung ermöglicht das Anzeigen, Erstellen, Abonnieren und Testen des Versands von Benachrichtigungen zu Themen in Amazon SNS. Auslassungspunkte (`...`) werden zur Abkürzung verwendet und weisen auf die Stellen hin, an denen die Anweisung hinzugefügt wird. Entfernen Sie keine Anweisungen und geben Sie die Auslassungspunkte nicht in die vorhandene Richtlinie ein.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sns:CreateTopic",
                   "sns:GetTopicAttributes",
                   "sns:List*",
                   "sns:Publish",
                   "sns:SetTopicAttributes",
                   "sns:Subscribe"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------
**Anmerkung**  
Die IAM-Entität, die diese Richtlinie ändert, muss in IAM über die Erlaubnis verfügen, Richtlinien zu ändern.  
Weitere Informationen finden Sie unter Vom [Kunden verwaltete Richtlinien bearbeiten](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#edit-managed-policy-console) oder im Abschnitt „So bearbeiten oder löschen Sie eine Inline-Richtlinie für eine Gruppe, einen Benutzer oder eine Rolle“ unter [Arbeiten mit Inline-Richtlinien (Konsole)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html#AddingPermissions_Console) im *IAM-Benutzerhandbuch*.

1. Erstellen oder identifizieren Sie ein Thema in Amazon SNS. AWS CodeBuild verwendet CloudWatch Events, um Build-Benachrichtigungen zu diesem Thema über Amazon SNS zu senden. 

   Erstellen Sie ein Thema wie folgt:

   1. Öffnen Sie die Amazon SNS SNS-Konsole unter [https://console.aws.amazon.com/sns](https://console.aws.amazon.com/sns).

   1. Wählen Sie **Thema erstellen** aus. 

   1. Geben Sie unter **Create new topic (Neues Thema erstellen)** für **Topic name (Themenname)** einen Namen für das Thema ein (z. B. **CodeBuildDemoTopic**). (Wenn Sie einen anderen Namen verwenden, muss dieser im gesamten Beispiel verwendet werden.) 

   1. Wählen Sie **Thema erstellen** aus.

   1. Kopieren Sie auf der CodeBuildDemoTopic Seite **Themendetails:** den **ARN-Wert für das Thema**. Sie benötigen diesen Wert im nächsten Schritt. 

        
![\[Der ARN-Wert für das Thema.\]](http://docs.aws.amazon.com/de_de/codebuild/latest/userguide/images/topic-arn.png)

      

   Weitere Informationen finden Sie unter [Thema erstellen](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html) im *Amazon SNS SNS-Entwicklerhandbuch*.

1. Abonnieren Sie das Thema für einen oder mehrere Empfänger, um E-Mail-Benachrichtigungen zu empfangen. 

   So abonnieren Sie ein Thema für einen Empfänger:

   1. Wählen Sie bei geöffneter Amazon SNS SNS-Konsole aus dem vorherigen Schritt im Navigationsbereich **Abonnements** und anschließend **Abonnement erstellen** aus.

   1. Fügen Sie unter **Create subscription (Abonnement erstellen)**, für **Topic ARN (Thema-ARN)**, den Thema-ARN ein, den Sie im vorherigen Schritt kopiert haben.

   1. Wählen Sie unter **Protocol (Protokoll)** die Option **Email (E-Mail)** aus.

   1. Geben Sie für **Endpoint (Endpunkt)** die vollständige E-Mail-Adresse des Empfängers ein. 

        
![\[Die Abonnementkonfiguration.\]](http://docs.aws.amazon.com/de_de/codebuild/latest/userguide/images/create-subscription.png)

      

   1. Wählen Sie **Create Subscription**.

   1. Amazon SNS sendet eine Bestätigungs-E-Mail für das Abonnement an den Empfänger. Um Benachrichtigungen zu erhalten, muss der Empfänger den Link **Confirm subscription** in der Bestätigungs-E-Mail wählen. Nachdem der Empfänger auf den Link geklickt hat und das Abonnement erfolgreich abgeschlossen wurde, zeigt Amazon SNS eine Bestätigungsnachricht im Webbrowser des Empfängers an.

   Weitere Informationen finden [Sie unter Abonnieren eines Themas](https://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html) im *Amazon SNS Developer Guide*.

1. Wenn Sie einen Benutzer anstelle eines AWS Root-Kontos oder eines Administratorbenutzers für die Arbeit mit CloudWatch Events verwenden, fügen Sie dem Benutzer (oder der IAM-Gruppe, der der Benutzer zugeordnet ist*\$1\$1\$1 END ADDING STATEMENT HERE \$1\$1\$1*) die folgende Anweisung (zwischen *\$1\$1\$1 BEGIN ADDING STATEMENT HERE \$1\$1\$1* und) hinzu. Die Verwendung eines AWS Root-Kontos wird nicht empfohlen. Diese Anweisung wird verwendet, um dem Benutzer die Arbeit mit CloudWatch Ereignissen zu ermöglichen. Auslassungspunkte (`...`) werden zur Abkürzung verwendet und weisen auf die Stellen hin, an denen die Anweisung hinzugefügt wird. Entfernen Sie keine Anweisungen und geben Sie die Auslassungspunkte nicht in die vorhandene Richtlinie ein.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "events:*",
                   "iam:PassRole"
               ],
               "Resource": "arn:aws:iam::*:role/Service*"
           }
       ]
   }
   ```

------
**Anmerkung**  
Die IAM-Entität, die diese Richtlinie ändert, muss in IAM über die Berechtigung zum Ändern von Richtlinien verfügen.  
Weitere Informationen finden Sie unter Vom [Kunden verwaltete Richtlinien bearbeiten](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#edit-managed-policy-console) oder im Abschnitt „So bearbeiten oder löschen Sie eine Inline-Richtlinie für eine Gruppe, einen Benutzer oder eine Rolle“ unter [Arbeiten mit Inline-Richtlinien (Konsole)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html#AddingPermissions_Console) im *IAM-Benutzerhandbuch*.

1. Erstellen Sie eine Regel unter CloudWatch Ereignisse. Öffnen Sie dazu die CloudWatch Konsole unter [https://console.aws.amazon.com/cloudwatch.](https://console.aws.amazon.com/cloudwatch)

1. Wählen Sie im Navigationsbereich unter **Events** **Rules** aus und anschließend **Create rule**. 

1. Auf der Seite **Step 1: Create rule page (Schritt 1: Regel erstellen)**, sollten bereits die Optionen **Event Pattern (Ereignismuster)** und **Build event pattern to match events by service (Ereignismuster erstellen, um Ereignisse nach Service abzugleichen)** ausgewählt sein. 

1. Wählen Sie für **Servicename** **CodeBuild** aus. Bei **Event Type (Ereignistyp)** sollte bereits **All Events (Alle Ereignisse)** ausgewählt sein.

1. Der folgende Code sollte in **Event Pattern Preview (Ereignismustervorschau)** angezeigt werden:

   ```
   {
     "source": [ 
       "aws.codebuild"
     ]
   }
   ```

1. Wählen Sie die Option **Edit (Bearbeiten)** und ersetzen Sie den Code in **Event Pattern Preview (Ereignismustervorschau)** durch eines der beiden folgenden Regelmuster.

   Das erste Regelmuster löst für die in AWS CodeBuild angegebenen Build-Projekte ein Ereignis aus, sobald ein Build gestartet oder abgeschlossen wird.

   ```
   {
     "source": [ 
       "aws.codebuild"
     ], 
     "detail-type": [
       "CodeBuild Build State Change"
     ],
     "detail": {
       "build-status": [
         "IN_PROGRESS",
         "SUCCEEDED", 
         "FAILED",
         "STOPPED" 
       ],
       "project-name": [
         "my-demo-project-1",
         "my-demo-project-2"
       ]
     }  
   }
   ```

   Nehmen Sie in der vorhergehenden Regel die folgenden Code-Änderungen nach Bedarf vor.
   + Um ein Ereignis auszulösen, sobald ein Build beginnt oder abgeschlossen ist, lassen Sie entweder alle Werte wie im `build-status` Array gezeigt stehen oder entfernen Sie `build-status` das Array vollständig. 
   + Um ein Ereignis nur dann auszulösen, wenn ein Build abgeschlossen ist, entfernen Sie `IN_PROGRESS` aus dem `build-status` Array. 
   + Um ein Ereignis nur dann auszulösen, wenn ein Build startet, entfernen Sie alle Werte außer `IN_PROGRESS` aus dem `build-status` Array.
   + Um Ereignisse für alle Build-Projekte auszulösen, entfernen Sie das `project-name` Array vollständig.
   + Um Ereignisse nur für einzelne Build-Projekte auszulösen, geben Sie den Namen des jeweiligen Build-Projekts im Array `project-name` an. 

   Dieses zweite Regelmuster löst ein Ereignis aus, sobald bei den in AWS CodeBuild angegebenen Build-Projekten ein Build von einer Build-Phase in eine andere wechselt.

   ```
   {
     "source": [ 
       "aws.codebuild"
     ], 
     "detail-type": [
       "CodeBuild Build Phase Change" 
     ],
     "detail": {
       "completed-phase": [
         "SUBMITTED",
         "PROVISIONING",
         "DOWNLOAD_SOURCE",
         "INSTALL",
         "PRE_BUILD",
         "BUILD",
         "POST_BUILD",
         "UPLOAD_ARTIFACTS",
         "FINALIZING"
       ],
       "completed-phase-status": [
         "TIMED_OUT",
         "STOPPED",
         "FAILED", 
         "SUCCEEDED",
         "FAULT",
         "CLIENT_ERROR"
       ],
       "project-name": [
         "my-demo-project-1",
         "my-demo-project-2"
       ]
     }  
   }
   ```

   Nehmen Sie in der vorhergehenden Regel die folgenden Code-Änderungen nach Bedarf vor.
   + Um ein Ereignis für jeden Build-Phasenwechsel auszulösen (wodurch bis zu neun Benachrichtigungen für jeden Build gesendet werden können), lassen Sie entweder alle Werte, wie im `completed-phase`-Array gezeigt, stehen oder entfernen Sie das `completed-phase`-Array vollständig.
   + Um Ereignisse nur für einzelne Build-Phasenänderungen auszulösen, entfernen Sie den Namen jeder Build-Phase in dem `completed-phase`-Array, für das Sie kein Ereignis auslösen möchten.
   + Um ein Ereignis für jede Statusänderung einer Build-Phase auszulösen, lassen Sie entweder alle Werte, wie im `completed-phase-status`-Array gezeigt, stehen oder entfernen Sie das `completed-phase-status`-Array vollständig.
   + Um Ereignisse nur für einzelne Statusänderungen von Build-Phasen auszulösen, entfernen Sie den Namen des jeweiligen Status einer Build-Phase in dem `completed-phase-status`-Array, für das Sie kein Ereignis auslösen möchten.
   + Um Ereignisse für alle Build-Projekte auszulösen, entfernen Sie das `project-name`-Array.
   + Um Ereignisse für einzelne Build-Projekte auszulösen, geben Sie den Namen des jeweiligen Build-Projekts im `project-name`-Array an. 

   Weitere Informationen zu Ereignismustern finden Sie unter [Ereignismuster](https://docs.aws.amazon.com/eventbridge/latest/userguide/filtering-examples-structure.html) im EventBridge Amazon-Benutzerhandbuch.

   Weitere Informationen zum Filtern mit Ereignismustern finden Sie unter [Inhaltsbasiertes Filtern mit Ereignismustern](https://docs.aws.amazon.com/eventbridge/latest/userguide/content-filtering-with-event-patterns.html) im EventBridge Amazon-Benutzerhandbuch.
**Anmerkung**  
Wenn Sie Ereignisse sowohl für Build-Statusänderungen als auch für Build-Phasenänderungen auslösen möchten, müssen Sie zwei separate Regeln erstellen: eine für Build-Statusänderungen und eine für Build-Phasenänderungen. Wenn Sie versuchen, beide Regeln zu einer einzigen Regel zusammenzufassen, führt die kombinierte Regel ggf. zu unerwarteten Ergebnissen oder funktioniert ggf. gar nicht mehr.

   Wenn Sie mit dem Ersetzen des Codes fertig sind, wählen Sie **Save** (Speichern) aus.

1. Wählen Sie für **Targets** die Option **Add target** aus. 

1. Wählen Sie in der Liste der Ziele **SNS topic** aus. 

1. Als **Topic** wählen Sie das Thema, das Sie zuvor identifiziert oder erstellt haben. 

1. Erweitern Sie **Configure input** und wählen Sie dann **Input Transformer** aus. 

1. Geben Sie im Feld **Input Path (Eingabepfad)** einen der folgenden Eingabepfade ein.

   Geben Sie für eine Regel mit einem `detail-type`-Wert von `CodeBuild Build State Change` Folgendes ein.

   ```
   {"build-id":"$.detail.build-id","project-name":"$.detail.project-name","build-status":"$.detail.build-status"}
   ```

   Geben Sie für eine Regel mit einem `detail-type`-Wert von `CodeBuild Build Phase Change` Folgendes ein.

   ```
   {"build-id":"$.detail.build-id","project-name":"$.detail.project-name","completed-phase":"$.detail.completed-phase","completed-phase-status":"$.detail.completed-phase-status"}
   ```

   Weitere Informationen finden Sie unter [Eingabeformat-Referenz für Build-Benachrichtigungen](sample-build-notifications-ref.md).

1. Geben Sie im Feld **Input Template (Eingabevorlage)** eine der folgenden Eingabevorlagen ein.

   Geben Sie für eine Regel mit einem `detail-type`-Wert von `CodeBuild Build State Change` Folgendes ein.

   ```
   "Build '<build-id>' for build project '<project-name>' has reached the build status of '<build-status>'."
   ```

   Geben Sie für eine Regel mit einem `detail-type`-Wert von `CodeBuild Build Phase Change` Folgendes ein.

   ```
   "Build '<build-id>' for build project '<project-name>' has completed the build phase of '<completed-phase>' with a status of '<completed-phase-status>'."
   ```

1. Wählen Sie **Details konfigurieren**.

1. Geben Sie auf der Seite **Step 2: Configure rule details (Schritt 2: Konfigurieren von Regeldetails)** einen Namen ein und eine optionale Beschreibung ein. Lassen Sie unter **Status** die Option **Enabled (Aktiviert)** ausgewählt.

1. Wählen Sie **Regel erstellen** aus. 

1. Erstellen Sie Build-Projekte, führen Sie die Builds aus und zeigen Sie Build-Informationen an.

1. Bestätigen Sie, CodeBuild dass Build-Benachrichtigungen jetzt erfolgreich gesendet werden. Überprüfen Sie beispielsweise, ob sich die Build-Benachrichtigungs-E-Mails jetzt in Ihrem Posteingang befinden.

Um das Verhalten einer Regel zu ändern, wählen Sie in der CloudWatch Konsole die Regel aus, die Sie ändern möchten, klicken Sie auf **Aktionen** und dann auf **Bearbeiten**. Nehmen Sie Änderungen an der Regel vor, wählen Sie **Configure details (Details konfigurieren)**, und klicken Sie dann auf **Update rule (Regel aktualisieren)**.

Um eine Regel nicht mehr zum Senden von Build-Benachrichtigungen zu verwenden, wählen Sie in der CloudWatch Konsole die Regel aus, die Sie nicht mehr verwenden möchten, wählen Sie **Aktionen** und dann **Deaktivieren** aus.

Um eine Regel vollständig zu löschen, wählen Sie in der CloudWatch Konsole die Regel aus, die Sie löschen möchten, wählen Sie **Aktionen** und dann **Löschen** aus.

# Eingabeformat-Referenz für Build-Benachrichtigungen
<a name="sample-build-notifications-ref"></a>

CloudWatch liefert Benachrichtigungen im JSON-Format.

Benachrichtigungen zu Statusänderungen von Builds verwenden das folgende Format:

```
{
  "version": "0",
  "id": "c030038d-8c4d-6141-9545-00ff7b7153EX",
  "detail-type": "CodeBuild Build State Change",
  "source": "aws.codebuild",
  "account": "123456789012",
  "time": "2017-09-01T16:14:28Z",
  "region": "us-west-2",
  "resources":[
    "arn:aws:codebuild:us-west-2:123456789012:build/my-sample-project:8745a7a9-c340-456a-9166-edf953571bEX"
  ],
  "detail":{
    "build-status": "SUCCEEDED",
    "project-name": "my-sample-project",
    "build-id": "arn:aws:codebuild:us-west-2:123456789012:build/my-sample-project:8745a7a9-c340-456a-9166-edf953571bEX",
    "additional-information": {
      "artifact": {
        "md5sum": "da9c44c8a9a3cd4b443126e823168fEX",
        "sha256sum": "6ccc2ae1df9d155ba83c597051611c42d60e09c6329dcb14a312cecc0a8e39EX",
        "location": "arn:aws:s3:::codebuild-123456789012-output-bucket/my-output-artifact.zip"
      },
      "environment": {
        "image": "aws/codebuild/standard:5.0",
        "privileged-mode": false,
        "compute-type": "BUILD_GENERAL1_SMALL",
        "type": "LINUX_CONTAINER",
        "environment-variables": []
      },
      "timeout-in-minutes": 60,
      "build-complete": true,
      "initiator": "MyCodeBuildDemoUser",
      "build-start-time": "Sep 1, 2017 4:12:29 PM",
      "source": {
        "location": "codebuild-123456789012-input-bucket/my-input-artifact.zip",
        "type": "S3"
      },
      "logs": {
        "group-name": "/aws/codebuild/my-sample-project",
        "stream-name": "8745a7a9-c340-456a-9166-edf953571bEX",
        "deep-link": "https://console.aws.amazon.com/cloudwatch/home?region=us-west-2#logEvent:group=/aws/codebuild/my-sample-project;stream=8745a7a9-c340-456a-9166-edf953571bEX"
      },
      "phases": [
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:12:29 PM",
          "end-time": "Sep 1, 2017 4:12:29 PM",
          "duration-in-seconds": 0,
          "phase-type": "SUBMITTED",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:12:29 PM",
          "end-time": "Sep 1, 2017 4:13:05 PM",
          "duration-in-seconds": 36,
          "phase-type": "PROVISIONING",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:05 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 4,
          "phase-type": "DOWNLOAD_SOURCE",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 0,
          "phase-type": "INSTALL",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 0,
          "phase-type": "PRE_BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 70,
          "phase-type": "BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 0,
          "phase-type": "POST_BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 0,
          "phase-type": "UPLOAD_ARTIFACTS",
          "phase-status": "SUCCEEDED"
        },
         {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:26 PM",
          "duration-in-seconds": 4,
          "phase-type": "FINALIZING",
          "phase-status": "SUCCEEDED"
        },
        {
          "start-time": "Sep 1, 2017 4:14:26 PM",
          "phase-type": "COMPLETED"
        }
      ]
    },
    "current-phase": "COMPLETED",
    "current-phase-context": "[]",
    "version": "1"
  }
}
```

Benachrichtigungen zu Phasenänderungen von Builds verwenden das folgende Format:

```
{
  "version": "0",
  "id": "43ddc2bd-af76-9ca5-2dc7-b695e15adeEX",
  "detail-type": "CodeBuild Build Phase Change",
  "source": "aws.codebuild",
  "account": "123456789012",
  "time": "2017-09-01T16:14:21Z",
  "region": "us-west-2",
  "resources":[
    "arn:aws:codebuild:us-west-2:123456789012:build/my-sample-project:8745a7a9-c340-456a-9166-edf953571bEX"
  ],
  "detail":{
    "completed-phase": "COMPLETED",
    "project-name": "my-sample-project",
    "build-id": "arn:aws:codebuild:us-west-2:123456789012:build/my-sample-project:8745a7a9-c340-456a-9166-edf953571bEX",
    "completed-phase-context": "[]",
    "additional-information": {
      "artifact": {
        "md5sum": "da9c44c8a9a3cd4b443126e823168fEX",
        "sha256sum": "6ccc2ae1df9d155ba83c597051611c42d60e09c6329dcb14a312cecc0a8e39EX",
        "location": "arn:aws:s3:::codebuild-123456789012-output-bucket/my-output-artifact.zip"
      },
      "environment": {
        "image": "aws/codebuild/standard:5.0",
        "privileged-mode": false,
        "compute-type": "BUILD_GENERAL1_SMALL",
        "type": "LINUX_CONTAINER",
        "environment-variables": []
      },
      "timeout-in-minutes": 60,
      "build-complete": true,
      "initiator": "MyCodeBuildDemoUser",
      "build-start-time": "Sep 1, 2017 4:12:29 PM",
      "source": {
        "location": "codebuild-123456789012-input-bucket/my-input-artifact.zip",
        "type": "S3"
      },
      "logs": {
        "group-name": "/aws/codebuild/my-sample-project",
        "stream-name": "8745a7a9-c340-456a-9166-edf953571bEX",
        "deep-link": "https://console.aws.amazon.com/cloudwatch/home?region=us-west-2#logEvent:group=/aws/codebuild/my-sample-project;stream=8745a7a9-c340-456a-9166-edf953571bEX"
      },
      "phases": [
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:12:29 PM",
          "end-time": "Sep 1, 2017 4:12:29 PM",
          "duration-in-seconds": 0,
          "phase-type": "SUBMITTED",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:12:29 PM",
          "end-time": "Sep 1, 2017 4:13:05 PM",
          "duration-in-seconds": 36,
          "phase-type": "PROVISIONING",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:05 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 4,
          "phase-type": "DOWNLOAD_SOURCE",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 0,
          "phase-type": "INSTALL",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 0,
          "phase-type": "PRE_BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 70,
          "phase-type": "BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 0,
          "phase-type": "POST_BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 0,
          "phase-type": "UPLOAD_ARTIFACTS",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:26 PM",
          "duration-in-seconds": 4,
          "phase-type": "FINALIZING",
          "phase-status": "SUCCEEDED"
        },
        {
          "start-time": "Sep 1, 2017 4:14:26 PM",
          "phase-type": "COMPLETED"
        }
      ]  
    },
    "completed-phase-status": "SUCCEEDED",
    "completed-phase-duration-seconds": 4,
    "version": "1",
    "completed-phase-start": "Sep 1, 2017 4:14:21 PM",
    "completed-phase-end": "Sep 1, 2017 4:14:26 PM"
  }
}
```