

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.

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

------