

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.

# Anwendungsfallbasierte Beispiele für CodeBuild
<a name="use-case-based-samples"></a>

Sie können diese auf Anwendungsfällen basierenden Beispiele verwenden, um mit folgenden Dingen zu experimentieren: AWS CodeBuild

[Serviceübergreifende Stichproben](cross-service-samples.md)  
Eine Liste von dienstübergreifenden Beispielen, mit denen Sie experimentieren können. AWS CodeBuild

[Build Badges-Beispiel](sample-build-badges.md)  
Zeigt, wie die Einrichtung CodeBuild mit Build-Badges durchgeführt wird.

[Beispiel für einen Testbericht](sample-test-report-cli.md)  
Verwendet den, AWS CLI um einen Testbericht zu erstellen, auszuführen und die Ergebnisse eines Testberichts anzuzeigen.

[Docker-Beispiele für CodeBuild](sample-docker-section.md)  
Zeigt, wie Sie benutzerdefinierte Docker-Images verwenden, Docker-Images in einem Repository in Amazon ECR veröffentlichen und Docker-Images in einer privaten Registrierung verwenden.

[Hosten der Build-Ausgabe in einem S3-Bucket ](sample-disable-artifact-encryption.md)  
Zeigt das Erstellen einer statischen Website in einem S3-Bucket mit unverschlüsselten Build-Artefakten.

[ Beispiel für mehrere Ein- und Ausgänge ](sample-multi-in-out.md)  
Demonstriert die Verwendung mehrerer Eingabequellen und mehrerer Ausgabeartefakte in einem Build-Projekt.

[ Beispiele für parallele Testausführungen ](sample-parallel-test.md)  
Zeigt, wie der `codebuild-tests-run` CLI-Befehl verwendet wird, um Tests auf parallel Ausführungsumgebungen aufzuteilen und auszuführen.

[ Laufzeitversionen im Build-Spezfikationsdateibeispiel ](sample-runtime-versions.md)  
Zeigt, wie Sie Laufzeiten und deren Versionen in der Build-Spezifikationsdatei angeben.

[Beispiel für eine Quellversion](sample-source-version.md)  
Zeigt, wie Sie eine bestimmte Version Ihrer Quelle in einem CodeBuild Build-Projekt verwenden.

[Quell-Repository-Beispiele von Drittanbietern für CodeBuild](sample-third-party-source.md)  
Zeigt BitBucket, wie Sie GitHub Enterprise Server- und GitHub Pull-Requests mithilfe von CodeBuild Webhooks erstellen.

[Legen Sie Artefaktnamen zur Build-Zeit mithilfe der semantischen Versionierung fest](sample-buildspec-artifact-naming.md)  
Illustriert die Verwendung des semantischen Versionings zum Erstellen eines Artefaktnamens während der Erstellung des Builds.

# 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"
  }
}
```

# Beispiel für Badges erstellen mit CodeBuild
<a name="sample-build-badges"></a>

AWS CodeBuild unterstützt jetzt die Verwendung von Build-Badges, die ein integrierbares, dynamisch generiertes Bild (*Badge*) bereitstellen, das den Status des letzten Builds für ein Projekt anzeigt. Auf dieses Bild kann über eine öffentlich verfügbare URL zugegriffen werden, die für Ihr Projekt generiert wurde. CodeBuild Auf diese Weise kann jeder den Status eines CodeBuild Projekts einsehen. Build Badges enthalten keine Sicherheitsinformationen, sodass keine Authentifizierung erforderlich ist.

**Topics**
+ [Erstellen Sie ein Build-Projekt mit Build-Badges](#sample-build-badges-request-running)
+ [Greifen Sie auf AWS CodeBuild Build-Badges zu](access-badges.md)
+ [Veröffentlichen Sie Build-Badges CodeBuild](publish-badges.md)
+ [CodeBuild Status der Badges](badge-statuses.md)

## Erstellen Sie ein Build-Projekt mit Build-Badges
<a name="sample-build-badges-request-running"></a>

Gehen Sie wie folgt vor, um ein Build-Projekt mit aktivierten Build-Badges zu erstellen. Sie können AWS CLI oder das AWS-Managementkonsole verwenden.

**Um ein Build-Projekt mit aktivierten Build-Badges zu erstellen ()AWS CLI**
+ Informationen über das Erstellen eines Build-Projekts finden Sie unter [Erstellen eines Build-Projekts (AWS CLI)](create-project.md#create-project-cli). Um Build-Badges in Ihr AWS CodeBuild Projekt aufzunehmen, müssen Sie einen Wert von angeben*badgeEnabled*. `true`

**Um ein Build-Projekt mit aktivierten Build-Badges zu erstellen (Konsole)**

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.  Wenn eine CodeBuild Informationsseite angezeigt wird, wählen Sie Build-Projekt **erstellen**. Erweitern Sie andernfalls im Navigationsbereich **Build**, wählen Sie **Build projects** und dann **Create build project** aus. 

1. Geben Sie unter **Project name (Projektname)** einen Namen für dieses Build-Projekt ein. Die Namen von Build-Projekten müssen für jedes AWS Konto eindeutig sein. Sie können auch eine optionale Beschreibung des Build-Projekts hinzufügen, damit andere Benutzer verstehen, wofür dieses Projekt verwendet wird.

1. Wählen Sie unter **Source (Quelle)** für **Source provider (Quellanbieter)** den Quellcode-Anbietertyp aus und führen Sie dann einen der folgenden Schritte aus:
**Anmerkung**  
 CodeBuild unterstützt keine Build-Badges mit dem Amazon S3 S3-Quellanbieter. Da Amazon S3 für Artefaktübertragungen AWS CodePipeline verwendet wird, werden Build-Badges nicht für Build-Projekte unterstützt, die Teil einer Pipeline sind, die in erstellt wurde. CodePipeline 
   + Wenn Sie **CodeCommit** festgelegt haben, wählen Sie für **Repository** den Namen des Repositorys aus. Wählen Sie **Enable build badge (Build Badge aktivieren)** aus, damit der Build-Status Ihres Projekts sichtbar und integrierbar ist.
   + Wenn Sie möchten **GitHub**, folgen Sie den Anweisungen, um eine Verbindung herzustellen (oder die Verbindung erneut herzustellen). GitHub Wählen Sie auf der Seite **Anwendung GitHub autorisieren** für **Organisationszugriff** neben jedem Repository, auf das Sie **zugreifen können möchten, AWS CodeBuild die Option Zugriff anfordern** aus. Nach der Auswahl von **Authorize application (Anwendung autorisieren)** wählen Sie in der AWS CodeBuild -Konsole für **Repository** den Namen des Repositorys aus, der den Quellcode enthält. Wählen Sie **Enable build badge (Build Badge aktivieren)** aus, damit der Build-Status Ihres Projekts sichtbar und integrierbar ist.
   + Wenn Sie **Bitbucket** ausgewählt haben, folgen Sie den Anweisungen zur Verbindung (oder erneuten Verbindung) mit Bitbucket. Wählen Sie auf der Bitbucket-Seite **Confirm access to your account** für **Organization access** die Option **Grant access** aus. Nachdem Sie **Zugriff gewähren ausgewählt haben**, wählen Sie in der AWS CodeBuild Konsole für **Repository** den Namen des Repositorys aus, das den Quellcode enthält. Wählen Sie **Enable build badge (Build Badge aktivieren)** aus, damit der Build-Status Ihres Projekts sichtbar und integrierbar ist.
**Wichtig**  
Wenn Sie Ihre Projektquelle aktualisieren, kann das Auswirkungen auf die Richtigkeit der Build Badges Ihres Projekts haben.

1. In **Environment** (Umgebung):

   Führen Sie für **Environment image** (Umgebungs-Image) einen der folgenden Schritte aus:
   + Um ein Docker-Image zu verwenden, das von verwaltet wird AWS CodeBuild, wählen Sie **Verwaltetes Image** aus und treffen Sie dann eine Auswahl **unter Betriebssystem**, **Runtime (s)**, ****Image**** und Image-Version. Treffen Sie eine Auswahl unter **Environment type (Umgebungstyp)**, sofern verfügbar.
   + Wenn Sie ein anderes Docker-Image verwenden möchten, wählen Sie **Custom image** (Benutzerdefiniertes Image) aus. **Wählen Sie als **Umgebungstyp** **ARM**, **Linux, Linux** **GPU** oder Windows aus.** Wenn Sie **Andere Registrierung** wählen, geben Sie für **Externe Registrierungs-URL** den Namen und das Tag des Docker-Images in Docker Hub ein. Verwenden Sie dabei das Format. `docker repository/docker image name` Wenn Sie sich für **Amazon ECR** entscheiden, verwenden Sie das **Amazon ECR-Repository** und das **Amazon ECR-Image**, um das Docker-Image in Ihrem Konto auszuwählen. AWS 
   + **Um ein privates Docker-Image zu verwenden, wählen Sie Benutzerdefiniertes Image.** Wählen Sie als **Umgebungstyp** **ARM**, **Linux**, **Linux GPU** oder **Windows** aus. Wählen Sie unter **Image registry (Abbildregistrierung)** die Option **Other registry (Andere Registrierung)** aus und geben Sie dann den ARN der Anmeldeinformationen für Ihr privates Docker-Image ein. Die Anmeldeinformationen müssen von Secrets Manager erstellt werden. Weitere Informationen finden Sie unter [Was ist AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) im *AWS Secrets Manager -Benutzerhandbuch*.

1. Führen Sie unter **Service role** (Service-Rolle) einen der folgenden Schritte aus:
   + Wenn Sie keine CodeBuild Servicerolle haben, wählen Sie **Neue Servicerolle**. Geben Sie im Feld **Rollenname** einen Namen für die neue Rolle ein.
   + Wenn Sie eine CodeBuild Servicerolle haben, wählen Sie **Bestehende Servicerolle** aus. Wählen Sie **unter Role ARN** die Servicerolle aus.
**Anmerkung**  
Wenn Sie die Konsole verwenden, um ein Build-Projekt zu erstellen oder zu aktualisieren, können Sie gleichzeitig eine CodeBuild Servicerolle erstellen. In der Standardeinstellung funktioniert diese Rolle ausschließlich mit diesem Projekt. Wenn Sie die Konsole verwenden, um die Servicerolle mit einem anderen Build-Projekt zu verknüpfen, wird die Rolle so aktualisiert, dass sie mit dem anderen Build-Projekt funktioniert. Eine Servicerolle kann in bis zu zehn Build-Projekten verwendet werden.

1. Führen Sie in **Buildspec** einen der folgenden Schritte aus:
   + Wählen Sie Buildspec-Datei **verwenden, um die Datei buildspec.yml** im Quellcode-Stammverzeichnis zu verwenden.
   + Wählen Sie Build-Befehle **einfügen, um die Konsole zum Einfügen von Build-Befehlen** zu verwenden.

   Weitere Informationen hierzu finden Sie unter [Build-Spezifikationsreferenz](build-spec-ref.md).

1. Führen Sie unter **Artifacts (Artefakte)** für **Type** (Typ) einen der folgenden Schritte aus:
   + Wenn keine Build-Ausgabeartefakte erstellt werden sollen, klicken Sie auf die Option **No artifacts (Keine Artefakte)**.
   + Um die Build-Ausgabe in einem S3-Bucket zu speichern, wählen Sie **Amazon S3** und gehen Sie dann wie folgt vor:
     + Lassen Sie **Name** leer, wenn Sie den Projektnamen für die ZIP-Datei mit der Build-Ausgabe verwenden möchten. Geben Sie andernfalls den Namen ein. Standardmäßig ist der Artefaktname der Projektname. Wenn Sie einen anderen Namen verwenden möchten, geben Sie diesen in das Feld für den Artefaktnamen ein. Wenn Sie eine ZIP-Datei ausgeben möchten, schließen Sie die ZIP-Erweiterung mit ein.
     + Wählen Sie für **Bucket name** den Namen des Ausgabe-Buckets aus.
     + Wenn Sie in diesem Vorgang zuvor die Option **Insert build commands (Build-Befehle einfügen)** verwendet haben, geben Sie für **Output files (Ausgabedateien)** die Speicherorte der Build-Dateien ein, die in der ZIP-Datei oder in dem Ordner für die Build-Ausgabe enthalten sein sollen. Bei mehreren Speicherorten trennen Sie die einzelnen Speicherorte durch ein Komma, (wie z. B. `appspec.yml, target/my-app.jar`). Weitere Informationen finden Sie in der Beschreibung von `files` in [Syntax der Build-Spezifikation](build-spec-ref.md#build-spec-ref-syntax).

1. Erweitern Sie **Additional configuration (Zusätzliche Einstellungen)** und wählen Sie die entsprechenden Optionen.

1. Wählen Sie **Create build project (Build-Projekt erstellen)** aus. Klicken Sie auf der Seite **Review (Überprüfen)** auf **Start build (Build starten)**, um den Build auszuführen.

# Greifen Sie auf AWS CodeBuild Build-Badges zu
<a name="access-badges"></a>

Sie können die AWS CodeBuild Konsole oder die verwenden AWS CLI , um auf Build-Badges zuzugreifen.
+ Wählen Sie in der CodeBuild Konsole in der Liste der Build-Projekte in der Spalte **Name** den Link aus, der dem Build-Projekt entspricht. Wählen Sie auf der *project-name* Seite **Build-Projekt:** unter **Konfiguration** die Option **Badge-URL kopieren** aus. Weitere Informationen finden Sie unter [Anzeigen der Details eines Build-Projekts (Konsole)](view-project-details.md#view-project-details-console).
+ Führen Sie in AWS CLI den den den `batch-get-projects` Befehl aus. Die Build Badge-URL ist im Abschnitt zu den Projektumgebungsdetails der Ausgabe enthalten. Weitere Informationen finden Sie unter [Anzeigen der Details eines Build-Projekts (AWS CLI)](view-project-details.md#view-project-details-cli).

Die URL für die Build-Badge-Anfrage wird mit einem gemeinsamen Standard-Branch generiert. Sie können jedoch jeden Branch in Ihrem Quell-Repository angeben, den Sie zum Ausführen eines Builds verwendet haben. Beispiel:

```
https://codebuild.us-east-1.amazon.com/badges?uuid=...&branch=<branch>
```

Sie können auch ein Tag aus Ihrem Quell-Repository angeben, indem Sie den Parameter durch den `branch` `tag` Parameter in der Badge-URL ersetzen. Beispiel: 

```
https://codebuild.us-east-1.amazon.com/badges?uuid=...&tag=<tag>
```

# Veröffentlichen Sie Build-Badges CodeBuild
<a name="publish-badges"></a>

Sie können den Status des neuesten Builds in einer Markdown-Datei anzeigen, indem Sie Ihre Build-Badge-URL in einem Markdown-Bild verwenden. Dies ist nützlich, um den Status des neuesten Builds in der Datei readme.md in Ihrem Quell-Repository anzuzeigen (zum Beispiel oder). GitHub CodeCommit Beispiel:

```
![](<build badge URL>)
```

# CodeBuild Status der Badges
<a name="badge-statuses"></a>

Das CodeBuild Build-Badge kann einen der folgenden Status haben.
+ **PASSING** Der neueste Build der angegebenen Verzweigung wurde übergeben. 
+ **FAILING** Der neueste Build der angegebenen Verzweigung hat das Zeitlimit überschritten, ist fehlgeschlagen, fehlerhaft oder wurde gestoppt.
+ **IN\$1PROGRESS** Der neueste Build für die angegebene Verzweigung wird verarbeitet.
+ **UNKNOWN** Das Projekt hat für die angegebene Verzweigung oder generell noch keinen Build ausgeführt. Darüber hinaus ist die Funktion zum Erstellen von Badges möglicherweise deaktiviert.

# „Testbericht mit dem AWS CLI“ -Beispiel
<a name="sample-test-report-cli"></a>

Tests, die Sie in der buildspec-Datei angeben, werden während des Builds ausgeführt. Dieses Beispiel zeigt Ihnen, wie Sie mit AWS CLI dem Tests in Builds integrieren können CodeBuild. Sie können JUnit es verwenden, um Komponententests zu erstellen, oder Sie können ein anderes Tool verwenden, um Konfigurationstests zu erstellen. Anschließend können Sie die Testergebnisse auswerten, um Probleme zu beheben oder Ihre Anwendung zu optimieren. 

Sie können die CodeBuild API oder die AWS CodeBuild Konsole verwenden, um auf die Testergebnisse zuzugreifen. In diesem Beispiel wird gezeigt, wie Sie den Bericht so konfigurieren, dass die Testergebnisse in einen S3-Bucket exportiert werden. 

**Topics**
+ [Führen Sie das Testberichtsbeispiel aus](#sample-test-report-cli-run)

## Führen Sie das Testberichtsbeispiel aus
<a name="sample-test-report-cli-run"></a>

Gehen Sie wie folgt vor, um das Testberichtsbeispiel auszuführen.

**Topics**
+ [Voraussetzungen](#sample-test-report-cli-prerequisites)
+ [Schritt 1: Erstellen Sie eine Berichtsgruppe](#sample-test-report-cli-create-report)
+ [Schritt 2: Konfigurieren Sie ein Projekt mit einer Berichtsgruppe](#sample-test-report-cli-create-project-with-report)
+ [Schritt 3: Ausführen und Anzeigen der Ergebnisse eines Berichts](#sample-test-report-cli-run-and-view-report-results)

### Voraussetzungen
<a name="sample-test-report-cli-prerequisites"></a>
+ Erstellen Sie Ihre Testfälle. Dieses Beispiel geht von der Annahme aus, dass Sie Testfälle in Ihren Testbericht aufnehmen müssen. Sie geben den Speicherort Ihrer Testdateien in der buildspec-Datei an. 

  Die folgenden Dateiformate für Testberichte werden unterstützt:
  + Gurke JSON (.json)
  + JUnit XML (.xml)
  + NUnit XML (.xml)
  + NUnit3 XML (.xml)
  + TestNG XML (.xml)
  + Visual Studio TRX (.trx)
  + Visual Studio TRX XML (.xml)

  Erstellen Sie Ihre Testfälle mit einem beliebigen Testframework, das Berichtsdateien in einem dieser Formate erstellen kann (z. B. JUnit Surefire-Plugin, TestNG oder Cucumber).
+ Erstellen Sie einen S3-Bucket und notieren Sie sich dessen Namen. Weitere Informationen finden Sie unter [Wie erstelle ich einen S3-Bucket](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html)? im *Amazon S3 S3-Benutzerhandbuch*. 
+ Erstellen Sie eine IAM-Rolle und notieren Sie sich ihren ARN. Sie benötigen den ARN, wenn Sie Ihr Build-Projekt erstellen. 
+ Wenn Ihre Rolle nicht über die folgenden Berechtigungen verfügt, fügen Sie sie hinzu. 

  ```
  {
      "Effect": "Allow",
      "Resource": [
          "*"
      ],
      "Action": [
          "codebuild:CreateReportGroup",
          "codebuild:CreateReport",
          "codebuild:UpdateReport",
          "codebuild:BatchPutTestCases"
      ]
  }
  ```

   Weitere Informationen finden Sie unter [Berechtigungen für Testberichtoperationen](test-permissions.md#test-permissions-related-to-reporting). 

### Schritt 1: Erstellen Sie eine Berichtsgruppe
<a name="sample-test-report-cli-create-report"></a>

1. Erstellen Sie eine Datei namens `CreateReportGroupInput.json`. 

1. Erstellen Sie einen Ordner in Ihrem S3-Bucket, in den die Testergebnisse exportiert werden. 

1. Kopieren Sie Folgendes in `CreateReportGroupInput.json`. Verwenden Sie für `<bucket-name>` den Namen des S3-Buckets. Geben Sie für `<path-to-folder>` den Pfad zu dem Ordner in Ihrem S3-Bucket ein. 

   ```
   {
     "name": "<report-name>",
     "type": "TEST",
     "exportConfig": {
       "exportConfigType": "S3",
       "s3Destination": {
         "bucket": "<bucket-name>",
         "path": "<path-to-folder>",
         "packaging": "NONE"
       }
     }
   }
   ```

1. Führen Sie im Verzeichnis, das `CreateReportGroupInput.json` enthält, den folgenden Befehl aus.

   ```
   aws codebuild create-report-group --cli-input-json file://CreateReportGroupInput.json
   ```

   Die Ausgabe sieht wie folgt aus. Notieren Sie sich den ARN für die `reportGroup`. Sie verwenden diesen, wenn Sie ein Projekt erstellen, das diese Berichtsgruppe verwendet.

   ```
   {
     "reportGroup": {
       "arn": "arn:aws:codebuild:us-west-2:123456789012:report-group/<report-name>",
       "name": "<report-name>",
       "type": "TEST",
       "exportConfig": {
         "exportConfigType": "S3",
         "s3Destination": {
           "bucket": "<s3-bucket-name>",
           "path": "<folder-path>",
           "packaging": "NONE",
           "encryptionKey": "arn:aws:kms:us-west-2:123456789012:alias/aws/s3"
         }
       },
       "created": 1570837165.885,
       "lastModified": 1570837165.885
     }
   }
   ```

### Schritt 2: Konfigurieren Sie ein Projekt mit einer Berichtsgruppe
<a name="sample-test-report-cli-create-project-with-report"></a>

Um einen Bericht auszuführen, erstellen Sie zunächst ein CodeBuild Build-Projekt, das mit Ihrer Berichtsgruppe konfiguriert ist. Testfälle, die für Ihre Berichtsgruppe angegeben wurden, werden ausgeführt, wenn Sie einen Build ausführen. 

1. Erstellen Sie eine buildspec-Datei mit dem Namen `buildspec.yml`. 

1. Verwenden Sie die folgende YAML als Vorlage für Ihre `buildspec.yml`-Datei. Stellen Sie sicher, dass Sie die Befehle einschließen, die Ihre Tests ausführen. Geben Sie im `reports`-Abschnitt die Dateien an, die die Ergebnisse Ihrer Testfälle enthalten. In diesen Dateien werden die Testergebnisse gespeichert, auf die Sie zugreifen können CodeBuild. Sie verfallen 30 Tage nach ihrer Erstellung. Diese Dateien unterscheiden sich von den Roh-Testfall-Ergebnisdateien, die Sie in einen S3-Bucket exportieren.

   ```
   version: 0.2
       phases:
       install:
           runtime-versions:
               java: openjdk8
       build:
         commands:
           - echo Running tests 
           - <enter commands to run your tests>
           
       reports:
         <report-name-or-arn>: #test file information
         files:
           - '<test-result-files>'
         base-directory: '<optional-base-directory>'
         discard-paths: false #do not remove file paths from test result files
   ```
**Anmerkung**  
Anstelle des ARN einer vorhandenen Berichtsgruppe können Sie auch einen Namen für eine nicht erstellte Berichtsgruppe angeben. Wenn Sie einen Namen anstelle eines ARN angeben, CodeBuild wird bei der Ausführung eines Builds eine Berichtsgruppe erstellt. Der Name enthält Ihren Projektnamen und den Namen, den Sie in der buildspec-Datei in folgendem Format angeben: `project-name-report-group-name`. Weitere Informationen erhalten Sie unter [Testberichte erstellen](report-create.md) und [Benennung von Berichtsgruppen](test-report-group-naming.md). 

1. Erstellen Sie eine Datei namens `project.json`. Diese Datei enthält die Eingabe für den **create-project**-Befehl. 

1. Kopieren Sie den folgenden JSON in `project.json`. Geben Sie für `source` den Typ und den Speicherort des Repositorys ein, das die Quelldateien enthält. Geben Sie für `serviceRole` den ARN der Rolle an, die Sie verwenden. 

   ```
   {
     "name": "test-report-project",
     "description": "sample-test-report-project",
     "source": {
       "type": "CODECOMMIT|CODEPIPELINE|GITHUB|S3|BITBUCKET|GITHUB_ENTERPRISE|NO_SOURCE",
       "location": "<your-source-url>"
     },
     "artifacts": {
       "type": "NO_ARTIFACTS"
     },
     "cache": {
       "type": "NO_CACHE"
     },
     "environment": {
       "type": "LINUX_CONTAINER",
       "image": "aws/codebuild/standard:5.0",
       "computeType": "small"
     },
     "serviceRole": "arn:aws:iam::<your-aws-account-id>:role/service-role/<your-role-name>"
   }
   ```

1. Führen Sie im Verzeichnis, das `project.json` enthält, den folgenden Befehl aus. Dadurch wird ein Projekt mit dem Namen `test-project` erstellt. 

   ```
   aws codebuild create-project --cli-input-json file://project.json
   ```

### Schritt 3: Ausführen und Anzeigen der Ergebnisse eines Berichts
<a name="sample-test-report-cli-run-and-view-report-results"></a>

In diesem Abschnitt führen Sie einen Build des zuvor erstellten Projekts aus. CodeBuild Erstellt während des Erstellungsprozesses einen Bericht mit den Ergebnissen der Testfälle. Der Bericht ist in der von Ihnen angegebenen Berichtsgruppe enthalten. 

1. Führen Sie den folgenden Befehl aus, um einen Build zu starten. `test-report-project`ist der Name des oben erstellten Build-Projekts. Notieren Sie sich die Build-ID, die in der Ausgabe angezeigt wird. 

   ```
   aws codebuild start-build --project-name test-report-project
   ```

1. Führen Sie den folgenden Befehl aus, um Informationen zu Ihrem Build abzurufen, einschließlich des ARN Ihres Berichts. Geben Sie für `<build-id>` Ihre Build-ID an. Notieren Sie sich den Berichts-ARN in der `reportArns` Eigenschaft der Ausgabe. 

   ```
   aws codebuild batch-get-builds --ids <build-id>
   ```

1. Führen Sie den folgenden Befehl aus, um Details zu Ihrem Bericht abzurufen. Geben Sie für `<report-arn>` den Berichts-ARN an. 

   ```
   aws codebuild batch-get-reports --report-arns <report-arn>
   ```

   Die Ausgabe sieht wie folgt aus. Diese Beispielausgabe zeigt, wie viele der Tests erfolgreich waren, fehlschlugen, übersprungen wurden, zu einem Fehler geführt haben oder einen unbekannten Status zurückgaben.

   ```
   {
     "reports": [
       {
         "status": "FAILED",
         "reportGroupArn": "<report-group-arn>",
         "name": "<report-group-name>",
         "created": 1573324770.154,
         "exportConfig": {
           "exportConfigType": "S3",
           "s3Destination": {
             "bucket": "<amzn-s3-demo-bucket>",
             "path": "<path-to-your-report-results>",
             "packaging": "NONE",
             "encryptionKey": "<encryption-key>"
           }
         },
         "expired": 1575916770.0,
         "truncated": false,
         "executionId": "arn:aws:codebuild:us-west-2:123456789012:build/<name-of-build-project>:2c254862-ddf6-4831-a53f-6839a73829c1",
         "type": "TEST",
         "arn": "<report-arn>",
         "testSummary": {
           "durationInNanoSeconds": 6657770,
           "total": 11,
           "statusCounts": {
             "FAILED": 3,
             "SKIPPED": 7,
             "ERROR": 0,
             "SUCCEEDED": 1,
             "UNKNOWN": 0
           }
         }
       }
     ],
     "reportsNotFound": []
   }
   ```

1. Führen Sie den folgenden Befehl aus, um Informationen zu Testfällen für Ihren Bericht aufzulisten. Geben Sie für `<report-arn>` den ARN Ihres Berichts an. Für den optionalen `--filter`-Parameter können Sie ein Statusergebnis (`SUCCEEDED`, `FAILED`, `SKIPPED`, `ERROR` oder `UNKNOWN`) angeben. 

   ```
   aws codebuild describe-test-cases \
       --report-arn <report-arn> \
       --filter status=SUCCEEDED|FAILED|SKIPPED|ERROR|UNKNOWN
   ```

    Die Ausgabe sieht wie folgt aus. 

   ```
   {
     "testCases": [
       {
         "status": "FAILED",
         "name": "Test case 1",
         "expired": 1575916770.0,
         "reportArn": "<report-arn>",
         "prefix": "Cucumber tests for agent",
         "message": "A test message",
         "durationInNanoSeconds": 1540540,
         "testRawDataPath": "<path-to-output-report-files>"
       },
       {
         "status": "SUCCEEDED",
         "name": "Test case 2",
         "expired": 1575916770.0,
         "reportArn": "<report-arn>",
         "prefix": "Cucumber tests for agent",
         "message": "A test message",
         "durationInNanoSeconds": 1540540,
         "testRawDataPath": "<path-to-output-report-files>"
       }
     ]
   }
   ```

# Docker-Beispiele für CodeBuild
<a name="sample-docker-section"></a>

In diesem Abschnitt werden Beispielintegrationen zwischen Docker und beschrieben. AWS CodeBuild


| Beispiel | Description | 
| --- | --- | 
|  [Docker im benutzerdefinierten Bildbeispiel für CodeBuild](sample-docker-custom-image.md)  |  In diesem Beispiel wird ein Docker-Image mithilfe eines benutzerdefinierten Docker-Build-Images (`docker:dind`in Docker Hub) erstellt CodeBuild und ausgeführt.   | 
|  [Beispiel für einen Docker-Image-Build-Server für CodeBuild](sample-docker-server.md)  |  In diesem Beispiel werden Ihre Docker-Builds auf einen verwalteten Image-Build-Server ausgelagert.   | 
|  [Windows Docker Builds Beispiel für CodeBuild](sample-windows-docker-custom-image.md)  |  In diesem Beispiel wird ein Windows Docker-Image mithilfe von erstellt und ausgeführt. CodeBuild  | 
|  [Beispiel „Docker-Image in einem Amazon ECR-Image-Repository veröffentlichen“ für CodeBuild](sample-docker.md)  |  Dieses Beispiel erzeugt als Build-Ausgabe ein Docker-Image und überträgt das Docker-Image dann in ein Amazon Elastic Container Registry (Amazon ECR) -Image-Repository.   | 
|  [Privates Register mit AWS Secrets Manager Muster für CodeBuild](sample-private-registry.md)  |  Dieses Beispiel zeigt Ihnen, wie Sie ein Docker-Image, das in einer privaten Registrierung gespeichert ist, als Ihre Laufzeitumgebung verwenden. CodeBuild   | 

# Docker im benutzerdefinierten Bildbeispiel für CodeBuild
<a name="sample-docker-custom-image"></a>

Im folgenden Beispiel wird ein Docker-Image mithilfe eines benutzerdefinierten Docker-Build-Images (`docker:dind`in Docker Hub) erstellt AWS CodeBuild und ausgeführt. 

Informationen dazu, wie Sie ein Docker-Image erstellen, indem Sie stattdessen ein Build-Image verwenden, das von der Docker-Unterstützung bereitgestellt wird CodeBuild , finden Sie in unserer. [Beispiel für „Docker-Image auf Amazon ECR veröffentlichen“](sample-docker.md)

**Wichtig**  
Die Ausführung dieses Beispiels kann zu Gebühren für Ihr AWS Konto führen. Dazu gehören mögliche Gebühren für CodeBuild und für AWS Ressourcen und Aktionen im Zusammenhang mit Amazon S3 und CloudWatch Logs. AWS KMS 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) und [ CloudWatchAmazon-Preise](https://aws.amazon.com/cloudwatch/pricing).

**Topics**
+ [Führen Sie den Docker in einem benutzerdefinierten Image-Beispiel aus](#sample-docker-custom-image-running)

## Führen Sie den Docker in einem benutzerdefinierten Image-Beispiel aus
<a name="sample-docker-custom-image-running"></a>

Gehen Sie wie folgt vor, um das Beispiel Docker in einem benutzerdefinierten Image auszuführen. Weitere Informationen zu diesem Beispiel finden Sie unter[Docker im benutzerdefinierten Bildbeispiel für CodeBuild](#sample-docker-custom-image).

**Beispiel für die Ausführung von Docker in einem benutzerdefinierten Image**

1. Erstellen Sie die Dateien wie in den [Dateien](#sample-docker-custom-image-files) Abschnitten [Verzeichnisstruktur](#sample-docker-custom-image-dir) und beschrieben dieses Themas 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-docker-custom-image-project",
     "source": {
       "type": "S3",
       "location": "codebuild-region-ID-account-ID-input-bucket/DockerCustomImageSample.zip"
     },
     "artifacts": {
       "type": "NO_ARTIFACTS"
     },
     "environment": {
       "type": "LINUX_CONTAINER",
       "image": "docker:dind",
       "computeType": "BUILD_GENERAL1_SMALL",
       "privilegedMode": false
     },
     "serviceRole": "arn:aws:iam::account-ID:role/role-name",
     "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID"
   }
   ```
**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. Zum Anzeigen der Build-Ergebnisse sehen Sie sich die Zeichenfolge `Hello, World!` im Build-Protokoll an. Weitere Informationen finden Sie unter [Anzeigen von Build-Details](view-build-details.md).

### Verzeichnisstruktur
<a name="sample-docker-custom-image-dir"></a>

In diesem Beispiel wird von dieser Verzeichnisstruktur ausgegangen.

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

### Dateien
<a name="sample-docker-custom-image-files"></a>

Die Basis-Image des Betriebssystems in diesem Beispiel ist Ubuntu. Das Beispiel verwendet diese Dateien.

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

```
version: 0.2

phases:
  pre_build:
    commands:
      - docker build -t helloworld .
  build:
    commands:
      - docker images
      - docker run helloworld echo "Hello, World!"
```

`Dockerfile` (in `(root directory name)`)

```
FROM maven:3.3.9-jdk-8
 
RUN echo "Hello World"
```

# Beispiel für einen Docker-Image-Build-Server für CodeBuild
<a name="sample-docker-server"></a>

Im folgenden Beispiel werden Ihre Docker-Builds auf einen verwalteten Image-Build-Server ausgelagert. Sie können dieses Beispiel anpassen, um einen dedizierten und verwalteten Docker-Image-Build-Server in Ihrer CodeBuild Projektkonfiguration bereitzustellen. Beachten Sie, dass die bereitgestellte Instanz aktiv ist, solange Builds für das Projekt aktiv ausgeführt werden, und dass die Instanz gestoppt wird, wenn Builds nicht ausgeführt werden. Die bereitgestellte Instanz wird bis zu einem Monat gespeichert, bevor sie recycelt wird. Weitere Informationen finden Sie unter [ CodeBuild Docker Server Capability](https://aws.amazon.com/blogs//aws/accelerate-ci-cd-pipelines-with-the-new-aws-codebuild-docker-server-capability).

**Wichtig**  
Die Ausführung dieses Beispiels kann zu Gebühren für Ihr AWS Konto führen. Dazu gehören mögliche Gebühren für CodeBuild und für AWS Ressourcen und Aktionen im Zusammenhang mit Amazon S3 und CloudWatch Logs. AWS KMS 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) und [ CloudWatchAmazon-Preise](https://aws.amazon.com/cloudwatch/pricing).

**Topics**
+ [Konfigurieren Sie einen Docker-Server](#sample-docker-server-running)

## Konfigurieren Sie einen Docker-Server
<a name="sample-docker-server-running"></a>

Gehen Sie wie folgt vor, um eine dedizierte Rechenumgebung für ein CodeBuild Projekt bereitzustellen, das Docker-Workloads verwaltet und Docker-Image-Ebenen speichert. 

**Um einen Docker-Server zu konfigurieren**

1. Erstellen Sie die Dateien wie in den [Dateien](#sample-docker-server-files) Abschnitten [Verzeichnisstruktur](#sample-docker-server-dir) 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:

   1. Wählen Sie im Bereich **Umgebung** der Konsole **Zusätzliche Konfiguration** aus, navigieren Sie zu **Docker-Serverkonfiguration** und wählen Sie dann **Docker-Server für dieses Projekt aktivieren** aus. **Sie können dann den **Compute-Typ des Docker-Servers** auswählen und einen Registrierungsnachweis angeben.**

   1. 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-docker-custom-image-project",
        "source": {
          "type": "S3",
          "location": "codebuild-region-ID-account-ID-input-bucket/DockerServerSample.zip"
        },
        "artifacts": {
          "type": "NO_ARTIFACTS"
        },
        "environment": {
          "type": "LINUX_CONTAINER",
          "image": "aws/codebuild/amazonlinux-x86_64-standard:5.0",
          "computeType": "BUILD_GENERAL1_LARGE",
          "dockerServer": [ 
               { 
                  "computeType": "BUILD_GENERAL1_LARGE",
                  "securityGroupIds": [ "security-groups-ID" ]
               }
            ]
        },
        "serviceRole": "arn:aws:iam::account-ID:role/role-name"
      }
      ```
**Anmerkung**  
Für Docker-Server konfigurierte Sicherheitsgruppen sollten eingehenden Netzwerkverkehr von der im Projekt konfigurierten VPC zulassen. Sie sollten den Zugriff auf Port 9876 zulassen.

1. Zum Anzeigen der Build-Ergebnisse sehen Sie sich die Zeichenfolge `Hello, World!` im Build-Protokoll an. Weitere Informationen finden Sie unter [Anzeigen von Build-Details](view-build-details.md).

### Verzeichnisstruktur
<a name="sample-docker-server-dir"></a>

In diesem Beispiel wird von dieser Verzeichnisstruktur ausgegangen.

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

### Dateien
<a name="sample-docker-server-files"></a>

Die Basis-Image des Betriebssystems in diesem Beispiel ist Ubuntu. Das Beispiel verwendet diese Dateien.

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

```
version: 0.2

phases:
  build:
    commands:
      - docker buildx build -t helloworld --load .
      - docker run helloworld echo "Hello, World!"
```

`Dockerfile` (in `(root directory name)`)

```
FROM public.ecr.aws/amazonlinux/amazonlinux:latest 
 
RUN echo "Hello World"
```

# Windows Docker Builds Beispiel für CodeBuild
<a name="sample-windows-docker-custom-image"></a>

Im folgenden Beispiel wird ein Windows Docker-Image mithilfe von erstellt und ausgeführt. CodeBuild

**Topics**
+ [Beispiel „Windows Docker Builds“ ausführen](#sample-windows-docker-build-running)

## Beispiel „Windows Docker Builds“ ausführen
<a name="sample-windows-docker-build-running"></a>

Gehen Sie wie folgt vor, um die Windows Docker-Builds auszuführen.

**Beispiel für die Ausführung von Windows Docker-Builds**

1. Erstellen Sie die Dateien wie in den [Dateien](#sample-windows-docker-custom-image-files) Abschnitten [Verzeichnisstruktur](#sample-windows-docker-custom-image-dir) und beschrieben dieses Themas 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. Erstellen Sie eine `WINDOWS_EC2` Flotte.

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

   ```
   {
     "name": "fleet-name",
     "baseCapacity": 1,
     "environmentType": "WINDOWS_EC2",
     "computeType": "BUILD_GENERAL1_MEDIUM"
   }
   ```

1. Erstellen Sie ein Build-Projekt, führen Sie den Build aus und zeigen Sie 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": "project-name",
     "source": {
       "type": "S3",
       "location": "bucket-name/DockerImageSample.zip"
     },
     "artifacts": {
       "type": "NO_ARTIFACTS"
     },
     "environment": {
       "type": "WINDOWS_EC2",
       "image": "Windows",
       "computeType": "BUILD_GENERAL1_MEDIUM",
       "fleet": {
          "fleetArn": "fleet-arn"
       }
     },
     "serviceRole": "arn:aws:iam::account-ID:role/role-name"
   }
   ```

1. Zum Anzeigen der Build-Ergebnisse sehen Sie sich die Zeichenfolge `Hello, World!` im Build-Protokoll an. Weitere Informationen finden Sie unter [Anzeigen von Build-Details](view-build-details.md).

### Verzeichnisstruktur
<a name="sample-windows-docker-custom-image-dir"></a>

In diesem Beispiel wird von dieser Verzeichnisstruktur ausgegangen.

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

### Dateien
<a name="sample-windows-docker-custom-image-files"></a>

Das Basis-Image des in diesem Beispiel verwendeten Betriebssystems ist. `mcr.microsoft.com/windows/servercore:ltsc2022` Das Beispiel verwendet diese Dateien.

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

```
version: 0.2

phases:
  pre_build:
    commands:
      - docker build -t helloworld .
  build:
    commands:
      - docker images
      - docker run helloworld powershell -Command "Write-Host 'Hello World!'"
```

`Dockerfile` (in `(root directory name)`)

```
FROM mcr.microsoft.com/windows/servercore:ltsc2022

RUN powershell -Command "Write-Host 'Hello World'"
```

# Beispiel „Docker-Image in einem Amazon ECR-Image-Repository veröffentlichen“ für CodeBuild
<a name="sample-docker"></a>

Dieses Beispiel erzeugt als Build-Ausgabe ein Docker-Image und überträgt das Docker-Image dann in ein Amazon Elastic Container Registry (Amazon ECR) -Image-Repository. Sie können dieses Beispiel so anpassen, dass das Docker-Image im Docker Hub bereitgestellt wird. Weitere Informationen finden Sie unter [Passen Sie das Beispiel „Docker-Image in Amazon ECR veröffentlichen“ an, um es auf Docker Hub zu übertragen](sample-docker-docker-hub.md).

Informationen zum Erstellen eines Docker-Image mit einem benutzerdefinierten Docker Build-Image (`docker:dind` im Docker Hub) finden Sie unter [Docker im benutzerdefinierten Image – Beispiel](sample-docker-custom-image.md).

Dieses Beispiel wurde mit einem Verweis auf `golang:1.12` getestet.

In diesem Beispiel wird die mehrstufige Builds-Funktion von Docker verwendet, durch die ein Docker-Image als Build-Ausgabe produziert wird. Anschließend wird das Docker-Image in ein Amazon ECR-Image-Repository übertragen. Mehrstufige Docker-Image-Builds reduzieren die Größe des endgültigen Docker-Image. Weitere Informationen finden Sie unter [Use multi-stage builds with Docker](https://docs.docker.com/engine/userguide/eng-image/multistage-build/).

**Wichtig**  
Die Ausführung dieses Beispiels kann dazu führen, dass Ihr Konto belastet wird. AWS 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 Beispiel „Docker-Image in Amazon ECR veröffentlichen“ aus](#sample-docker-running)
+ [Passen Sie das Beispiel „Docker-Image in Amazon ECR veröffentlichen“ an, um es auf Docker Hub zu übertragen](sample-docker-docker-hub.md)

## Führen Sie das Beispiel „Docker-Image in Amazon ECR veröffentlichen“ aus
<a name="sample-docker-running"></a>

Gehen Sie wie folgt vor, um das Beispiel auszuführen, das ein Docker-Image in Amazon ECR veröffentlicht. Weitere Informationen zu diesem Beispiel finden Sie unter. [Beispiel „Docker-Image in einem Amazon ECR-Image-Repository veröffentlichen“ für CodeBuild](#sample-docker)

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

1. Wenn Sie bereits über ein Bild-Repository in Amazon ECR verfügen, das Sie verwenden möchten, fahren Sie mit Schritt 3 fort. Andernfalls, wenn Sie einen Benutzer anstelle eines AWS Root-Kontos oder eines Administratorbenutzers für die Arbeit mit Amazon ECR verwenden, fügen Sie diese Anweisung (zwischen *\$1\$1\$1 BEGIN ADDING STATEMENT HERE \$1\$1\$1* und*\$1\$1\$1 END ADDING STATEMENT HERE \$1\$1\$1*) dem Benutzer (oder der IAM-Gruppe, der der Benutzer zugeordnet ist) hinzu. Die Verwendung eines AWS Root-Kontos wird nicht empfohlen. Diese Anweisung ermöglicht die Erstellung von Amazon ECR-Repositorys zum Speichern von Docker-Images. 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 Richtlinie ein. *Weitere Informationen finden Sie unter [Arbeiten mit Inline-Richtlinien mithilfe von](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html#AddingPermissions_Console) im Benutzerhandbuch. AWS-Managementkonsole* 

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ecr:CreateRepository"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------
**Anmerkung**  
Die IAM-Entität, die diese Richtlinie ändert, muss in IAM über die Berechtigung zum Ändern von Richtlinien verfügen.

1. Erstellen Sie ein Bild-Repository in Amazon ECR. Stellen Sie sicher, dass Sie das Repository in derselben AWS Region erstellen, in der Sie Ihre Build-Umgebung erstellen und Ihren Build ausführen. Weitere Informationen finden Sie unter [Erstellen eines Repositorys](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) im *Amazon ECR-Benutzerhandbuch*. Der Name dieses Repositorys muss mit dem Namen des Repositorys übereinstimmen, den Sie zu einem späteren Zeitpunkt in diesem Verfahren festlegen und der durch die `IMAGE_REPO_NAME`-Umgebungsvariable dargestellt wird. Stellen Sie sicher, dass die Amazon ECR-Repository-Richtlinie Image-Push-Zugriff für Ihre CodeBuild Service-IAM-Rolle gewährt. 

1. Fügen Sie diese Erklärung (zwischen *\$1\$1\$1 BEGIN ADDING STATEMENT HERE \$1\$1\$1* und*\$1\$1\$1 END ADDING STATEMENT HERE \$1\$1\$1*) zu der Richtlinie hinzu, die Sie Ihrer AWS CodeBuild Servicerolle zugeordnet haben. Diese Anweisung ermöglicht das Hochladen CodeBuild von Docker-Images in Amazon ECR-Repositorys. 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 Richtlinie ein. 

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ecr:BatchCheckLayerAvailability",
                   "ecr:CompleteLayerUpload",
                   "ecr:GetAuthorizationToken",
                   "ecr:InitiateLayerUpload",
                   "ecr:PutImage",
                   "ecr:UploadLayerPart"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------
**Anmerkung**  
Die IAM-Entität, die diese Richtlinie ändert, muss in IAM über die Erlaubnis verfügen, Richtlinien zu ändern.

1. Erstellen Sie die Dateien wie in den [Dateien](#sample-docker-files) Abschnitten [Verzeichnisstruktur](#sample-docker-dir) und in diesem Thema beschrieben und laden Sie sie dann in einen S3-Eingabe-Bucket oder ein AWS CodeCommit, GitHub, oder Bitbucket-Repository hoch. Weitere Informationen findest du unter [Referenz zur Datei mit Bilddefinitionen](https://docs.aws.amazon.com/codepipeline/latest/userguide/file-reference.html) im *AWS CodePipeline Benutzerhandbuch*.
**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. Erstellen Sie ein Build-Projekt, führen Sie den Build aus und zeigen Sie die Build-Informationen an.

    Wenn Sie die Konsole verwenden, um Ihr Projekt zu erstellen:

   1.  Wählen Sie für **Operating system (Betriebssystem)** die Option **Ubuntu** aus. 

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

   1.  **Wählen Sie für **Image**: 5.0aws/codebuild/standard.** 

   1.  Fügen Sie die folgenden Umgebungsvariablen hinzu: 
      +  AWS\$1DEFAULT\$1REGION mit einem Wert von *region-ID* 
      +  AWS\$1ACCOUNT\$1ID mit einem Wert von *account-ID* 
      +  IMAGE\$1TAG mit dem Wert „Latest (Aktuell)“ 
      +  IMAGE\$1REPO\$1NAME mit einem Wert von *Amazon-ECR-repo-name* 

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

   ```
   {
     "name": "sample-docker-project",
     "source": {
       "type": "S3",
       "location": "codebuild-region-ID-account-ID-input-bucket/DockerSample.zip"
     },
     "artifacts": {
       "type": "NO_ARTIFACTS"
     },
     "environment": {
       "type": "LINUX_CONTAINER",
       "image": "aws/codebuild/standard:5.0",
       "computeType": "BUILD_GENERAL1_SMALL",
       "environmentVariables": [
         {
           "name": "AWS_DEFAULT_REGION",
           "value": "region-ID"
         },
         {
           "name": "AWS_ACCOUNT_ID",
           "value": "account-ID"
         },
         {
           "name": "IMAGE_REPO_NAME",
           "value": "Amazon-ECR-repo-name"
         },
         {
           "name": "IMAGE_TAG",
           "value": "latest"
         }
       ],
     },
     "serviceRole": "arn:aws:iam::account-ID:role/role-name",
     "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID"
   }
   ```

1. Bestätigen Sie, dass das Docker-Image CodeBuild erfolgreich in das Repository übertragen wurde:

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

   1. Wählen Sie den Namen des Repositorys aus. Das Bild muss in der Spalte **Image Tag (Image-Tag)** aufgelistet werden.

### Verzeichnisstruktur
<a name="sample-docker-dir"></a>

In diesem Beispiel wird von dieser Verzeichnisstruktur ausgegangen.

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

### Dateien
<a name="sample-docker-files"></a>

In diesem Beispiel werden diese Dateien verwendet.

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

```
version: 0.2

phases:
  pre_build:
    commands:
      - echo Logging in to Amazon ECR...
      - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com
  build:
    commands:
      - echo Build started on `date`
      - echo Building the Docker image...          
      - docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG .
      - docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG      
  post_build:
    commands:
      - echo Build completed on `date`
      - echo Pushing the Docker image...
      - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
```

`Dockerfile` (in `(root directory name)`)

```
FROM golang:1.12-alpine AS build
#Install git
RUN apk add --no-cache git
#Get the hello world package from a GitHub repository
RUN go get github.com/golang/example/hello
WORKDIR /go/src/github.com/golang/example/hello
# Build the project and send the output to /bin/HelloWorld 
RUN go build -o /bin/HelloWorld

FROM golang:1.12-alpine
#Copy the build's output binary from the previous build container
COPY --from=build /bin/HelloWorld /bin/HelloWorld
ENTRYPOINT ["/bin/HelloWorld"]
```

**Anmerkung**  
CodeBuild überschreibt die `ENTRYPOINT` für benutzerdefinierte Docker-Images.

# Passen Sie das Beispiel „Docker-Image in Amazon ECR veröffentlichen“ an, um es auf Docker Hub zu übertragen
<a name="sample-docker-docker-hub"></a>

Um das Beispiel „Docker-Image in Amazon ECR veröffentlichen“ so anzupassen, dass das Docker-Image an Docker Hub statt an Amazon ECR übertragen wird, bearbeiten Sie den Code des Beispiels. Weitere Informationen zum Beispiel finden Sie unter und. [Beispiel „Docker-Image in einem Amazon ECR-Image-Repository veröffentlichen“ für CodeBuild](sample-docker.md) [Führen Sie das Beispiel „Docker-Image in Amazon ECR veröffentlichen“ aus](sample-docker.md#sample-docker-running)
**Anmerkung**  
Wenn Sie eine Version von Docker vor 17.06 verwenden, entfernen Sie die `--no-include-email`-Option.

1. Ersetzen Sie diese Amazon ECR-spezifischen Codezeilen in der `buildspec.yml` Datei:

   ```
   ...
     pre_build:
       commands:
         - echo Logging in to Amazon ECR...
         - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com
     build:
       commands:
         - echo Build started on `date`
         - echo Building the Docker image...          
         - docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG .
         - docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
     post_build:
       commands:
         - echo Build completed on `date`
         - echo Pushing the Docker image...
         - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
   ...
   ```

   Durch die folgenden Docker Hub-spezifischen Codezeilen:

   ```
   ...
     pre_build:
       commands:
         - echo Logging in to Docker Hub...
         # Type the command to log in to your Docker Hub account here.          
     build:
       commands:
         - echo Build started on `date`
         - echo Building the Docker image...
         - docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG .
         - docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $IMAGE_REPO_NAME:$IMAGE_TAG
     post_build:
       commands:
         - echo Build completed on `date`
         - echo Pushing the Docker image...
         - docker push $IMAGE_REPO_NAME:$IMAGE_TAG
   ...
   ```

1. Laden Sie den bearbeiteten Code 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. Ersetzen Sie diese Codezeilen aus der JSON-formatierten Eingabe des `create-project`-Befehls:

   ```
   ...
       "environmentVariables": [
         {
           "name": "AWS_DEFAULT_REGION",
           "value": "region-ID"
         },
         {
           "name": "AWS_ACCOUNT_ID",
           "value": "account-ID"
         },
         {
           "name": "IMAGE_REPO_NAME",
           "value": "Amazon-ECR-repo-name"
         },
         {
           "name": "IMAGE_TAG",
           "value": "latest"
         }
       ]
   ...
   ```

   Durch diese Codezeilen:

   ```
   ...
       "environmentVariables": [
         {
           "name": "IMAGE_REPO_NAME",
           "value": "your-Docker-Hub-repo-name"
         },
         {
           "name": "IMAGE_TAG",
           "value": "latest"
         }
       ]
   ...
   ```

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

1. Bestätigen Sie, dass das Docker-Image AWS CodeBuild erfolgreich in das Repository übertragen wurde. Melden Sie sich beim Docker Hub an, wechseln Sie zum Repository wählen Sie die Registerkarte **Tags** aus Das `latest`-Tag sollte einen aktuellen **Last Updated**-Wert enthalten.

# Privates Register mit AWS Secrets Manager Muster für CodeBuild
<a name="sample-private-registry"></a>

 Dieses Beispiel zeigt Ihnen, wie Sie ein Docker-Image, das in einer privaten Registry gespeichert ist, als Ihre AWS CodeBuild Laufzeitumgebung verwenden. Die Anmeldeinformationen für die private Registrierung sind in AWS Secrets Manager gespeichert. Jede private Registrierung funktioniert mit CodeBuild. In diesem Beispiel wird Docker Hub verwendet. 

**Anmerkung**  
Geheimnisse sind für Aktionen sichtbar und werden nicht maskiert, wenn sie in eine Datei geschrieben werden.

**Topics**
+ [Anforderungen für ein Beispiel einer privaten Registrierung](#sample-private-registry-requirements)
+ [Erstellen Sie ein CodeBuild Projekt mit einer privaten Registrierung](private-registry-sample-create-project.md)
+ [Konfigurieren Sie private Registrierungsdaten für selbst gehostete Runner](private-registry-sample-configure-runners.md)

## Anforderungen für ein Beispiel einer privaten Registrierung
<a name="sample-private-registry-requirements"></a>

 Um eine private Registrierung mit verwenden zu können AWS CodeBuild, müssen Sie über Folgendes verfügen: 
+  Ein Secrets Manager Manager-Geheimnis, das Ihre Docker Hub-Anmeldeinformationen speichert. Die Anmeldeinformationen werden für den Zugriff auf Ihr privates Repository verwendet. 
**Anmerkung**  
Die von Ihnen erstellten Geheimnisse werden Ihnen in Rechnung gestellt.
+  Ein privates Repository oder Konto. 
+  Eine IAM-Richtlinie für eine CodeBuild Servicerolle, die Zugriff auf Ihr Secrets Manager Manager-Geheimnis gewährt. 

 Gehen Sie wie folgt vor, um diese Ressourcen zu erstellen, und erstellen Sie dann ein CodeBuild Build-Projekt mit den Docker-Images, die in Ihrer privaten Registrierung gespeichert sind. 

# Erstellen Sie ein CodeBuild Projekt mit einer privaten Registrierung
<a name="private-registry-sample-create-project"></a>

1. Weitere Informationen dazu, wie Sie ein kostenloses privates Repository erstellen, finden Sie unter [Repositories on Docker Hub](https://docs.docker.com/docker-hub/repos/) Sie können auch die folgenden Befehle in einem Terminal ausführen, um eine Pull-Übertragung eines Images durchzuführen, seine ID abzurufen und es in ein neues Repository zu verschieben. 

   ```
   docker pull amazonlinux
   docker images amazonlinux --format {{.ID}}
   docker tag image-id your-username/repository-name:tag
   docker login
   docker push your-username/repository-name
   ```

1.  Folgen Sie den Schritten [unter Ein AWS Secrets Manager Geheimnis erstellen](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) im *AWS Secrets Manager Benutzerhandbuch*.

   

   1.  Wählen Sie in Schritt 3 unter **Geheimtyp auswählen** die Option **Anderer Geheimtyp aus**. 

   1. Erstellen Sie **unter Schlüssel/Wert-Paare** ein Schlüssel-Wert-Paar für Ihren Docker Hub-Benutzernamen und ein Schlüssel-Wert-Paar für Ihr Docker Hub-Passwort. 

   1.  [Folgen Sie weiterhin den Schritten unter Create an Secret. AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) 

   1.  Deaktivieren Sie sie in Schritt 5 auf der Seite **Automatische Rotation konfigurieren**, da die Schlüssel Ihren Docker Hub-Anmeldeinformationen entsprechen. 

   1.  Folgen Sie abschließend den Schritten unter [Create an AWS Secrets Manager Secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html). 

    Weitere Informationen finden Sie unter [Was ist AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) 

1.  Wenn Sie ein AWS CodeBuild Projekt in der Konsole erstellen, CodeBuild hängt es die für Sie erforderlichen Berechtigungen an. Wenn Sie einen anderen AWS KMS Schlüssel als verwenden`DefaultEncryptionKey`, müssen Sie ihn der Servicerolle hinzufügen. Weitere Informationen finden Sie unter [Ändern einer Rolle (Konsole)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html#roles-managingrole-editing-console) im *IAM-Benutzerhandbuch*. 

    Damit Ihre Servicerolle mit Secrets Manager funktioniert, muss sie mindestens über die `secretsmanager:GetSecretValue` entsprechende Berechtigung verfügen.   
![\[Die Konfiguration der Servicerolle.\]](http://docs.aws.amazon.com/de_de/codebuild/latest/userguide/images/private-registry-sample-iam.png)

1.  Um die Konsole für die Erstellung eines Projekts zu verwenden, dessen Umgebung in einer privaten Registrierung gespeichert ist, gehen Sie während der Projekterstellung wie folgt vor: Weitere Informationen finden Sie unter [Erstellen Sie ein Build-Projekt (Konsole)](create-project.md#create-project-console). 
**Anmerkung**  
 Wenn sich Ihre private Registrierung in Ihrer VPC befindet, muss sie über einen öffentlichen Internetzugang verfügen. CodeBuild kann kein Image von einer privaten IP-Adresse in einer VPC abrufen. 

   1.  Wählen Sie unter **Umgebungsbild** die Option **Benutzerdefiniertes Bild** aus. 

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

   1.  Wählen Sie für **Image-Registrierung** die Option **Andere Registrierung** aus. 

   1.  Geben Sie **unter Externe Registrierungs-URL** den Speicherort des Images und in **Registrierungsanmeldedaten — optional** den ARN oder den Namen Ihrer Secrets Manager Manager-Anmeldeinformationen ein.
**Anmerkung**  
 Wenn Ihre Anmeldeinformationen nicht in Ihrer aktuellen Region vorhanden sind, müssen Sie den ARN verwenden. Sie können den Namen der Anmeldeinformationen nicht verwenden, wenn die Anmeldeinformationen in einer anderen Region existieren. 

# Konfigurieren Sie private Registrierungsdaten für selbst gehostete Runner
<a name="private-registry-sample-configure-runners"></a>

Verwenden Sie die folgenden Anweisungen, um Registrierungsdaten für einen selbst gehosteten Runner zu konfigurieren.

**Anmerkung**  
Beachten Sie, dass diese Anmeldeinformationen nur verwendet werden, wenn die Images mit denen aus privaten Registern überschrieben werden. 

------
#### [ AWS Management Console ]

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

1. Erstellen Sie ein Build-Projekt oder wählen Sie ein vorhandenes Projekt aus. Weitere Informationen finden Sie unter [Erstellen Sie ein Build-Projekt (Konsole)](create-project.md#create-project-console) und [Ändern der Einstellungen eines Build-Projekts (Konsole)](change-project.md#change-project-console).

1.  Wählen Sie **unter Umgebung** die Option **Zusätzliche Konfiguration** aus. 

1.  Geben Sie **unter Zusätzliche Konfiguration** den Namen oder den ARN des Geheimnisses AWS Secrets Manager für die **Registrierungsdaten ein — optional**.  
![\[Die Konfiguration der Registrierungsanmeldedaten.\]](http://docs.aws.amazon.com/de_de/codebuild/latest/userguide/images/registry-credential.png)

------
#### [ AWS CLI ]

1. Wenn Sie ein neues Projekt erstellen möchten, führen Sie den Befehl **create-project** aus.

   ```
   aws codebuild create-project \
       --name project-name \
       --source type=source-type,location=source-location \
       --environment "type=environment-type,image=image,computeType=compute-type,registryCredential={credentialProvider=SECRETS_MANAGER,credential=secret-name-or-arn},imagePullCredentialsType=CODEBUILD|SERVICE_ROLE" \
       --artifacts type=artifacts-type \
       --service-role arn:aws:iam::account-ID:role/service-role/service-role-name
   ```

1. Wenn Sie ein vorhandenes Projekt aktualisieren möchten, führen Sie den Befehl **update-project** aus.

   ```
   aws codebuild update-project \
       --name project-name \
       --environment "type=environment-type,image=image,computeType=compute-type,registryCredential={credentialProvider=SECRETS_MANAGER,credential=secret-name-or-arn}"
   ```

------

# Erstellen einer statischen Website mit in einem S3-Bucket gehosteter Build-Ausgabe
<a name="sample-disable-artifact-encryption"></a>

Sie können die Verschlüsselung von Artefakten in einem Build deaktivieren. Dies ist sinnvoll, damit Sie Artefakte an einem Ort veröffentlichen können, der zum Hosten einer Website konfiguriert ist. (Sie können verschlüsselte Artefakte nicht veröffentlichen.) Dieses Beispiel zeigt, wie Sie Webhooks verwenden können, um eine Build-Erstellung auszulösen und die Build-Artefakte in einem S3-Bucket zu veröffentlichen, der als Website konfiguriert wurde. 

1.  Befolgen Sie die Anleitung unter [Einrichten einer statischen Website](https://docs.aws.amazon.com/AmazonS3/latest/userguide/HostingWebsiteOnS3Setup.html), um einen S3-Bucket als Website zu konfigurieren. 

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

1.  Wenn eine CodeBuild Informationsseite angezeigt wird, wählen Sie Build-Projekt **erstellen**. Erweitern Sie andernfalls im Navigationsbereich **Build**, wählen Sie **Build projects** und dann **Create build project** aus. 

1. Geben Sie unter **Project name (Projektname)** einen Namen für dieses Build-Projekt ein. Die Namen von Build-Projekten müssen für jedes AWS Konto eindeutig sein. Sie können auch eine optionale Beschreibung des Build-Projekts hinzufügen, damit andere Benutzer verstehen, wofür dieses Projekt verwendet wird.

1.  Wählen Sie unter **Source** für **Source provider** **GitHub** aus. Folgen Sie den Anweisungen, um eine Verbindung herzustellen (oder erneut herzustellen) GitHub, und wählen Sie dann **Autorisieren** aus. 

    Wählen Sie für **Webhook** die Option **Rebuild every time a code change is pushed to this repository (Erneut erstellen, wenn eine Codeänderung an diesen Repository übergeben wird)** aus. Sie können dieses Kontrollkästchen nur aktivieren, wenn Sie **Use a repository in my account (Ein Repository in meinem Konto verwenden)** ausgewählt haben.   
![\[Die Webhook-Konfiguration.\]](http://docs.aws.amazon.com/de_de/codebuild/latest/userguide/images/webhook.png)

1. In **Environment** (Umgebung):

   Führen Sie für **Environment image** (Umgebungs-Image) einen der folgenden Schritte aus:
   + **Um ein Docker-Image zu verwenden, das von verwaltet wird AWS CodeBuild, wählen Sie **Verwaltetes Image** aus und treffen Sie dann eine Auswahl **unter Betriebssystem**, **Runtime (s)**, **Image** und Image-Version.** Treffen Sie eine Auswahl unter **Environment type (Umgebungstyp)**, sofern verfügbar.
   + Wenn Sie ein anderes Docker-Image verwenden möchten, wählen Sie **Custom image** (Benutzerdefiniertes Image) aus. **Wählen Sie als **Umgebungstyp** **ARM**, **Linux, Linux** **GPU** oder Windows aus.** Wenn Sie **Andere Registrierung** wählen, geben Sie für **Externe Registrierungs-URL** den Namen und das Tag des Docker-Images in Docker Hub ein. Verwenden Sie dabei das Format. `docker repository/docker image name` Wenn Sie sich für **Amazon ECR** entscheiden, verwenden Sie das **Amazon ECR-Repository** und das **Amazon ECR-Image**, um das Docker-Image in Ihrem Konto auszuwählen. AWS 
   + **Um ein privates Docker-Image zu verwenden, wählen Sie Benutzerdefiniertes Image.** Wählen Sie als **Umgebungstyp** **ARM**, **Linux**, **Linux GPU** oder **Windows** aus. Wählen Sie unter **Image registry (Abbildregistrierung)** die Option **Other registry (Andere Registrierung)** aus und geben Sie dann den ARN der Anmeldeinformationen für Ihr privates Docker-Image ein. Die Anmeldeinformationen müssen von Secrets Manager erstellt werden. Weitere Informationen finden Sie unter [Was ist AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) im *AWS Secrets Manager -Benutzerhandbuch*.

1. Führen Sie unter **Service role** (Service-Rolle) einen der folgenden Schritte aus:
   + Wenn Sie keine CodeBuild Servicerolle haben, wählen Sie **Neue Servicerolle**. Geben Sie im Feld **Rollenname** einen Namen für die neue Rolle ein.
   + Wenn Sie eine CodeBuild Servicerolle haben, wählen Sie **Bestehende Servicerolle** aus. Wählen Sie **unter Role ARN** die Servicerolle aus.
**Anmerkung**  
Wenn Sie die Konsole verwenden, um ein Build-Projekt zu erstellen oder zu aktualisieren, können Sie gleichzeitig eine CodeBuild Servicerolle erstellen. In der Standardeinstellung funktioniert diese Rolle ausschließlich mit diesem Projekt. Wenn Sie die Konsole verwenden, um die Servicerolle mit einem anderen Build-Projekt zu verknüpfen, wird die Rolle so aktualisiert, dass sie mit dem anderen Build-Projekt funktioniert. Eine Servicerolle kann in bis zu zehn Build-Projekten verwendet werden.

1. Führen Sie in **Buildspec** einen der folgenden Schritte aus:
   + Wählen Sie Buildspec-Datei **verwenden, um die Datei buildspec.yml** im Quellcode-Stammverzeichnis zu verwenden.
   + Wählen Sie Build-Befehle **einfügen, um die Konsole zum Einfügen von Build-Befehlen** zu verwenden.

   Weitere Informationen hierzu finden Sie unter [Build-Spezifikationsreferenz](build-spec-ref.md).

1.  Wählen Sie **unter Artifacts** für **Type** **Amazon S3** aus, um die Build-Ausgabe in einem S3-Bucket zu speichern. 

1.  Wählen Sie für **Bucket name (Bucket-Name)** den Namen des S3-Buckets, den Sie in Schritt 1 als Website konfiguriert haben. 

1.  Wenn Sie **Build-Befehle in **Umgebung** einfügen** ausgewählt haben, geben Sie für **Ausgabedateien** die Speicherorte der Dateien aus dem Build ein, die Sie in den Ausgabe-Bucket einfügen möchten. Wenn Sie mehr als einen Speicherort haben, verwenden Sie ein Komma, um jede Position zu trennen (z. B. **appspec.yml, target/my-app.jar**). Weitere Informationen finden Sie unter [Artifacts reference-key in the buildspec file](build-spec-ref.md#artifacts-build-spec).

1.  Wählen Sie **Disable artifacts encryption (Artefaktverschlüsselung deaktivieren)** aus. 

1. Erweitern Sie **Additional configuration (Zusätzliche Einstellungen)** und wählen Sie die entsprechenden Optionen.

1. Wählen Sie **Create build project (Build-Projekt erstellen)** aus. Wählen Sie auf der Seite für das Erstellen des Projekts in **Build history (Build-Verlauf)** die Option **Start build (Build starten)** aus, um den Build auszuführen.

1.  (Optional) Folgen Sie den Anweisungen unter [Beispiel: Beschleunigen Sie Ihre Website mit Amazon CloudFront im Amazon](https://docs.aws.amazon.com/AmazonS3/latest/userguide/website-hosting-cloudfront-walkthrough.html) *S3 S3-Entwicklerhandbuch*. 

# Beispiel für mehrere Eingabequellen und Ausgabeartefakte
<a name="sample-multi-in-out"></a>

Sie können ein AWS CodeBuild Build-Projekt mit mehr als einer Eingabequelle und mehr als einem Satz von Ausgabeartefakten erstellen. Dieses Beispiel zeigt, wie Sie ein Build-Projekt mit folgenden Eigenschaften einrichten: 
+ Mehrere Quellen und Repositorys unterschiedlicher Typen
+ Veröffentlichung von Build-Artefakten für mehrere S3-Buckets in einem Build

 Im folgenden Beispiel erstellen Sie ein Build-Projekt und verwenden es, um einen Build auszuführen. Das Beispiel verwendet die buildspec-Datei des Build-Projekts, um zu demonstrieren, wie mehr als eine Quelle eingeschlossen und mehr als ein Satz Artefakte erstellt wird. 

Informationen zum Erstellen einer Pipeline, die mehrere Quelleingaben verwendet, um mehrere Ausgabeartefakte CodeBuild zu erzeugen, finden Sie unter[Beispiel für eine CodePipeline/CodeBuild Integration mit mehreren Eingabequellen und Ausgabeartefakten](sample-codepipeline.md#sample-pipeline-multi-input-output).

**Topics**
+ [Erstellen Sie ein Build-Projekt mit mehreren Eingaben und Ausgaben](sample-multi-in-out-create.md)
+ [Erstellen Sie ein Build-Projekt ohne Quelle](no-source.md)

# Erstellen Sie ein Build-Projekt mit mehreren Eingaben und Ausgaben
<a name="sample-multi-in-out-create"></a>

Gehen Sie wie folgt vor, um ein Build-Projekt mit mehreren Eingaben und Ausgaben zu erstellen.

**Um ein Build-Projekt mit mehreren Eingaben und Ausgaben zu erstellen**

1.  Lade deine Quellen in ein oder mehrere S3-Buckets, CodeCommit GitHub, GitHub Enterprise Server- oder Bitbucket-Repositorys hoch. 

1.  Wählen Sie die als primäre Quelle dienende Quelle. Dies ist die Quelle, in der nach Ihrer CodeBuild Buildspec-Datei gesucht und diese ausgeführt wird. 

1.  Erstellen Sie ein Build-Projekt. Weitere Informationen finden Sie unter [Erstellen Sie ein Build-Projekt in AWS CodeBuild](create-project.md). 

1.  Erstellen Sie Ihr Build-Projekt, führen Sie den Build aus und rufen Sie Informationen über den Build ab. 

1.  Wenn Sie das AWS CLI Build-Projekt mit erstellen, sieht die Eingabe des `create-project` Befehls im JSON-Format möglicherweise wie folgt aus: 

   ```
   {
     "name": "sample-project",
     "source": {
       "type": "S3",
       "location": "<bucket/sample.zip>"
     },
     "secondarySources": [
       {
         "type": "CODECOMMIT",
         "location": "https://git-codecommit.us-west-2.amazonaws.com/v1/repos/repo",
         "sourceIdentifier": "source1"
       },
       {
         "type": "GITHUB",
         "location": "https://github.com/awslabs/aws-codebuild-jenkins-plugin",
         "sourceIdentifier": "source2"
       }
     ],
     "secondaryArtifacts": [ss
       {
         "type": "S3",
         "location": "<output-bucket>",
         "artifactIdentifier": "artifact1"
       },
       {
         "type": "S3",
         "location": "<other-output-bucket>",
         "artifactIdentifier": "artifact2"
       }
     ],
     "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"
   }
   ```

 Die primäre Quelle ist im Attribut `source` definiert. Alle weiteren Quellen sind sekundäre Quellen und werden unter `secondarySources` aufgeführt. Alle sekundären Quellen werden in einem eigenen Verzeichnis installiert. Dieses Verzeichnis wird in der integrierten Umgebungsvariable `CODEBUILD_SRC_DIR_sourceIdentifer` gespeichert. Weitere Informationen finden Sie unter [Umgebungsvariablen in Build-Umgebungen](build-env-ref-env-vars.md). 

 Das Attribut `secondaryArtifacts` enthält eine Liste der Artefaktdefinitionen. Diese Artefakte verwenden den Block `secondary-artifacts` in der buildspec-Datei, der im Block `artifacts` verschachtelt ist. 

 Sekundäre Artefakte in der buildspec-Datei haben die gleiche Struktur wie Artefakte und werden durch die jeweiligen Artefaktbezeichner voneinander getrennt. 

**Anmerkung**  
 In der [CodeBuild API](https://docs.aws.amazon.com/codebuild/latest/APIReference/) ist der `artifactIdentifier` für ein sekundäres Artefakt ein zwingend erforderliches Attribut in `CreateProject` und `UpdateProject`. Es muss verwendet werden, um auf ein sekundäres Artefakt zu verweisen. 

 Mit der oben gezeigten Eingabe im JSON-Format ergibt sich eine buildspec-Datei wie die folgende: 

```
version: 0.2

phases:
  install:
    runtime-versions:
      java: openjdk11
  build:
    commands:
      - cd $CODEBUILD_SRC_DIR_source1
      - touch file1
      - cd $CODEBUILD_SRC_DIR_source2
      - touch file2

artifacts:
  files:
    - '**.*'
  secondary-artifacts:
    artifact1:
      base-directory: $CODEBUILD_SRC_DIR_source1
      files:
        - file1
    artifact2:
      base-directory: $CODEBUILD_SRC_DIR_source2
      files:
        - file2
```

 Sie können die Version der primären Quelle unter Verwendung der API mit dem Attribut `sourceVersion` in `StartBuild` überschreiben. Mit dem Attribut `secondarySourceVersionOverride` können Sie einzelne oder mehrere Versionen sekundärer Quellen überschreiben. 

 Die JSON-formatierte Eingabe für den `start-build` Befehl im könnte wie folgt aussehen: AWS CLI 

```
{
   "projectName": "sample-project",
   "secondarySourcesVersionOverride": [
      {
        "sourceIdentifier": "source1",
        "sourceVersion": "codecommit-branch"
      },
      {
        "sourceIdentifier": "source2",
        "sourceVersion": "github-branch"
      },
   ]
}
```

# Erstellen Sie ein Build-Projekt ohne Quelle
<a name="no-source"></a>

 Sie können ein CodeBuild Projekt konfigurieren, indem Sie bei der Konfiguration Ihrer **NO\$1SOURCE** Quelle den Quelltyp auswählen. Wenn Ihr Quelltyp **NO\$1SOURCE** ist, können Sie keine buildspec-Datei angeben, da Ihr Projekt keine Quelle hat. Stattdessen müssen Sie eine YAML-formatierte buildspec-Zeichenfolge im `buildspec`-Attribut der JSON-formatierten Eingabe für den `create-project`-CLI-Befehl angeben. Diese könnte wie folgt aussehen: 

```
{
  "name": "project-name",
  "source": {
    "type": "NO_SOURCE",
    "buildspec": "version: 0.2\n\nphases:\n  build:\n    commands:\n      - command"
   },
  "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"
}
```

Weitere Informationen finden Sie unter [Erstellen eines Build-Projekts (AWS CLI)](create-project.md#create-project-cli).

# Beispiel für Laufzeitversionen in einer Buildspec-Datei für CodeBuild
<a name="sample-runtime-versions"></a>

Wenn Sie das Amazon Linux 2 (AL2) -Standard-Image Version 1.0 oder höher oder das Ubuntu-Standard-Image Version 2.0 oder höher verwenden, können Sie im `runtime-versions` Abschnitt Ihrer Buildspec-Datei eine oder mehrere Laufzeiten angeben. Die folgenden Beispiele zeigen, wie Sie Ihre Projektlaufzeit ändern, mehr als eine Laufzeit angeben und eine Laufzeit angeben können, die von einer anderen Laufzeit abhängig ist. Hinweise zu unterstützten Laufzeiten finden Sie unter [Docker-Images bereitgestellt von CodeBuild](build-env-ref-available.md).

**Anmerkung**  
Wenn Sie Docker in Ihrem Build-Container verwenden, muss Ihr Build im privilegierten Modus ausgeführt werden. Weitere Informationen erhalten Sie unter [Manuelles Ausführen von AWS CodeBuild Builds](run-build.md) und [Erstellen Sie ein Build-Projekt in AWS CodeBuild](create-project.md). 

**Topics**
+ [Aktualisieren Sie die Runtime-Version in der Buildspec-Datei](sample-runtime-update-version.md)
+ [Zwei Laufzeiten angeben](sample-runtime-two-major-version-runtimes.md)

# Aktualisieren Sie die Runtime-Version in der Buildspec-Datei
<a name="sample-runtime-update-version"></a>

Sie können die von Ihrem Projekt verwendete Runtime auf eine neue Version ändern, indem Sie den `runtime-versions` Abschnitt Ihrer Buildspec-Datei aktualisieren. Die folgenden Beispiele zeigen, wie Sie Java-Versionen 8 und 11 angeben.
+ Ein `runtime-versions`-Abschnitt, der Version 8 von Java angibt:

  ```
  phases:
    install:
      runtime-versions:
        java: corretto8
  ```
+ Ein `runtime-versions`-Abschnitt, der Version 11 von Java angibt:

  ```
  phases:
    install:
      runtime-versions:
        java: corretto11
  ```

Die folgenden Beispiele zeigen, wie verschiedene Versionen von Python mit dem Ubuntu-Standard-Image 5.0 oder dem Amazon Linux 2-Standard-Image 3.0 spezifiziert werden:
+ Ein `runtime-versions` Abschnitt, der Python-Version 3.7 spezifiziert: 

  ```
  phases:
    install:
      runtime-versions:
        python: 3.7
  ```
+ Ein `runtime-versions` Abschnitt, der Python-Version 3.8 spezifiziert: 

  ```
  phases:
    install:
      runtime-versions:
        python: 3.8
  ```

Dieses Beispiel zeigt ein Projekt, das mit der Java-Laufzeitversion 8 beginnt und anschließend auf die Java-Laufzeitversion 10 aktualisiert wird. 

1. Laden Sie Maven herunter und installieren Sie es. Weitere Informationen finden Sie unter [Downloading Apache Maven](https://maven.apache.org/download.cgi) und [Installing Apache Maven](https://maven.apache.org/install.html) auf der Apache Maven-Website.

1. Wechseln Sie in ein leeres Verzeichnis auf Ihrem lokalen Computer oder der Instance und führen anschließend diesen Maven-Befehl aus.

   ```
   mvn archetype:generate "-DgroupId=com.mycompany.app" "-DartifactId=ROOT" "-DarchetypeArtifactId=maven-archetype-webapp" "-DinteractiveMode=false"
   ```

   Nach erfolgreicher Ausführung werden diese Verzeichnisstruktur und die Dateien erstellt.

   ```
   .
   └── ROOT
       ├── pom.xml
       └── src
           └── main
               ├── resources
               └── webapp
                   ├── WEB-INF
                   │   └── web.xml
                   └── index.jsp
   ```

1. Erstellen Sie eine Datei mit dem Namen `buildspec.yml` und dem folgenden Inhalt. Speichern Sie die Datei im Verzeichnis ` (root directory name)/my-web-app`. 

   ```
   version: 0.2
   
   phases:
     install:
       runtime-versions:
         java: corretto8
     build:
       commands:
         - java -version
         - mvn package
   artifacts:
     files:
       - '**/*'
     base-directory: 'target/my-web-app'
   ```

   In der Build-Spezifikationsdatei: 
   + Der Abschnitt `runtime-versions` gibt an, dass das Projekt die Java-Laufzeitversion 8 verwendet. 
   + Der Befehl `- java -version` zeigt die Version von Java an, die bei der Ausführung des Projekts verwendet wird . 

   Ihre Dateistruktur sollte nun wie folgt aussehen: 

   ```
   (root directory name)
   └── my-web-app
       ├── src
       │   ├── main
       │   ├── resources
       │   └── webapp
       │       └── WEB-INF
       │           └── web.xml
       │               └── index.jsp
       ├── buildspec.yml
       └── pom.xml
   ```

1. Laden Sie den Inhalt des `my-web-app` Verzeichnisses in einen S3-Eingabe-Bucket oder ein CodeCommit, GitHub, oder Bitbucket-Repository hoch. 
**Wichtig**  
Laden Sie nicht `(root directory name)` oder `(root directory name)/my-web-app` hoch, sondern nur die Verzeichnisse und Dateien in `(root directory name)/my-web-app`.   
Wenn Sie einen S3-Empfangs-Bucket verwenden, sollten Sie eine ZIP-Datei erstellen, die die Verzeichnisstruktur und die Dateien enthält, und diese dann in den Empfangs-Bucket hochladen. Fügen Sie nicht `(root directory name)` oder `(root directory name)/my-web-app` zur ZIP-Datei hinzu, sondern nur die Verzeichnisse und Dateien in `(root directory name)/my-web-app`.

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. Erstellen Sie ein Build-Projekt. Weitere Informationen erhalten Sie unter [Erstellen Sie ein Build-Projekt (Konsole)](create-project.md#create-project-console) und [Ausführen eines Build (Konsole)](run-build-console.md). Übernehmen Sie für alle Einstellungen die Standardwerte, außer für folgende Einstellungen:
   + Für **Environment (Umgebung)**:
     + Wählen Sie für **Environment image (Umgebungs-Abbild)** die Option **Managed image (Verwaltetes Abbild)** aus.
     + Wählen Sie für **Operating system (Betriebssystem)** die Option **Amazon Linux 2** aus. 
     +  Wählen Sie unter **Runtime (Laufzeit)** die Option **Standard** aus. 
     + **Wählen Sie für **Image** -x86\$164-standard:4.0. aws/codebuild/amazonlinux**

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

1. Übernehmen Sie in der **Build configuration (Build-Konfiguration)** die Standardeinstellungen und wählen Sie dann **Start build (Build starten)**. 

1. Überprüfen Sie die Build-Ausgabe unter der Registerkarte **Build logs (Build-Protokolle)**, wenn der Build abgeschlossen ist. Die Ausgabe sollte folgendermaßen oder ähnlich aussehen: 

   ```
   [Container] Date Time Phase is DOWNLOAD_SOURCE
   [Container] Date Time CODEBUILD_SRC_DIR=/codebuild/output/src460614277/src
   [Container] Date Time YAML location is /codebuild/output/src460614277/src/buildspec.yml
   [Container] Date Time Processing environment variables
   [Container] Date Time Selecting 'java' runtime version 'corretto8' based on manual selections...
   [Container] Date Time Running command echo "Installing Java version 8 ..."
   Installing Java version 8 ... 
    
   [Container] Date Time Running command export JAVA_HOME="$JAVA_8_HOME" 
    
   [Container] Date Time Running command export JRE_HOME="$JRE_8_HOME" 
    
   [Container] Date Time Running command export JDK_HOME="$JDK_8_HOME" 
    
   [Container] Date Time Running command for tool_path in "$JAVA_8_HOME"/bin/* "$JRE_8_HOME"/bin/*;
   ```

1. Aktualisieren Sie den Abschnitt `runtime-versions` mit Java-Version 11: 

   ```
   install:
       runtime-versions:
         java: corretto11
   ```

1. Nachdem Sie die Änderung gespeichert haben, führen Sie Ihren Build erneut aus und zeigen Sie die Build-Ausgabe an. Es sollte angezeigt werden, dass Java Version 11 installiert ist. Die Ausgabe sollte folgendermaßen oder ähnlich aussehen: 

   ```
   [Container] Date Time Phase is DOWNLOAD_SOURCE
   [Container] Date Time CODEBUILD_SRC_DIR=/codebuild/output/src460614277/src
   [Container] Date Time YAML location is /codebuild/output/src460614277/src/buildspec.yml
   [Container] Date Time Processing environment variables
   [Container] Date Time Selecting 'java' runtime version 'corretto11' based on manual selections... 
   Installing Java version 11 ... 
    
   [Container] Date Time Running command export JAVA_HOME="$JAVA_11_HOME" 
    
   [Container] Date Time Running command export JRE_HOME="$JRE_11_HOME" 
    
   [Container] Date Time Running command export JDK_HOME="$JDK_11_HOME" 
    
   [Container] Date Time Running command for tool_path in "$JAVA_11_HOME"/bin/* "$JRE_11_HOME"/bin/*;
   ```

# Zwei Laufzeiten angeben
<a name="sample-runtime-two-major-version-runtimes"></a>

Sie können mehr als eine Runtime im selben Build-Projekt angeben. CodeBuild Dieses Beispielprojekt verwendet zwei Quelldateien: eine, die die Go-Laufzeit verwendet und eine, die die Node.js-Laufzeit verwendet. 

1. Erstellen Sie ein Verzeichnis mit dem Namen `my-source`. 

1. Erstellen Sie im Verzeichnis `my-source` ein Verzeichnis mit dem Namen `golang-app`. 

1. Erstellen Sie eine Datei mit dem Namen `hello.go` und dem folgenden Inhalt. Speichern Sie die Datei im Verzeichnis `golang-app`. 

   ```
   package main
   import "fmt"
   
   func main() {
     fmt.Println("hello world from golang")
     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)
     fmt.Println("good bye from golang")
   }
   ```

1. Erstellen Sie im Verzeichnis `my-source` ein Verzeichnis mit dem Namen `nodejs-app`. Es sollte sich auf derselben Ebene wie das Verzeichnis `golang-app` befinden. 

1. Erstellen Sie eine Datei mit dem Namen `index.js` und dem folgenden Inhalt. Speichern Sie die Datei im Verzeichnis `nodejs-app`. 

   ```
   console.log("hello world from nodejs");
   console.log("1+1 =" + (1+1));
   console.log("7.0/3.0 =" + 7.0/3.0);
   console.log(true && false);
   console.log(true || false);
   console.log(!true);
   console.log("good bye from nodejs");
   ```

1. Erstellen Sie eine Datei mit dem Namen `package.json` und dem folgenden Inhalt. Speichern Sie die Datei im Verzeichnis `nodejs-app`. 

   ```
   {
     "name": "mycompany-app",
     "version": "1.0.0",
     "description": "",
     "main": "index.js",
     "scripts": {
       "test": "echo \"run some tests here\""
     },
     "author": "",
     "license": "ISC"
   }
   ```

1. Erstellen Sie eine Datei mit dem Namen `buildspec.yml` und dem folgenden Inhalt. Speichern Sie die Datei im Verzeichnis `my-source` auf der gleichen Ebene wie die Verzeichnisse `nodejs-app` und `golang-app`. `runtime-versions`In diesem Abschnitt werden die Laufzeiten Node.js Version 12 und Go Version 1.13 angegeben. 

   ```
   version: 0.2
   
   phases:
     install:
       runtime-versions:
         golang: 1.13
         nodejs: 12
     build:
       commands:
         - echo Building the Go code...
         - cd $CODEBUILD_SRC_DIR/golang-app
         - go build hello.go 
         - echo Building the Node code...
         - cd $CODEBUILD_SRC_DIR/nodejs-app
         - npm run test
   artifacts:
     secondary-artifacts:
       golang_artifacts:
         base-directory: golang-app
         files:
           - hello
       nodejs_artifacts:
         base-directory: nodejs-app
         files:
           - index.js
           - package.json
   ```

1. Ihre Dateistruktur sollte nun wie folgt aussehen: 

   ```
   my-source
   ├── golang-app
   │   └── hello.go
   ├── nodejs.app
   │   ├── index.js
   │   └── package.json
   └── buildspec.yml
   ```

1. Laden Sie den Inhalt des `my-source` Verzeichnisses in einen S3-Eingabe-Bucket oder ein CodeCommit, GitHub, oder Bitbucket-Repository hoch.
**Wichtig**  
 Wenn Sie einen S3-Empfangs-Bucket verwenden, sollten Sie eine ZIP-Datei erstellen, die die Verzeichnisstruktur und die Dateien enthält, und diese dann in den Empfangs-Bucket hochladen. Fügen Sie `my-source` nicht zur ZIP-Datei hinzu, sondern nur die Verzeichnisse und Dateien in `my-source`.

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. Erstellen Sie ein Build-Projekt. Weitere Informationen erhalten Sie unter [Erstellen Sie ein Build-Projekt (Konsole)](create-project.md#create-project-console) und [Ausführen eines Build (Konsole)](run-build-console.md). Übernehmen Sie für alle Einstellungen die Standardwerte, außer für folgende Einstellungen:
   + Für **Environment (Umgebung)**:
     + Wählen Sie für **Environment image (Umgebungs-Abbild)** die Option **Managed image (Verwaltetes Abbild)** aus.
     + Wählen Sie für **Operating system (Betriebssystem)** die Option **Amazon Linux 2** aus.
     + Wählen Sie unter **Runtime (Laufzeit)** die Option **Standard** aus.
     + **Wählen Sie für **Image** -x86\$164-standard:4.0. aws/codebuild/amazonlinux**

1. Wählen Sie **Create build project (Build-Projekt erstellen)** aus. 

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

1. Übernehmen Sie in der **Build configuration (Build-Konfiguration)** die Standardeinstellungen und wählen Sie dann **Start build (Build starten)**. 

1. Überprüfen Sie die Build-Ausgabe unter der Registerkarte **Build logs (Build-Protokolle)**, wenn der Build abgeschlossen ist. Die Ausgabe sollte in etwa wie folgt aussehen: Es wird die Ausgabe der Go- und Node.js-Laufzeiten angezeigt. Es wird auch die Ausgabe der Go- und Node.js-Anwendungen angezeigt. 

   ```
   [Container] Date Time Processing environment variables
   [Container] Date Time Selecting 'golang' runtime version '1.13' based on manual selections...
   [Container] Date Time Selecting 'nodejs' runtime version '12' based on manual selections...
   [Container] Date Time Running command echo "Installing Go version 1.13 ..."
   Installing Go version 1.13 ... 
    
   [Container] Date Time Running command echo "Installing Node.js version 12 ..." 
   Installing Node.js version 12 ... 
    
   [Container] Date Time Running command n $NODE_12_VERSION
      installed : v12.20.1 (with npm 6.14.10)
   
   [Container] Date Time Moving to directory /codebuild/output/src819694850/src
   [Container] Date Time Registering with agent
   [Container] Date Time Phases found in YAML: 2
   [Container] Date Time  INSTALL: 0 commands
   [Container] Date Time  BUILD: 1 commands
   [Container] Date Time Phase complete: DOWNLOAD_SOURCE State: SUCCEEDED
   [Container] Date Time Phase context status code:  Message:
   [Container] Date Time Entering phase INSTALL
   [Container] Date Time Phase complete: INSTALL State: SUCCEEDED
   [Container] Date Time Phase context status code:  Message:  
   [Container] Date Time Entering phase PRE_BUILD 
   [Container] Date Time Phase complete: PRE_BUILD State: SUCCEEDED 
   [Container] Date Time Phase context status code:  Message:  
   [Container] Date Time Entering phase BUILD 
   [Container] Date Time Running command echo Building the Go code... 
   Building the Go code... 
    
   [Container] Date Time Running command cd $CODEBUILD_SRC_DIR/golang-app 
    
   [Container] Date Time Running command go build hello.go 
    
   [Container] Date Time Running command echo Building the Node code... 
   Building the Node code... 
    
   [Container] Date Time Running command cd $CODEBUILD_SRC_DIR/nodejs-app 
    
   [Container] Date Time Running command npm run test 
    
   > mycompany-app@1.0.0 test /codebuild/output/src924084119/src/nodejs-app 
   > echo "run some tests here" 
    
   run some tests here
   ```

# Beispiel für eine Quellversion mit AWS CodeBuild
<a name="sample-source-version"></a>

 In diesem Beispiel wird gezeigt, wie Sie eine Version Ihrer Quelle mithilfe eines anderen Formats als einer Commit-ID (auch bekannt als Commit-SHA) angeben können. Sie haben folgende Möglichkeiten, die Version Ihrer Quelle anzugeben: 
+  Verwenden Sie für einen Amazon S3 S3-Quellanbieter die Versions-ID des Objekts, das die Build-Eingabe-ZIP-Datei darstellt. 
+  Verwenden Sie für CodeCommit Bitbucket und GitHub Enterprise Server eine der folgenden Optionen: GitHub 
  +  Pull-Anforderung als Pull-Anforderungsreferenz (z. B. `refs/pull/1/head`). 
  +  Branch als Branchenname. 
  +  ID übertragen. 
  +  Etikett. 
  +  Referenz und eine Commit-ID. Die Referenz kann eine der folgenden sein:
    +  Ein Tag (z. B. `refs/tags/mytagv1.0^{full-commit-SHA}`). 
    +  Ein Branch (z. B. `refs/heads/mydevbranch^{full-commit-SHA}`). 
    +  Eine Pull-Anforderung (z. B. `refs/pull/1/head^{full-commit-SHA}`). 
+  Verwenden Sie für GitLab und GitLab Self Managed eine der folgenden Optionen: 
  +  Branch als Branchenname. 
  +  ID übertragen. 
  +  Etikett. 

**Anmerkung**  
 Sie können die Version einer Pull-Request-Quelle nur angeben, wenn es sich bei Ihrem Repository um einen GitHub Enterprise Server handelt GitHub . 

 Wenn Sie eine Referenz und eine Commit-ID zum Angeben einer Version verwenden, ist die `DOWNLOAD_SOURCE`-Phase Ihres Builds schneller, als wenn Sie nur die Version angeben. Das liegt daran, dass beim Hinzufügen einer Referenz CodeBuild nicht das gesamte Repository heruntergeladen werden muss, um den Commit zu finden. 
+ Sie können eine Quellversion mit nur einer Commit-ID angeben, wie z. B. `12345678901234567890123467890123456789`. Wenn Sie dies tun, CodeBuild müssen Sie das gesamte Repository herunterladen, um die Version zu finden.
+ Sie können eine Quellversion mit einer Referenz und einer Commit-ID im folgenden Format angeben: `refs/heads/branchname^{full-commit-SHA}` (z. B. `refs/heads/main^{12345678901234567890123467890123456789}`). Wenn Sie dies tun, wird nur der angegebene Zweig CodeBuild heruntergeladen, um die Version zu finden.

**Anmerkung**  
Um die `DOWNLOAD_SOURCE` Phase Ihres Builds zu beschleunigen, können Sie die **Git-Klontiefe** auch auf einen niedrigen Wert setzen. CodeBuild lädt weniger Versionen deines Repositorys herunter.

**Topics**
+ [Geben Sie eine GitHub Repository-Version mit einer Commit-ID an](sample-source-version-github.md)
+ [Geben Sie eine GitHub Repository-Version mit einer Referenz und einer Commit-ID an](sample-source-version-github-ref.md)

# Geben Sie eine GitHub Repository-Version mit einer Commit-ID an
<a name="sample-source-version-github"></a>

Sie können eine Quellversion mit nur einer Commit-ID angeben, wie z. B. `12345678901234567890123467890123456789`. Wenn Sie dies tun, CodeBuild müssen Sie das gesamte Repository herunterladen, um die Version zu finden.

**Um eine GitHub Repository-Version mit einer Commit-ID anzugeben**

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. Erstellen Sie ein Build-Projekt. Weitere Informationen finden Sie unter [Erstellen Sie ein Build-Projekt (Konsole)](create-project.md#create-project-console) und [Ausführen eines Build (Konsole)](run-build-console.md). Übernehmen Sie für alle Einstellungen die Standardwerte, außer für folgende Einstellungen:
   +  In **Source (Quelle)**: 
     +  Wählen Sie als **Quellanbieter**. **GitHub** Wenn Sie nicht verbunden sind GitHub, folgen Sie den Anweisungen, um eine Verbindung herzustellen. 
     +  Wählen Sie für **Repository (Repository)** die Option **Public Repository (öffentliche Repository)** aus. 
     +  Geben Sie als **Repository URL (Repository-URL)** die URL **https://github.com/aws/aws-sdk-ruby.git** ein. 
   + In **Environment** (Umgebung):
     + Wählen Sie für **Environment image (Umgebungs-Abbild)** die Option **Managed image (Verwaltetes Abbild)** aus.
     + Wählen Sie für **Operating system (Betriebssystem)** die Option **Amazon Linux 2** aus.
     + Wählen Sie unter **Runtime (Laufzeit)** die Option **Standard** aus.
     + Wählen Sie für **Image aws/codebuild/amazonlinux** **-x86\$164-standard:4.0** aus.

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

1.  Ersetzen Sie unter **Build commands (Build-Befehle)** den Platzhalter mit dem folgenden Text: 

   ```
   version: 0.2
   
   phases:
     install:
       runtime-versions:
         ruby: 2.6
     build:
       commands:
          - echo $CODEBUILD_RESOLVED_SOURCE_VERSION
   ```

    Der `runtime-versions`-Abschnitt ist erforderlich, wenn Sie das Ubuntu Standard-Image 2.0 verwenden. Hier ist die Ruby Version 2.6-Laufzeit angegeben, Sie können jedoch eine beliebige Laufzeit verwenden. Der `echo`-Befehl zeigt die Version des Quellcodes an, der in der `CODEBUILD_RESOLVED_SOURCE_VERSION`-Umgebungsvariable gespeichert ist. 

1.  Übernehmen Sie in der **Build configuration (Build-Konfiguration)** die Standardeinstellungen und wählen Sie dann **Start build (Build starten)**. 

1.  Geben Sie für **Source version (Quellversion)** Folgendes ein: **046e8b67481d53bdc86c3f6affdd5d1afae6d369**. Dies ist der SHA eines Commits im `https://github.com/aws/aws-sdk-ruby.git`-Repository. 

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

1.  Wenn die Erstellung abgeschlossen ist, sollten Sie Folgendes sehen: 
   +  Auf der Registerkarte **Build logs (Build-Protokolle**: die verwendete Version der Projektquelle Ein Beispiel.

     ```
     [Container] Date Time Running command echo $CODEBUILD_RESOLVED_SOURCE_VERSION 
     046e8b67481d53bdc86c3f6affdd5d1afae6d369
      
     [Container] Date Time Phase complete: BUILD State: SUCCEEDED
     ```
   +  Auf der Registerkarte **Environment variables (Umgebungsvariablen)**: Die **Resolved source version (Aufgelöste Quellversion)** stimmt mit der zur Erstellung des Builds verwendeten Commit-ID überein. 
   +  Auf der Registerkarte **Phase details (Phasendetails)**: die Dauer der `DOWNLOAD_SOURCE`-Phase. 

# Geben Sie eine GitHub Repository-Version mit einer Referenz und einer Commit-ID an
<a name="sample-source-version-github-ref"></a>

Sie können eine Quellversion mit einer Referenz und einer Commit-ID im folgenden Format angeben: `refs/heads/branchname^{full-commit-SHA}` (z. B. `refs/heads/main^{12345678901234567890123467890123456789}`). Wenn Sie dies tun, wird nur der angegebene Branch CodeBuild heruntergeladen, um die Version zu finden.

**Um eine GitHub Repository-Version mit einer Referenz und einer Commit-ID anzugeben.**

1. Führen Sie die Schritte unter [Geben Sie eine GitHub Repository-Version mit einer Commit-ID an](sample-source-version-github.md) aus.

1.  Wählen Sie im linken Navigationsbereich **Build projects (Build-Projekte)** und anschließend das Projekt, das Sie vorher erstellt haben, aus. 

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

1.  Geben Sie in das Feld **Source version (Quellversion)** Folgendes ein: **refs/heads/main^\$1046e8b67481d53bdc86c3f6affdd5d1afae6d369\$1**. Dies ist dieselbe Commit-ID und eine Referenz auf einen Branch im Format `refs/heads/branchname^{full-commit-SHA}`. 

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

1. Wenn die Erstellung abgeschlossen ist, sollten Sie Folgendes sehen: 
   +  Auf der Registerkarte **Build logs (Build-Protokolle**: die verwendete Version der Projektquelle Ein Beispiel.

     ```
     [Container] Date Time Running command echo $CODEBUILD_RESOLVED_SOURCE_VERSION 
     046e8b67481d53bdc86c3f6affdd5d1afae6d369
      
     [Container] Date Time Phase complete: BUILD State: SUCCEEDED
     ```
   +  Auf der Registerkarte **Environment variables (Umgebungsvariablen)**: Die **Resolved source version (Aufgelöste Quellversion)** stimmt mit der zur Erstellung des Builds verwendeten Commit-ID überein. 
   +  Auf der Registerkarte **Phase details (Phasendetails)** sollte die Dauer der `DOWNLOAD_SOURCE`-Phase kürzer sein als die Dauer, wenn Sie nur die Commit-ID zum Angeben der Version Ihrer Quelle verwendeten.

# Quell-Repository-Beispiele von Drittanbietern für CodeBuild
<a name="sample-third-party-source"></a>

In diesem Abschnitt werden Beispielintegrationen zwischen Quell-Repositorys von Drittanbietern und beschrieben. CodeBuild


| Beispiel | Description | 
| --- | --- | 
|  BitBucket Beispiel für Pull-Request und Webhook-Filter — siehe [Führen Sie das Beispiel „Bitbucket-Pull-Request und Webhook-Filter“ aus für CodeBuild](sample-bitbucket-pull-request.md)  |  Dieses Beispiel zeigt, wie Sie eine Pull-Anfrage mit einem Bitbucket-Repository erstellen. Außerdem wird gezeigt, wie Sie einen Bitbucket-Webhook verwenden, damit CodeBuild einen Build eines Projekts erstellt.  | 
|  GitHub Beispiel für Enterprise Server — siehe [Führen Sie das GitHub Enterprise Server-Beispiel für aus CodeBuild](sample-github-enterprise.md)  |  Dieses Beispiel zeigt Ihnen, wie Sie Ihre CodeBuild Projekte einrichten, wenn in Ihrem GitHub Enterprise Server-Repository ein Zertifikat installiert ist. Es zeigt auch, wie Sie Webhooks aktivieren, sodass der Quellcode jedes Mal CodeBuild neu erstellt wird, wenn eine Codeänderung in Ihr GitHub Enterprise Server-Repository übertragen wird.  | 
|  GitHub Beispiel für Pull-Requests und Webhook-Filter — siehe [Führen Sie das GitHub Pull-Request- und Webhook-Filterbeispiel für aus CodeBuild](sample-github-pull-request.md)  |  Dieses Beispiel zeigt Ihnen, wie Sie eine Pull-Anfrage mithilfe eines GitHub Enterprise Server-Repositorys erstellen. Es zeigt auch, wie Sie Webhooks aktivieren, sodass der Quellcode jedes Mal CodeBuild neu erstellt wird, wenn eine Codeänderung in Ihr GitHub Enterprise Server-Repository übertragen wird.  | 

# Führen Sie das Beispiel „Bitbucket-Pull-Request und Webhook-Filter“ aus für CodeBuild
<a name="sample-bitbucket-pull-request"></a>

AWS CodeBuild unterstützt Webhooks, wenn das Quell-Repository Bitbucket ist. Das bedeutet, dass bei einem CodeBuild Build-Projekt, dessen Quellcode in einem Bitbucket-Repository gespeichert ist, Webhooks verwendet werden können, um den Quellcode jedes Mal neu zu erstellen, wenn eine Codeänderung in das Repository übertragen wird. Weitere Informationen finden Sie unter [Bitbucket-Webhook-Ereignisse](bitbucket-webhook.md). 

Dieses Beispiel zeigt, wie Sie eine Pull-Anfrage mit einem Bitbucket-Repository erstellen. Es zeigt dir auch, wie du einen Bitbucket-Webhook als Trigger verwendest, um einen Build eines Projekts CodeBuild zu erstellen.

**Anmerkung**  
Bei der Verwendung von Webhooks ist es möglich, dass ein Benutzer einen unerwarteten Build auslöst. Informationen zur Minderung dieses Risikos finden Sie unter. [Bewährte Methoden für die Verwendung von Webhooks](webhooks.md#webhook-best-practices)

**Topics**
+ [Voraussetzungen](#sample-bitbucket-pull-request-prerequisites)
+ [Schritt 1: Erstelle ein Build-Projekt mit Bitbucket und aktiviere Webhooks](#sample-bitbucket-pull-request-create)
+ [Schritt 2: Einen Build mit einem Bitbucket-Webhook auslösen](#sample-bitbucket-pull-request-trigger)

## Voraussetzungen
<a name="sample-bitbucket-pull-request-prerequisites"></a>

 Um dieses Beispiel auszuführen, musst du dein AWS CodeBuild Projekt mit deinem Bitbucket-Konto verbinden. 

**Anmerkung**  
 CodeBuild hat seine Berechtigungen mit Bitbucket aktualisiert. Wenn du dein Projekt zuvor mit Bitbucket verbunden hast und jetzt ein Bitbucket-Verbindungsfehler angezeigt wird, musst du die Verbindung erneut herstellen, um die CodeBuild Erlaubnis zur Verwaltung deiner Webhooks zu erteilen. 

## Schritt 1: Erstelle ein Build-Projekt mit Bitbucket und aktiviere Webhooks
<a name="sample-bitbucket-pull-request-create"></a>

 In den folgenden Schritten wird beschrieben, wie du ein AWS CodeBuild Projekt mit Bitbucket als Quell-Repository erstellst und Webhooks aktivierst. 

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

1.  Wenn eine CodeBuild Informationsseite angezeigt wird, wählen Sie Build-Projekt **erstellen**. Erweitern Sie andernfalls im Navigationsbereich **Build**, wählen Sie **Build projects** und dann **Create build project** aus. 

1. Wählen Sie **Create build project (Build-Projekt erstellen)** aus. 

1. In **Project configuration (Projektkonfiguration)**:  
**Project name**  
Geben Sie einen Namen für dieses Build-Projekt ein. Die Namen der Build-Projekte müssen für jedes AWS Konto eindeutig sein. Sie können auch eine optionale Beschreibung des Build-Projekts hinzufügen, damit andere Benutzer verstehen, wofür dieses Projekt verwendet wird.

1. In **Source (Quelle)**:  
**Quellanbieter**  
Wähle **Bitbucket**. **Folge den Anweisungen, um dich mit Bitbucket zu verbinden (oder erneut zu verbinden) und wähle dann Autorisieren aus.**  
**Repository**  
Wähle **in meinem Bitbucket-Konto Repository** aus.  
Falls du dich noch nicht mit deinem Bitbucket-Konto verbunden hast, gib deinen Bitbucket-Nutzernamen und dein App-Passwort ein und wähle Bitbucket-Anmeldeinformationen **speichern** aus.  
**Bitbucket-Repository**  
Gib die URL für dein Bitbucket-Repository ein.

1. Wähle unter **Primäre Quell-Webhook-Ereignisse** Folgendes aus. 
**Anmerkung**  
Der Abschnitt „**Primäre Webhook-Ereignisse**“ ist nur sichtbar, wenn du im vorherigen Schritt „**Repository in meinem Bitbucket-Konto**“ ausgewählt hast.

   1. Wählen Sie beim Erstellen Ihres Projekts **Rebuild every time a code change is pushed to this repository (Erneut erstellen, wenn eine Codeänderung an dieses Repository übergeben wird)** aus. 

   1. Wählen Sie unter **Event type (Ereignistyp)** eines oder mehrere Ereignisse aus. 

   1. Wenn Sie Fälle filtern möchten, in denen ein Ereignis einen Build auslöst, fügen Sie unter **Start a build under these conditions (Unter diesen Bedingungen Build starten)** einen oder mehrere optionale Filter hinzu. 

   1. Wenn Sie Fälle filtern möchten, in denen kein Ereignis ausgelöst wird, fügen Sie unter **Don't start a build under these conditions (Unter diesen Bedingungen keinen Build starten)** einen oder mehrere optionale Filter hinzu. 

   1. Wähle **Filtergruppe hinzufügen**, um bei Bedarf eine weitere Filtergruppe hinzuzufügen. 

   Weitere Informationen zu Bitbucket-Webhook-Ereignistypen und Filtern findest du unter. [Bitbucket-Webhook-Ereignisse](bitbucket-webhook.md)

1. In **Environment** (Umgebung):  
**Bild der Umgebung**  
Wählen Sie eine der folgenden Optionen:    
Um ein Docker-Image zu verwenden, das verwaltet wird von AWS CodeBuild:  
Wählen Sie **Verwaltetes Image** und wählen Sie dann **Betriebssystem**, **Runtime (s)**, ****Image**** und Image-Version aus. Treffen Sie eine Auswahl unter **Environment type (Umgebungstyp)**, sofern verfügbar.  
Um ein anderes Docker-Image zu verwenden:  
Wählen Sie **Benutzerdefiniertes Bild**. Wählen Sie als **Umgebungstyp** **ARM**, **Linux**, **Linux GPU** oder **Windows** aus. Wenn Sie **Andere Registrierung** wählen, geben Sie für **Externe Registrierungs-URL** den Namen und das Tag des Docker-Images in Docker Hub ein. Verwenden Sie dabei das Format. `docker repository/docker image name` Wenn Sie sich für **Amazon ECR** entscheiden, verwenden Sie das **Amazon ECR-Repository** und das **Amazon ECR-Image**, um das Docker-Image in Ihrem Konto auszuwählen. AWS   
Um ein privates Docker-Image zu verwenden:  
Wählen Sie **Benutzerdefiniertes Bild**. Wählen Sie als **Umgebungstyp** **ARM**, **Linux**, **Linux GPU** oder **Windows** aus. Wählen Sie unter **Image registry (Abbildregistrierung)** die Option **Other registry (Andere Registrierung)** aus und geben Sie dann den ARN der Anmeldeinformationen für Ihr privates Docker-Image ein. Die Anmeldeinformationen müssen von Secrets Manager erstellt werden. Weitere Informationen finden Sie unter [Was ist AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) im *AWS Secrets Manager Benutzerhandbuch*.  
**Rolle „Dienst“**  
Wählen Sie eine der folgenden Optionen:  
   + Wenn Sie keine CodeBuild Servicerolle haben, wählen Sie **Neue Servicerolle**. Geben Sie im Feld **Rollenname** einen Namen für die neue Rolle ein.
   + Wenn Sie eine CodeBuild Servicerolle haben, wählen Sie **Bestehende Servicerolle** aus. Wählen Sie **unter Role ARN** die Servicerolle aus.
Wenn Sie die Konsole verwenden, um ein Build-Projekt zu erstellen oder zu aktualisieren, können Sie gleichzeitig eine CodeBuild Servicerolle erstellen. In der Standardeinstellung funktioniert diese Rolle ausschließlich mit diesem Projekt. Wenn Sie die Konsole verwenden, um die Servicerolle mit einem anderen Build-Projekt zu verknüpfen, wird die Rolle so aktualisiert, dass sie mit dem anderen Build-Projekt funktioniert. Eine Servicerolle kann in bis zu zehn Build-Projekten verwendet werden.

1. Führen Sie in **Buildspec** einen der folgenden Schritte aus:
   + Wählen Sie Buildspec-Datei **verwenden, um die Datei buildspec.yml** im Quellcode-Stammverzeichnis zu verwenden.
   + Wählen Sie Build-Befehle **einfügen, um die Konsole zum Einfügen von Build-Befehlen** zu verwenden.

   Weitere Informationen hierzu finden Sie unter [Build-Spezifikationsreferenz](build-spec-ref.md).

1. In **Artifacts (Artefakte)**:  
**Typ**  
Wählen Sie eine der folgenden Optionen:  
   + Wenn keine Build-Ausgabeartefakte erstellt werden sollen, klicken Sie auf die Option **No artifacts (Keine Artefakte)**.
   + Um die Build-Ausgabe in einem S3-Bucket zu speichern, wählen Sie **Amazon S3** und gehen Sie dann wie folgt vor:
     + Lassen Sie **Name** leer, wenn Sie den Projektnamen für die ZIP-Datei mit der Build-Ausgabe verwenden möchten. Geben Sie andernfalls den Namen ein. Standardmäßig ist der Artefaktname der Projektname. Wenn Sie einen anderen Namen verwenden möchten, geben Sie diesen in das Feld für den Artefaktnamen ein. Wenn Sie eine ZIP-Datei ausgeben möchten, schließen Sie die ZIP-Erweiterung mit ein.
     + Wählen Sie für **Bucket name** den Namen des Ausgabe-Buckets aus.
     + Wenn Sie in diesem Vorgang zuvor die Option **Insert build commands (Build-Befehle einfügen)** verwendet haben, geben Sie für **Output files (Ausgabedateien)** die Speicherorte der Build-Dateien ein, die in der ZIP-Datei oder in dem Ordner für die Build-Ausgabe enthalten sein sollen. Bei mehreren Speicherorten trennen Sie die einzelnen Speicherorte durch ein Komma, (wie z. B. `appspec.yml, target/my-app.jar`). Weitere Informationen finden Sie in der Beschreibung von `files` in [Syntax der Build-Spezifikation](build-spec-ref.md#build-spec-ref-syntax).  
**Zusätzliche Konfiguration**  
Erweitern Sie **Additional configuration (Zusätzliche Einstellungen)** und legen Sie die entsprechenden Optionen fest.

1. Wählen Sie **Create build project (Build-Projekt erstellen)** aus. Klicken Sie auf der Seite **Review (Überprüfen)** auf **Start build (Build starten)**, um den Build auszuführen.

## Schritt 2: Einen Build mit einem Bitbucket-Webhook auslösen
<a name="sample-bitbucket-pull-request-trigger"></a>

Bei einem Projekt, das Bitbucket-Webhooks verwendet, AWS CodeBuild wird ein Build erstellt, wenn das Bitbucket-Repository eine Änderung in deinem Quellcode feststellt. 

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

1. Wählen Sie im Navigationsbereich **Build projects (Build-Projekte)** und dann ein Projekt aus, das mit einem Bitbucket-Repository mit Webhooks verknüpft ist. Informationen zum Erstellen eines Bitbucket-Webhook-Projekts findest du unter. [Schritt 1: Erstelle ein Build-Projekt mit Bitbucket und aktiviere Webhooks](#sample-bitbucket-pull-request-create) 

1. Nehmen Sie einige Änderungen am Code in Ihrem Bitbucket-Repository des Projekts vor. 

1. Erstellen Sie eine Pull-Anfrage in Ihrem Bitbucket-Repository. Weitere Informationen finden Sie auf der Seite zum [Durchführen einer Pull-Anfrage](https://www.atlassian.com/git/tutorials/making-a-pull-request). 

1. Wählen Sie auf der Seite über Bitbucket-Webhooks **View request (Anfrage anzeigen)** aus, um eine Liste der jüngsten Ereignisse anzuzeigen. 

1. Wähle **Details anzeigen**, um Details zu der Antwort von zu sehen. CodeBuild Er kann wie folgt aussehen: 

   ```
   "response":"Webhook received and build started: https://us-east-1.console.aws.amazon.com/codebuild/home..."
   "statusCode":200
   ```

1. Navigieren Sie zur Seite über Bitbucket Pull-Anfragen, um den Build-Status anzuzeigen. 

# Führen Sie das GitHub Enterprise Server-Beispiel für aus CodeBuild
<a name="sample-github-enterprise"></a>

AWS CodeBuild unterstützt GitHub Enterprise Server als Quell-Repository. Dieses Beispiel zeigt, wie Sie Ihre CodeBuild Projekte einrichten, wenn in Ihrem GitHub Enterprise Server-Repository ein Zertifikat installiert ist. Es zeigt auch, wie Sie Webhooks aktivieren, sodass der Quellcode jedes Mal CodeBuild neu erstellt wird, wenn eine Codeänderung in Ihr GitHub Enterprise Server-Repository übertragen wird.

**Topics**
+ [Voraussetzungen](#sample-github-enterprise-prerequisites)
+ [Schritt 1: Erstellen Sie ein Build-Projekt mit GitHub Enterprise Server und aktivieren Sie Webhooks](#sample-github-enterprise-running)

## Voraussetzungen
<a name="sample-github-enterprise-prerequisites"></a>

1. Generieren Sie ein persönliches Zugriffstoken für Ihr CodeBuild Projekt. Wir empfehlen Ihnen, einen GitHub Enterprise-Benutzer zu erstellen und ein persönliches Zugriffstoken für diesen Benutzer zu generieren. Kopieren Sie es in Ihre Zwischenablage, damit Sie es bei der Erstellung Ihres CodeBuild Projekts verwenden können. Weitere Informationen finden Sie auf der GitHub Hilfeseite unter [Erstellen eines persönlichen Zugriffstokens für die Befehlszeile](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/).

   Bei der Erstellung der persönlichen Zugriffstoken nehmen Sie den **repo**-Umfang in die Definition auf.  
![\[Der Repo-Bereich in der Definition.\]](http://docs.aws.amazon.com/de_de/codebuild/latest/userguide/images/scopes.png)

1. Laden Sie Ihr Zertifikat von GitHub Enterprise Server herunter. CodeBuild verwendet das Zertifikat, um eine vertrauenswürdige SSL-Verbindung zum Repository herzustellen.

   **Linux/macOS-Clients:**

   Führen Sie in einem Terminalfenster den folgenden Befehl aus:

   ```
   echo -n | openssl s_client -connect HOST:PORTNUMBER \
       | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /folder/filename.pem
   ```

   Ersetzen Sie die Platzhalter im Befehl durch die folgenden Werte:

   *HOST*. Die IP-Adresse Ihres GitHub Enterprise Server-Repositorys.

   *PORTNUMBER*. Die Portnummer, die Sie für die Verbindung verwenden (z. B. 443).

   *folder*. Der Ordner, in den Sie Ihr Zertifikat heruntergeladen haben.

   *filename*. Der Dateiname Ihrer Zertifikatsdatei.
**Wichtig**  
Speichern Sie das Zertifikat als .pem-Datei.

   **Windows-Clients:**

   Verwenden Sie Ihren Browser, um Ihr Zertifikat von GitHub Enterprise Server herunterzuladen. Wenn Sie die Zertifikatdetails der Website sehen, wählen Sie das Vorhängeschlosssymbol. Weitere Informationen zum Exportieren des Zertifikats finden Sie in der Dokumentation zu Ihrem Browser.
**Wichtig**  
Speichern Sie das Zertifikat als .pem-Datei.

1. Laden Sie Ihre Zertifikatdatei in einen S3-Bucket hoch. Weitere Informationen zum Erstellen eines S3-Buckets finden Sie unter [Erstellen eines S3-Buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html). Weitere Informationen zum Hochladen von Objekten in einen S3-Bucket finden Sie unter [Dateien und Ordner in einen Bucket hochladen](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html).
**Anmerkung**  
Dieser Bucket muss sich in derselben AWS Region wie Ihre Builds befinden. Wenn Sie beispielsweise angeben, dass ein Build in der Region USA Ost (Ohio) ausgeführt werden soll, muss sich der Bucket in der Region USA Ost (Ohio) befinden. CodeBuild 

## Schritt 1: Erstellen Sie ein Build-Projekt mit GitHub Enterprise Server und aktivieren Sie Webhooks
<a name="sample-github-enterprise-running"></a>

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.  Wenn eine CodeBuild Informationsseite angezeigt wird, wählen Sie Build-Projekt **erstellen**. Erweitern Sie andernfalls im Navigationsbereich **Build**, wählen Sie **Build projects** und dann **Create build project** aus. 

1. Geben Sie unter **Project name (Projektname)** einen Namen für dieses Build-Projekt ein. Die Namen von Build-Projekten müssen für jedes AWS Konto eindeutig sein. Sie können auch eine optionale Beschreibung des Build-Projekts hinzufügen, damit andere Benutzer verstehen, wofür dieses Projekt verwendet wird.

1. Wählen Sie unter **Quelle** unter **Quellanbieter** die Option **GitHub Enterprise Server** aus.
   + Wählen Sie **Kontoanmeldeinformationen verwalten** und dann **Persönliches Zugriffstoken** aus. Wählen Sie für **Service** **Secrets Manager (empfohlen)** und konfigurieren Sie Ihr Geheimnis. Geben Sie dann unter **GitHub Enterprise Personal Access Token** Ihr persönliches Zugriffstoken ein und wählen Sie **Speichern**.
   + Geben Sie für **Repository URL (Repository-URL)** den Pfad zu Ihrem Repository ein, einschließlich des Namens des Repositorys.
   + Erweitern Sie **Additional configuration (Zusätzliche Konfiguration)**.
   + Wählen Sie **Rebuild every time a code change is pushed to this repository (Bei jeder Veröffentlichung einer Codeänderung in diesem Repository neu erstellen)** aus, um bei jeder Veröffentlichung einer Codeänderung in diesem Repository einen neuen Build zu erstellen.
   + Wählen Sie **Unsicheres SSL aktivieren** aus, um SSL-Warnungen zu ignorieren, während Sie eine Verbindung zu Ihrem GitHub Enterprise Server-Projekt-Repository herstellen.
**Anmerkung**  
Wir empfehlen, dass Sie **Enable insecure SSL (Unsicheres SSL aktivieren)** nur für Tests verwenden. Es sollte nicht in einer Produktionsumgebung verwendet werden.  
![\[Die Konfiguration des GitHub Enterprise Server-Projekt-Repositorys.\]](http://docs.aws.amazon.com/de_de/codebuild/latest/userguide/images/github-enterprise.png)

1. In **Environment** (Umgebung):

   Führen Sie für **Environment image** (Umgebungs-Image) einen der folgenden Schritte aus:
   + Um ein Docker-Image zu verwenden, das von verwaltet wird AWS CodeBuild, wählen Sie **Verwaltetes Image** aus und treffen dann eine Auswahl **unter Betriebssystem**, **Runtime (s)**, ****Image**** und Image-Version. Treffen Sie eine Auswahl unter **Environment type (Umgebungstyp)**, sofern verfügbar.
   + Wenn Sie ein anderes Docker-Image verwenden möchten, wählen Sie **Custom image** (Benutzerdefiniertes Image) aus. **Wählen Sie als **Umgebungstyp** **ARM**, **Linux, Linux** **GPU** oder Windows aus.** Wenn Sie **Andere Registrierung** wählen, geben Sie für **Externe Registrierungs-URL** den Namen und das Tag des Docker-Images in Docker Hub ein. Verwenden Sie dabei das Format. `docker repository/docker image name` Wenn Sie sich für **Amazon ECR** entscheiden, verwenden Sie das **Amazon ECR-Repository** und das **Amazon ECR-Image**, um das Docker-Image in Ihrem Konto auszuwählen. AWS 
   + **Um ein privates Docker-Image zu verwenden, wählen Sie Benutzerdefiniertes Image.** Wählen Sie als **Umgebungstyp** **ARM**, **Linux**, **Linux GPU** oder **Windows** aus. Wählen Sie unter **Image registry (Abbildregistrierung)** die Option **Other registry (Andere Registrierung)** aus und geben Sie dann den ARN der Anmeldeinformationen für Ihr privates Docker-Image ein. Die Anmeldeinformationen müssen von Secrets Manager erstellt werden. Weitere Informationen finden Sie unter [Was ist AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) im *AWS Secrets Manager -Benutzerhandbuch*.

1. Führen Sie unter **Service role** (Service-Rolle) einen der folgenden Schritte aus:
   + Wenn Sie keine CodeBuild Servicerolle haben, wählen Sie **Neue Servicerolle**. Geben Sie im Feld **Rollenname** einen Namen für die neue Rolle ein.
   + Wenn Sie eine CodeBuild Servicerolle haben, wählen Sie **Bestehende Servicerolle** aus. Wählen Sie **unter Role ARN** die Servicerolle aus.
**Anmerkung**  
Wenn Sie die Konsole verwenden, um ein Build-Projekt zu erstellen oder zu aktualisieren, können Sie gleichzeitig eine CodeBuild Servicerolle erstellen. In der Standardeinstellung funktioniert diese Rolle ausschließlich mit diesem Projekt. Wenn Sie die Konsole verwenden, um die Servicerolle mit einem anderen Build-Projekt zu verknüpfen, wird die Rolle so aktualisiert, dass sie mit dem anderen Build-Projekt funktioniert. Eine Servicerolle kann in bis zu zehn Build-Projekten verwendet werden.

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

   Wenn Sie mit Ihrer VPC arbeiten möchten CodeBuild :
   + Wählen Sie für **VPC** die VPC-ID aus, die CodeBuild verwendet wird.
   + Wählen Sie für **VPC-Subnetze die Subnetze** aus, die Ressourcen enthalten, die verwendet werden. CodeBuild 
   + Wählen Sie für **VPC-Sicherheitsgruppen** die Sicherheitsgruppen aus, CodeBuild die den Zugriff auf Ressourcen in der VPCs ermöglichen.

   Weitere Informationen finden Sie unter [Verwendung AWS CodeBuild mit Amazon Virtual Private Cloud](vpc-support.md).

1. Führen Sie in **Buildspec** einen der folgenden Schritte aus:
   + Wählen Sie Buildspec-Datei **verwenden, um die Datei buildspec.yml** im Quellcode-Stammverzeichnis zu verwenden.
   + Wählen Sie Build-Befehle **einfügen, um die Konsole zum Einfügen von Build-Befehlen** zu verwenden.

   Weitere Informationen hierzu finden Sie unter [Build-Spezifikationsreferenz](build-spec-ref.md).

1. Führen Sie unter **Artifacts (Artefakte)** für **Type** (Typ) einen der folgenden Schritte aus:
   + Wenn keine Build-Ausgabeartefakte erstellt werden sollen, klicken Sie auf die Option **No artifacts (Keine Artefakte)**.
   + Um die Build-Ausgabe in einem S3-Bucket zu speichern, wählen Sie **Amazon S3** und gehen Sie dann wie folgt vor:
     + Lassen Sie **Name** leer, wenn Sie den Projektnamen für die ZIP-Datei mit der Build-Ausgabe verwenden möchten. Geben Sie andernfalls den Namen ein. Standardmäßig ist der Artefaktname der Projektname. Wenn Sie einen anderen Namen verwenden möchten, geben Sie diesen in das Feld für den Artefaktnamen ein. Wenn Sie eine ZIP-Datei ausgeben möchten, schließen Sie die ZIP-Erweiterung mit ein.
     + Wählen Sie für **Bucket name** den Namen des Ausgabe-Buckets aus.
     + Wenn Sie in diesem Vorgang zuvor die Option **Insert build commands (Build-Befehle einfügen)** verwendet haben, geben Sie für **Output files (Ausgabedateien)** die Speicherorte der Build-Dateien ein, die in der ZIP-Datei oder in dem Ordner für die Build-Ausgabe enthalten sein sollen. Bei mehreren Speicherorten trennen Sie die einzelnen Speicherorte durch ein Komma, (wie z. B. `appspec.yml, target/my-app.jar`). Weitere Informationen finden Sie in der Beschreibung von `files` in [Syntax der Build-Spezifikation](build-spec-ref.md#build-spec-ref-syntax).

1. Wählen Sie für **Cache type (Cache-Typ)** eine der folgenden Optionen aus:
   + Wenn Sie keinen Cache verwenden möchten, wählen Sie **No cache**.
   + Wenn Sie einen Amazon S3-Cache verwenden möchten, wählen Sie **Amazon S3** und gehen Sie dann wie folgt vor:
     + Wählen Sie für **Bucket** den Namen des S3-Buckets, in dem der Cache gespeichert wird.
     + (Optional) Geben Sie für das **Cache-Pfadpräfix** ein Amazon S3 S3-Pfadpräfix ein. Der Wert für **Cache path prefix (Cache-Pfadpräfix)** ist mit einem Verzeichnisnamen vergleichbar. Er ermöglicht Ihnen das Speichern des Cache in demselben Verzeichnis eines Buckets. 
**Wichtig**  
Fügen Sie am Ende des Pfadpräfix keinen abschließenden Schrägstrich (/) an.
   +  Wenn Sie einen lokalen Cache verwenden möchten, wählen Sie **Local (Lokal)** und dann mindestens einen lokalen Cache-Modus aus. 
**Anmerkung**  
Der Modus Docker layer cache (Docker-Ebenen-Cache) ist nur für Linux verfügbar. Wenn Sie diesen Modus auswählen, muss Ihr Projekt im privilegierten Modus ausgeführt werden. 

   Durch die Verwendung eines Caches wird eine erhebliche Ersparnis bei der Erstellungszeit erzielt, da wiederverwendbare Teile der Build-Umgebung im Cache gespeichert und über Builds hinweg verwendet werden. Weitere Informationen über die Angabe eines Cache in der Build-Spezifikationsdatei finden Sie unter [Syntax der Build-Spezifikation](build-spec-ref.md#build-spec-ref-syntax). Weitere Informationen zum Caching finden Sie unter [Cache-Builds zur Verbesserung der Leistung](build-caching.md). 

1. Wählen Sie **Create build project (Build-Projekt erstellen)** aus. Wählen Sie auf der Build-Projekt-Seite **Start build (Build starten)** aus.

# Führen Sie das GitHub Pull-Request- und Webhook-Filterbeispiel für aus CodeBuild
<a name="sample-github-pull-request"></a>

AWS CodeBuild unterstützt Webhooks, wenn das Quell-Repository GitHub Das bedeutet, dass bei einem CodeBuild Build-Projekt, dessen Quellcode in einem GitHub Repository gespeichert ist, Webhooks verwendet werden können, um den Quellcode jedes Mal neu zu erstellen, wenn eine Codeänderung in das Repository übertragen wird. CodeBuild Beispiele finden Sie unter [AWS CodeBuild Beispiele](https://github.com/aws-samples/aws-codebuild-samples).

**Anmerkung**  
Bei der Verwendung von Webhooks kann ein Benutzer einen unerwarteten Build auslösen. Informationen zur Minderung dieses Risikos finden Sie unter. [Bewährte Methoden für die Verwendung von Webhooks](webhooks.md#webhook-best-practices)

**Topics**
+ [Schritt 1: Erstellen Sie ein Build-Projekt mit Webhooks GitHub und aktivieren Sie sie](#sample-github-pull-request-running)
+ [Schritt 2: Stellen Sie sicher, dass Webhooks aktiviert sind](#verification-checks)

## Schritt 1: Erstellen Sie ein Build-Projekt mit Webhooks GitHub und aktivieren Sie sie
<a name="sample-github-pull-request-running"></a>

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.  Wenn eine CodeBuild Informationsseite angezeigt wird, wählen Sie Build-Projekt **erstellen**. Erweitern Sie andernfalls im Navigationsbereich **Build**, wählen Sie **Build projects** und dann **Create build project** aus. 

1. Wählen Sie **Create build project (Build-Projekt erstellen)** aus. 

1. In **Project configuration (Projektkonfiguration)**:  
**Project name**  
Geben Sie einen Namen für dieses Build-Projekt ein. Die Namen der Build-Projekte müssen für jedes AWS Konto eindeutig sein. Sie können auch eine optionale Beschreibung des Build-Projekts hinzufügen, damit andere Benutzer verstehen, wofür dieses Projekt verwendet wird.

1. In **Source (Quelle)**:  
**Quellanbieter**  
Wählen Sie **GitHub**. Folgen Sie den Anweisungen, um eine Verbindung herzustellen (oder erneut herzustellen), GitHub und wählen Sie dann **Autorisieren**.  
**Repository**  
Wählen Sie unter „**Mein GitHub Konto“ die Option Repository** aus.  
**GitHub Repository**  
Geben Sie die URL für Ihr GitHub Repository ein.

1. Wählen Sie unter **Webhook-Ereignisse der Primärquelle** die folgenden Optionen aus.
**Anmerkung**  
Der Abschnitt **Webhook-Ereignisse der Primärquelle** ist nur sichtbar, wenn Sie im vorherigen **Schritt Repository in meinem GitHub Konto** ausgewählt haben.

   1. Wählen Sie beim Erstellen Ihres Projekts **Rebuild every time a code change is pushed to this repository (Erneut erstellen, wenn eine Codeänderung an dieses Repository übergeben wird)** aus. 

   1. Wählen Sie unter **Event type (Ereignistyp)** eines oder mehrere Ereignisse aus. 

   1. Wenn Sie Fälle filtern möchten, in denen ein Ereignis einen Build auslöst, fügen Sie unter **Start a build under these conditions (Unter diesen Bedingungen Build starten)** einen oder mehrere optionale Filter hinzu. 

   1. Wenn Sie Fälle filtern möchten, in denen kein Ereignis ausgelöst wird, fügen Sie unter **Don't start a build under these conditions (Unter diesen Bedingungen keinen Build starten)** einen oder mehrere optionale Filter hinzu. 

   1. Wählen Sie **Filtergruppe hinzufügen**, um bei Bedarf eine weitere Filtergruppe hinzuzufügen. 

   Weitere Informationen zu GitHub Webhook-Ereignistypen und Filtern finden Sie unter[GitHub Webhook-Ereignisse](github-webhook.md).

1. In **Environment** (Umgebung):  
**Bild der Umgebung**  
Wählen Sie eine der folgenden Optionen:    
Um ein Docker-Image zu verwenden, das verwaltet wird von AWS CodeBuild:  
Wählen Sie **Verwaltetes Image** und wählen Sie dann **Betriebssystem**, **Runtime (s)**, ****Image**** und Image-Version aus. Treffen Sie eine Auswahl unter **Environment type (Umgebungstyp)**, sofern verfügbar.  
Um ein anderes Docker-Image zu verwenden:  
Wählen Sie **Benutzerdefiniertes Bild**. Wählen Sie als **Umgebungstyp** **ARM**, **Linux**, **Linux GPU** oder **Windows** aus. Wenn Sie **Andere Registrierung** wählen, geben Sie für **Externe Registrierungs-URL** den Namen und das Tag des Docker-Images in Docker Hub ein. Verwenden Sie dabei das Format. `docker repository/docker image name` Wenn Sie sich für **Amazon ECR** entscheiden, verwenden Sie das **Amazon ECR-Repository** und das **Amazon ECR-Image**, um das Docker-Image in Ihrem Konto auszuwählen. AWS   
Um ein privates Docker-Image zu verwenden:  
Wählen Sie **Benutzerdefiniertes Bild**. Wählen Sie als **Umgebungstyp** **ARM**, **Linux**, **Linux GPU** oder **Windows** aus. Wählen Sie unter **Image registry (Abbildregistrierung)** die Option **Other registry (Andere Registrierung)** aus und geben Sie dann den ARN der Anmeldeinformationen für Ihr privates Docker-Image ein. Die Anmeldeinformationen müssen von Secrets Manager erstellt werden. Weitere Informationen finden Sie unter [Was ist AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) im *AWS Secrets Manager Benutzerhandbuch*.  
**Rolle „Dienst“**  
Wählen Sie eine der folgenden Optionen:  
   + Wenn Sie keine CodeBuild Servicerolle haben, wählen Sie **Neue Servicerolle**. Geben Sie im Feld **Rollenname** einen Namen für die neue Rolle ein.
   + Wenn Sie eine CodeBuild Servicerolle haben, wählen Sie **Bestehende Servicerolle** aus. Wählen Sie **unter Role ARN** die Servicerolle aus.
Wenn Sie die Konsole verwenden, um ein Build-Projekt zu erstellen oder zu aktualisieren, können Sie gleichzeitig eine CodeBuild Servicerolle erstellen. In der Standardeinstellung funktioniert diese Rolle ausschließlich mit diesem Projekt. Wenn Sie die Konsole verwenden, um die Servicerolle mit einem anderen Build-Projekt zu verknüpfen, wird die Rolle so aktualisiert, dass sie mit dem anderen Build-Projekt funktioniert. Eine Servicerolle kann in bis zu zehn Build-Projekten verwendet werden.

1. Führen Sie in **Buildspec** einen der folgenden Schritte aus:
   + Wählen Sie Buildspec-Datei **verwenden, um die Datei buildspec.yml** im Quellcode-Stammverzeichnis zu verwenden.
   + Wählen Sie Build-Befehle **einfügen, um die Konsole zum Einfügen von Build-Befehlen** zu verwenden.

   Weitere Informationen hierzu finden Sie unter [Build-Spezifikationsreferenz](build-spec-ref.md).

1. In **Artifacts (Artefakte)**:  
**Typ**  
Wählen Sie eine der folgenden Optionen:  
   + Wenn keine Build-Ausgabeartefakte erstellt werden sollen, klicken Sie auf die Option **No artifacts (Keine Artefakte)**.
   + Um die Build-Ausgabe in einem S3-Bucket zu speichern, wählen Sie **Amazon S3** und gehen Sie dann wie folgt vor:
     + Lassen Sie **Name** leer, wenn Sie den Projektnamen für die ZIP-Datei mit der Build-Ausgabe verwenden möchten. Geben Sie andernfalls den Namen ein. Standardmäßig ist der Artefaktname der Projektname. Wenn Sie einen anderen Namen verwenden möchten, geben Sie diesen in das Feld für den Artefaktnamen ein. Wenn Sie eine ZIP-Datei ausgeben möchten, schließen Sie die ZIP-Erweiterung mit ein.
     + Wählen Sie für **Bucket name** den Namen des Ausgabe-Buckets aus.
     + Wenn Sie in diesem Vorgang zuvor die Option **Insert build commands (Build-Befehle einfügen)** verwendet haben, geben Sie für **Output files (Ausgabedateien)** die Speicherorte der Build-Dateien ein, die in der ZIP-Datei oder in dem Ordner für die Build-Ausgabe enthalten sein sollen. Bei mehreren Speicherorten trennen Sie die einzelnen Speicherorte durch ein Komma, (wie z. B. `appspec.yml, target/my-app.jar`). Weitere Informationen finden Sie in der Beschreibung von `files` in [Syntax der Build-Spezifikation](build-spec-ref.md#build-spec-ref-syntax).  
**Zusätzliche Konfiguration**  
Erweitern Sie **Additional configuration (Zusätzliche Einstellungen)** und legen Sie die entsprechenden Optionen fest.

1. Wählen Sie **Create build project (Build-Projekt erstellen)** aus. Klicken Sie auf der Seite **Review (Überprüfen)** auf **Start build (Build starten)**, um den Build auszuführen.

## Schritt 2: Stellen Sie sicher, dass Webhooks aktiviert sind
<a name="verification-checks"></a>

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 linken Navigationsbereich **Build projects** aus.

1. Führen Sie eine der folgenden Aktionen aus:
   + Klicken Sie auf den Link des Build-Projekts mit Webhooks, das Sie kontrollieren möchten, und klicken Sie dann auf **Build details (Build-Details)**.
   + **Wählen Sie die Schaltfläche neben dem Build-Projekt mit den Webhooks, die Sie verifizieren möchten, wählen Sie **Details anzeigen** und dann den Tab Build-Details aus.**

1. Wählen Sie unter **Webhook-Ereignisse der Primärquelle** den **Webhook-URL-Link** aus. 

1. Vergewissern Sie sich in Ihrem GitHub Repository auf der Seite **Einstellungen** unter **Webhooks**, dass **Pull Requests** und **Pushes** ausgewählt sind.

1. In Ihren GitHub Profileinstellungen sollten Sie unter **Persönliche Einstellungen**, **Anwendungen**, **Autorisierte OAuth Apps** sehen, dass Ihre Anwendung für den Zugriff auf die von Ihnen ausgewählte AWS Region autorisiert wurde.

# Tutorial: Apple-Codesignatur mit Fastlane bei der CodeBuild Verwendung von S3 für die Zertifikatsspeicherung
<a name="sample-fastlane"></a>

[fastlane](https://docs.fastlane.tools/) ist ein beliebtes Open-Source-Automatisierungstool zur Automatisierung von Beta-Bereitstellungen und -Releases für Ihre iOS- und Android-Apps. Es erledigt alle mühsamen Aufgaben wie das Generieren von Screenshots, das Signieren von Code und die Veröffentlichung Ihrer Anwendung.

## Voraussetzungen
<a name="sample-fastlane-prerequisites"></a>

Um dieses Tutorial abzuschließen, müssen Sie zunächst Folgendes eingerichtet haben:
+ Ein AWS-Konto
+ Ein [Apple-Entwickler-Konto](https://developer.apple.com/)
+ Ein S3-Bucket zum Speichern von Zertifikaten
+ Fastlane ist in Ihrem Projekt installiert — [Anleitung](https://docs.fastlane.tools/getting-started/ios/setup/) zur Installation von Fastlane

## Schritt 1: Richten Sie Fastlane Match mit S3 auf Ihrem lokalen Computer ein
<a name="sample-fastlane-S3"></a>

[Fastlane Match](https://docs.fastlane.tools/actions/match/) ist eines der [Fastlane-Tools](https://fastlane.tools/) und ermöglicht eine nahtlose Konfiguration für die Codesignatur sowohl in Ihrer lokalen Entwicklungsumgebung als auch in Ihrer lokalen Entwicklungsumgebung. CodeBuild Fastlane Match speichert alle Ihre Codesignaturzertifikate und Bereitstellungsprofile in einem Git repository/S3 Bucket/Google Cloud-Speicher und lädt bei Bedarf die erforderlichen Zertifikate und Profile herunter und installiert sie.

In dieser Beispielkonfiguration richten Sie einen Amazon S3 S3-Bucket ein und verwenden ihn als Speicher. 

****

1. Initialisieren Sie Match in Ihrem Projekt:

   ```
   fastlane match init
   ```

1. Wenn Sie dazu aufgefordert werden, wählen Sie S3 als Speichermodus.

1. Aktualisieren Sie Ihr `*Matchfile*`, um S3 zu verwenden:

   ```
   storage_mode("s3")
      s3_bucket("your-s3-bucket-name")
      s3_region("your-aws-region")
      type("appstore") # The default type, can be: appstore, adhoc, enterprise or development
   ```

## Schritt 2: Richten Sie Ihr Fastfile ein
<a name="sample-fastlane-S3-fastfile"></a>

Erstellen oder aktualisieren Sie Ihr `Fastfile` mit der folgenden Spur.

Wenn aktiviert CodeBuild, muss Fastlane Match jedes Mal ausgeführt werden, wenn Sie Ihre App erstellen und signieren. Der einfachste Weg, dies zu tun, besteht darin, die `match` Aktion zu der Lane hinzuzufügen, auf der Ihre App erstellt wird.

```
default_platform(:ios)

platform :ios do
  before_all do
    setup_ci
  end
  
  desc "Build and sign the app"
  lane :build do
    match(type: "appstore", readonly: true)
    gym(
      scheme: "YourScheme",
      export_method: "app-store"
    )
  end
end
```

**Anmerkung**  
Stellen Sie sicher, dass `setup_ci` Sie den `before_all ` Abschnitt in erweitern, `Fastfile` damit die Match-Aktion korrekt funktioniert. Dadurch wird sichergestellt, dass ein temporärer Fastlane-Schlüsselbund mit den entsprechenden Berechtigungen verwendet wird. Wenn Sie dies nicht verwenden, kann es zu Build-Fehlern oder inkonsistenten Ergebnissen kommen. 



## Schritt 3: Führen Sie den `fastlane match` Befehl aus, um die entsprechenden Zertifikate und Profile zu generieren
<a name="sample-fastlane-S3-certificates"></a>

Der Fastlane-Match-Befehl für den angegebenen Typ (d. h. Entwicklung, Appstore, Adhoc, Enterprise) generiert das Zertifikat und das Profil, sofern sie nicht im Remote-Speicher verfügbar sind. Die Zertifikate und Profile werden von Fastlane in S3 gespeichert.

```
bundle exec fastlane match appstore
```

Die Befehlsausführung erfolgt interaktiv und Fastlane fordert Sie auf, eine Passphrase für die Entschlüsselung der Zertifikate festzulegen.

## Schritt 4: Erstellen Sie die Anwendungsdatei für Ihr Projekt
<a name="sample-fastlane-S3-appfile"></a>

Erstellen Sie die Anwendungsdatei entsprechend Ihrem Projekt oder fügen Sie sie hinzu.

****

1. Erstellen oder fügen Sie [Gymfile, Appfile](http://docs.fastlane.tools/actions/gym/#gymfile)[, Snapfile](http://docs.fastlane.tools/advanced/Appfile/) [und [Deliverfile](http://docs.fastlane.tools/actions/deliver/#editing-the-deliverfile)](http://docs.fastlane.tools/actions/snapshot/#snapfile) basierend auf Ihren Projekt-Build-Anforderungen hinzu.

1. Übernehmen Sie die Änderungen in Ihr Remote-Repository

## Schritt 5: Umgebungsvariablen in Secrets Manager erstellen
<a name="sample-fastlane-S3-secrets"></a>

Erstellen Sie zwei Geheimnisse zum Speichern des Fastlane-Sitzungscookies und der passenden Passphrase. Weitere Informationen zum Erstellen von Geheimnissen in Secrets Manager finden Sie unter [Create an AWS Secrets Manager Secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html).

****

1. Greifen Sie wie folgt auf Ihr Fastlane-Sitzungscookie zu.

   1. Geheimer Schlüssel - `FASTLANE_SESSION`

   1. Geheimer Wert — Sitzungscookie, das durch die Ausführung des folgenden Befehls auf Ihrem lokalen Computer generiert wurde.
**Anmerkung**  
Dieser Wert ist nach der Authentifizierung in einer lokalen Datei verfügbar:`~/.fastlane/spaceship/my_appleid_username/cookie`.

      ```
      fastlane spaceauth -u <apple account>
      ```

1. Fastlane Match-Passphrase — Damit Fastlane Match die im S3-Bucket gespeicherten Zertifikate und Profile entschlüsseln kann, müssen Sie die Verschlüsselungspassphrase, die Sie im Match-Setup-Schritt konfiguriert haben, zu den Umgebungsvariablen des Projekts hinzufügen. CodeBuild

   1. Geheimer Schlüssel - `MATCH_PASSWORD`

   1. Geheimer Wert -*<match passphrase to decrypt certificates>*. Die Passphrase wird bei der Generierung der Zertifikate in Schritt 3 festgelegt.

**Anmerkung**  
Denken Sie beim Erstellen der oben genannten Geheimnisse in Secrets Manager daran, einen geheimen Namen mit dem folgenden Präfix anzugeben: `/CodeBuild/`

## Schritt 6: Erstellen Sie eine Rechenflotte
<a name="sample-fastlane-S3-fleet"></a>

Erstellen Sie die Rechenflotte für Ihr Projekt.

****

1. Gehen Sie in der Konsole zu CodeBuild und erstellen Sie eine neue Rechenflotte.

1. Wählen Sie „macOS“ als Betriebssystem und wählen Sie einen geeigneten Computertyp und ein entsprechendes Image aus.

## Schritt 7: Erstellen Sie ein Projekt in CodeBuild
<a name="sample-fastlane-S3-project"></a>

Erstellen Sie Ihr Projekt in CodeBuild.



****

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. Erstellen Sie ein Build-Projekt. Weitere Informationen finden Sie unter [Erstellen Sie ein Build-Projekt (Konsole)](create-project.md#create-project-console) und [Ausführen eines Build (Konsole)](run-build-console.md).

1. Richten Sie Ihren Quellanbieter ein (z. B. GitHub,). CodeCommit Dies ist das Quell-Repository für iOS-Projekte und kein Zertifikats-Repository.

1.  In **Environment** (Umgebung): 
   + Wählen Sie **Reservierte Kapazität**.
   + Wählen Sie für **Flotte** die oben erstellte Flotte aus.
   + Geben Sie den Namen der Servicerolle an, die für Sie erstellt CodeBuild werden soll.
   + Geben Sie die folgenden Umgebungsvariablen an.
     + Name:`MATCH_PASSWORD`, Wert:*<secrets arn>*, Typ: Secrets Manager (Secrets ARN wurde in Schritt 5 für MATCH\$1PASSWORD erstellt)
     + Name:`FASTLANE_SESSION`, Wert:*<secrets arn>*, Typ: Secrets Manager (Secrets ARN, erstellt in Schritt 5 für FASTLANE\$1SESSION)

1. Fügen Sie in **Buildspec Folgendes hinzu**:

   ```
   version: 0.2
   
   phases:
     install:
       commands:
         - gem install bundler
         - bundle install
     build:
       commands:
         - echo "Building and signing the app..."
         - bundle exec fastlane build
     post_build:
       commands:
         - echo "Build completed on date"
   
   artifacts:
     files:
       - '*/.ipa'
     name: app-$(date +%Y-%m-%d)
   ```

## Schritt 8: Konfigurieren Sie die IAM-Rolle
<a name="sample-fastlane-S3-role"></a>

Stellen Sie nach der Erstellung des Projekts sicher, dass die CodeBuild Servicerolle Ihres Projekts über Berechtigungen für den Zugriff auf den S3-Bucket verfügt, der die Zertifikate enthält. Fügen Sie der Rolle die folgende Richtlinie hinzu:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:::your-s3-bucket-name"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::your-s3-bucket-name/*"
        }
    ]
}
```

------

## Schritt 9: Führen Sie den Build aus
<a name="sample-fastlane-S3-run"></a>

Führen Sie den Build aus. Sie können den Build-Status überprüfen und sich anmelden CodeBuild.

Sobald der Job abgeschlossen ist, können Sie das Protokoll des Jobs einsehen.

## Fehlerbehebung
<a name="sample-fastlane-S3-troubleshooting"></a>
+ Wenn beim Abrufen von Zertifikaten Probleme auftreten, stellen Sie sicher, dass Ihre IAM-Berechtigungen für den S3-Zugriff korrekt eingerichtet sind.
+ Wenn bei der Entschlüsselung von Zertifikaten Probleme auftreten, stellen Sie sicher, dass Sie in der Umgebungsvariablen MATCH\$1PASSWORD die richtige Passphrase angeben.
+ Stellen Sie bei Problemen mit der Codesignatur sicher, dass Ihr Apple Developer-Konto über die erforderlichen Zertifikate und Profile verfügt und dass die Bundle-ID in Ihrem Xcode-Projekt mit der in Ihrem Bereitstellungsprofil übereinstimmt.

## Sicherheitsüberlegungen
<a name="sample-fastlane-considerations"></a>

Im Folgenden finden Sie Sicherheitsüberlegungen für dieses Tutorial.
+ Stellen Sie sicher, dass Ihr S3-Bucket über die entsprechenden Sicherheitseinstellungen verfügt, einschließlich Verschlüsselung im Ruhezustand. Stellen Sie insbesondere sicher, dass der Bucket keinen öffentlichen Zugriff hat, und beschränken Sie den Zugriff nur CodeBuild auf das System, für das ein Zugriff erforderlich ist.
+ Erwägen Sie AWS Secrets Manager die Verwendung von MATCH\$1PASSWORD und FASTLANE\$1SESSION zum Speichern vertraulicher Informationen.

Dieses Beispiel bietet eine Einrichtung für die iOS-Codesignatur mit Fastlane CodeBuild unter Verwendung von Amazon S3 für die Zertifikatsspeicherung. Möglicherweise müssen Sie einige Schritte an Ihre spezifischen Projektanforderungen und Ihre CodeBuild Umgebung anpassen. Dieser Ansatz nutzt AWS Dienste für mehr Sicherheit und Integration innerhalb des AWS Ökosystems.

# Tutorial: Apple-Codesignatur mit Fastlane bei der CodeBuild Verwendung GitHub als Zertifikatsspeicher
<a name="sample-fastlane-github"></a>

[Fastlane](https://docs.fastlane.tools/) ist ein beliebtes Open-Source-Automatisierungstool zur Automatisierung von Beta-Bereitstellungen und -Releases für Ihre iOS- und Android-Apps. Es erledigt alle mühsamen Aufgaben wie das Generieren von Screenshots, das Signieren von Code und die Veröffentlichung Ihrer Anwendung.

Dieses Beispiel zeigt, wie Sie Apple-Codesignatur mithilfe von Fastlane in einem CodeBuild Projekt einrichten, das auf einer Mac-Flotte ausgeführt wird, und zwar GitHub als Speicher für Zertifikate und Bereitstellungsprofile.

## Voraussetzungen
<a name="sample-fastlane-github-prerequisites"></a>

Um dieses Tutorial abzuschließen, müssen Sie zunächst Folgendes eingerichtet haben:
+ Ein AWS-Konto
+ Ein [Apple-Entwicklerkonto](https://developer.apple.com/)
+ Ein privates GitHub Repository zum Speichern von Zertifikaten
+ Fastlane ist in Ihrem Projekt installiert — [Anleitung](https://docs.fastlane.tools/getting-started/ios/setup/) zur Installation von Fastlane

## Schritt 1: Richten Sie Fastlane Match mit GitHub auf Ihrem lokalen Computer ein
<a name="sample-fastlane-github-certificates"></a>

[Fastlane Match](https://docs.fastlane.tools/actions/match/) ist eines der [Fastlane-Tools](https://fastlane.tools/) und ermöglicht eine nahtlose Konfiguration für die Codesignatur sowohl in Ihrer lokalen Entwicklungsumgebung als auch in Ihrer lokalen Entwicklungsumgebung. CodeBuild Fastlane Match speichert alle Ihre Codesignaturzertifikate und Bereitstellungsprofile in einem Git repository/S3 Bucket/Google Cloud-Speicher und lädt bei Bedarf die erforderlichen Zertifikate und Profile herunter und installiert sie.

In dieser Beispielkonfiguration werden wir ein Git-Repository für die Speicherung einrichten und verwenden. 

****

1. Initialisiere Match in deinem Projekt:

   ```
   fastlane match init
   ```

1. Wenn Sie dazu aufgefordert werden, wählen Sie GitHub den Speichermodus.

1. Aktualisieren Sie Ihr `*Matchfile*`, um es zu verwenden GitHub:

   ```
   git_url("https://github.com/your-username/your-certificate-repo.git")
   storage_mode("git")
   type("development") # The default type, can be: appstore, adhoc, enterprise or development
   ```

**Anmerkung**  
Stellen Sie sicher, dass Sie die HTTPS-URL für Ihr Git-Repository für Fastlane eingeben, um sich erfolgreich zu authentifizieren und zu klonen. Andernfalls wird möglicherweise ein Authentifizierungsfehler angezeigt, wenn Sie versuchen, Match zu verwenden.

## Schritt 2: Richten Sie Ihr Fastfile ein
<a name="sample-fastlane-github-fastfile"></a>

Erstellen oder aktualisieren Sie Ihr `Fastfile` mit der folgenden Spur.

Wenn aktiviert CodeBuild, muss Fastlane Match jedes Mal ausgeführt werden, wenn Sie Ihre App erstellen und signieren. Der einfachste Weg, dies zu tun, besteht darin, die `match` Aktion zu der Lane hinzuzufügen, auf der Ihre App erstellt wird.

```
default_platform(:ios)

platform :ios do
  before_all do
    setup_ci
  end
  
  desc "Build and sign the app"
  lane :build do
    match(type: "appstore", readonly: true)
    gym(
      scheme: "YourScheme",
      export_method: "app-store"
    )
  end
end
```

**Anmerkung**  
Stellen Sie sicher, dass `setup_ci` Sie den `before_all ` Abschnitt in erweitern, `Fastfile` damit die Match-Aktion korrekt funktioniert. Dadurch wird sichergestellt, dass ein temporärer Fastlane-Schlüsselbund mit den entsprechenden Berechtigungen verwendet wird. Ohne diese Option kann es zu Build-Fehlern oder inkonsistenten Ergebnissen kommen. 

## Schritt 3: Führen Sie den `fastlane match` Befehl aus, um die entsprechenden Zertifikate und Profile zu generieren
<a name="sample-fastlane-github-certificates"></a>

Der Fastlane-Match-Befehl für den angegebenen Typ (d. h. Entwicklung, Appstore, Adhoc, Enterprise) generiert das Zertifikat und das Profil, sofern sie nicht im Remote-Speicher verfügbar sind. Die Zertifikate und Profile werden von Fastlane gespeichert. GitHub 

```
bundle exec fastlane match appstore
```

Die Befehlsausführung erfolgt interaktiv und Fastlane fordert Sie auf, eine Passphrase für die Entschlüsselung der Zertifikate festzulegen.

## Schritt 4: Erstellen Sie die Anwendungsdatei für Ihr Projekt
<a name="sample-fastlane-github-appfile"></a>

Erstellen Sie die Anwendungsdatei entsprechend Ihrem Projekt oder fügen Sie sie hinzu.

****

1. Erstellen oder fügen Sie [Gymfile, Appfile](http://docs.fastlane.tools/actions/gym/#gymfile)[, Snapfile](http://docs.fastlane.tools/advanced/Appfile/) [und [Deliverfile](http://docs.fastlane.tools/actions/deliver/#editing-the-deliverfile)](http://docs.fastlane.tools/actions/snapshot/#snapfile) auf der Grundlage Ihrer Projekt-Build-Anforderungen hinzu.

1. Übernehmen Sie die Änderungen in Ihr Remote-Repository.

## Schritt 5: Umgebungsvariablen in Secrets Manager erstellen
<a name="sample-fastlane-github-secrets"></a>

Erstellen Sie drei Geheimnisse zum Speichern des Fastlane-Sitzungscookies und der passenden Passphrase. Weitere Informationen zum Erstellen von Geheimnissen in Secrets Manager finden Sie unter [Create an AWS Secrets Manager Secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html).

****

1. Greifen Sie wie folgt auf Ihr Fastlane-Sitzungscookie zu.

   1. Geheimer Schlüssel - `FASTLANE_SESSION`

   1. Geheimer Wert — Sitzungscookie, das durch die Ausführung des folgenden Befehls auf Ihrem lokalen Computer generiert wurde.
**Anmerkung**  
Dieser Wert ist nach der Authentifizierung in einer lokalen Datei verfügbar:`~/.fastlane/spaceship/my_appleid_username/cookie`.

      ```
      fastlane spaceauth -u <Apple_account>
      ```

1. Fastlane Match-Passphrase — Damit Fastlane Match die im Git-Repository gespeicherten Zertifikate und Profile entschlüsseln kann, müssen Sie die Verschlüsselungspassphrase, die Sie im Match-Setup-Schritt konfiguriert haben, zu den Umgebungsvariablen des Projekts hinzufügen. CodeBuild 

   1. Geheimer Schlüssel - `MATCH_PASSWORD`

   1. Geheimer Wert -`<match passphrase to decrypt certificates>`. Die Passphrase wird beim Generieren der Zertifikate in Schritt 3 festgelegt.

1. *Fastlane `MATCH_GIT_BASIC_AUTHORIZATION` — legen Sie eine grundlegende Autorisierung für Match fest:*

   1. Geheimer Schlüssel: 

      `MATCH_GIT_BASIC_AUTHORIZATION`

   1. Geheimer Wert — Der Wert sollte eine Base64-kodierte Zeichenfolge aus Ihrem Benutzernamen und Ihrem persönlichen Zugriffstoken (PAT) im folgenden Format sein. `username:password` Sie können ihn mit dem folgenden Befehl generieren:

      ```
      echo -n your_github_username:your_personal_access_token | base64
      ```

      Sie können Ihre PAT auf der GitHub Konsole unter **Ihr Profil > Einstellungen > Entwicklereinstellungen > Persönliches Zugriffstoken** generieren. [Weitere Informationen finden Sie in der folgenden Anleitung: https://docs.github.com/en/ authentication/keeping-your-account-and-data-secure/managing -. your-personal-access-tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)

**Anmerkung**  
Denken Sie beim Erstellen der oben genannten Geheimnisse in Secrets Manager daran, einen geheimen Namen mit dem folgenden Präfix anzugeben: `/CodeBuild/`

## Schritt 6: Erstellen Sie eine Rechenflotte
<a name="sample-fastlane-github-fleet"></a>

Erstellen Sie die Rechenflotte für Ihr Projekt.

****

1. Gehen Sie in der Konsole zu CodeBuild und erstellen Sie eine neue Rechenflotte.

1. Wählen Sie `macOS` als Betriebssystem und wählen Sie einen geeigneten Compute-Typ und ein entsprechendes Image aus.

## Schritt 7: Erstellen Sie ein Projekt in CodeBuild
<a name="sample-fastlane-github-project"></a>

Erstellen Sie Ihr Projekt in CodeBuild.

****

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. Erstellen Sie ein Build-Projekt. Weitere Informationen finden Sie unter [Erstellen Sie ein Build-Projekt (Konsole)](create-project.md#create-project-console) und [Ausführen eines Build (Konsole)](run-build-console.md).

1. Richten Sie Ihren Quellanbieter ein (z. B. GitHub). CodeCommit Dies ist das Quell-Repository für iOS-Projekte und kein Zertifikats-Repository.

1.  In **Environment** (Umgebung): 
   + Wählen Sie **Reservierte Kapazität**.
   + Wählen Sie für **Flotte** die oben erstellte Flotte aus.
   + Geben Sie den Namen der Servicerolle ein, die für Sie erstellt CodeBuild werden soll.
   + Geben Sie die folgenden Umgebungsvariablen an.
     + Name:`MATCH_PASSWORD`, Wert:*<secrets arn>*, Typ: Secrets Manager (Secrets ARN wurde in Schritt 5 für MATCH\$1PASSWORD erstellt)
     + Name:`FASTLANE_SESSION`, Wert:*<secrets arn>*, Typ: Secrets Manager (Secrets ARN wurde in Schritt 5 für FASTLANE\$1SESSION erstellt)
     + Name:`MATCH_GIT_BASIC_AUTHORIZATION`, Wert:*<secrets ARN>*, Typ: Secrets Manager Secrets ARN (erstellt in Schritt 5 für`MATCH_GIT_BASIC_AUTHORIZATION`)

1. Fügen Sie in **Buildspec** Folgendes hinzu:

   ```
   version: 0.2
   
   phases:
     install:
       commands:
         - gem install bundler
         - bundle install
     build:
       commands:
         - echo "Building and signing the app..."
         - bundle exec fastlane build
     post_build:
       commands:
         - echo "Build completed on date"
   
   artifacts:
     files:
       - '*/.ipa'
     name: app-$(date +%Y-%m-%d)
   ```

## Schritt 8: Führen Sie den Build aus
<a name="sample-fastlane-github-run"></a>

Führen Sie den Build aus. Sie können den Build-Status überprüfen und sich anmelden CodeBuild.

Sobald der Job abgeschlossen ist, können Sie das Protokoll des Jobs einsehen.

## Fehlerbehebung
<a name="sample-fastlane-github-troubleshooting"></a>
+ Wenn Sie Probleme beim Zugriff auf das GitHub Repository haben, überprüfen Sie Ihr persönliches Zugriffstoken und die Umgebungsvariable MATCH\$1GIT\$1BASIC\$1AUTHORIZATION.
+ Wenn Sie Probleme mit der Zertifikatsentschlüsselung haben, stellen Sie sicher, dass Sie die richtige Passphrase in der Umgebungsvariablen MATCH\$1PASSWORD angeben.
+ Stellen Sie bei Problemen mit der Codesignatur sicher, dass Ihr Apple Developer-Konto über die erforderlichen Zertifikate und Profile verfügt und dass die Bundle-ID in Ihrem Xcode-Projekt mit der in Ihrem Bereitstellungsprofil übereinstimmt.

## Sicherheitsüberlegungen
<a name="sample-fastlane-github-considerations"></a>

Im Folgenden finden Sie Sicherheitsüberlegungen für dieses Tutorial.
+ Halten Sie Ihr GitHub Repository für Zertifikate privat und überprüfen Sie den Zugriff regelmäßig.
+ Erwägen Sie AWS Secrets Manager die Verwendung von MATCH\$1PASSWORD und FASTLANE\$1SESSION zum Speichern vertraulicher Informationen.

Dieses Beispiel bietet ein Setup für die iOS-Codesignatur mit Fastlane, das GitHub für die Zertifikatsspeicherung CodeBuild verwendet wird. Möglicherweise müssen Sie einige Schritte an Ihre spezifischen Projektanforderungen und Ihre CodeBuild Umgebung anpassen. Dieser Ansatz nutzt AWS Dienste für mehr Sicherheit und Integration innerhalb des AWS Ökosystems.

# Legen Sie Artefaktnamen zur Build-Zeit mithilfe der semantischen Versionierung fest
<a name="sample-buildspec-artifact-naming"></a>

 Dieses Beispiel enthält buildspec-Beispieldateien, die zeigen, wie ein Artefaktname angegeben wird, der während der Build-Erstellung erstellt wird. Ein in einer buildspec-Datei angegebener Name kann Shell-Befehle und Umgebungsvariablen enthalten, um ihn eindeutig zu gestalten. Ein in einer buildspec-Datei angegebener Name überschreibt einen Name, den Sie beim Erstellen des Projekts in der Konsole angeben.

 Wenn Sie den Build mehrmals erstellen, kann mit einem in der buildspec-Datei angegebenen Namen sichergestellt werden, dass die Namen der Ausgabeartefaktdateien eindeutig sind. Sie können beispielsweise einen Datums- und Zeitstempel verwenden, der während der Build-Erstellung in den Artefaktnamen eingefügt wird. 

Wenn Sie den in der Konsole eingegebenen Artefaktnamen mit einem Namen in der buildspec-Datei überschreiben möchten, gehen Sie wie folgt vor:

1.  Konfigurieren Sie das Build-Projekt so, dass der Artefaktname mit einem Namen in der buildspec-Datei überschrieben wird. 
   +  Wenn Sie die Konsole zum Erstellen Ihres Build-Projekts verwenden, wählen Sie **Enable semantitic versioning (Semantisches Versioning aktivieren)** aus. Weitere Informationen finden Sie unter [Erstellen Sie ein Build-Projekt (Konsole)](create-project.md#create-project-console). 
   +  Wenn Sie das verwenden AWS CLI, setzen Sie das in der `overrideArtifactName` übergebenen Datei im JSON-Format auf true. `create-project` Weitere Informationen finden Sie unter [Erstellen eines Build-Projekts (AWS CLI)](create-project.md#create-project-cli). 
   +  Wenn Sie die AWS CodeBuild API verwenden, setzen Sie das `overrideArtifactName` Flag für das `ProjectArtifacts` Objekt, wenn ein Projekt erstellt oder aktualisiert oder ein Build gestartet wird. 

1.  Geben Sie einen Namen in der buildspec-Datei an. Ziehen Sie die folgenden buildspec-Beispieldateien zur Orientierung heran. 

 Dieses Linux-Beispiel zeigt, wie Sie einen Artefaktnamen angeben, der das Datum der Build-Erstellung enthält: 

```
version: 0.2         
phases:
  build:
    commands:
      - rspec HelloWorld_spec.rb
artifacts:
  files:
    - '**/*'
  name: myname-$(date +%Y-%m-%d)
```

 Dieses Linux-Beispiel zeigt, wie Sie einen Artefaktnamen angeben, der eine CodeBuild-Umgebungsvariable verwendet. Weitere Informationen finden Sie unter [Umgebungsvariablen in Build-Umgebungen](build-env-ref-env-vars.md). 

```
version: 0.2         
phases:
  build:
    commands:
      - rspec HelloWorld_spec.rb
artifacts:
  files:
    - '**/*'
  name: myname-$AWS_REGION
```

 Dieses Windows-Beispiel zeigt, wie Sie einen Artefaktnamen angeben, der das Datum und die Zeit der Build-Erstellung enthält: 

```
version: 0.2
env:
  variables:
    TEST_ENV_VARIABLE: myArtifactName
phases:
  build:
    commands:
      - cd samples/helloworld
      - dotnet restore
      - dotnet run
artifacts:
  files:
    - '**/*'
  name: $Env:TEST_ENV_VARIABLE-$(Get-Date -UFormat "%Y%m%d-%H%M%S")
```

 Dieses Windows-Beispiel zeigt Ihnen, wie Sie einen Artefaktnamen angeben, der eine in der Buildspec-Datei deklarierte Variable und eine Umgebungsvariable verwendet. CodeBuild Weitere Informationen finden Sie unter [Umgebungsvariablen in Build-Umgebungen](build-env-ref-env-vars.md). 

```
version: 0.2
env:
  variables:
    TEST_ENV_VARIABLE: myArtifactName
phases:
  build:
    commands:
      - cd samples/helloworld
      - dotnet restore
      - dotnet run
artifacts:
  files:
    - '**/*'
  name: $Env:TEST_ENV_VARIABLE-$Env:AWS_REGION
```

 Weitere Informationen finden Sie unter [Referenz zur Build-Spezifikation für CodeBuild](build-spec-ref.md). 