

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.

# Tutorial: Erstellen Sie ein Docker-Image und übertragen Sie es auf Amazon ECR mit CodePipeline (Typ V2)
<a name="tutorials-ecr-build-publish"></a>

Dieses Tutorial hilft Ihnen dabei, eine Build-Aktion zu erstellen CodePipeline , die Ihr Docker-Image nach einer Änderung an Ihrem Quellcode ausführt und an Amazon ECR überträgt. Dieses Tutorial zeigt Ihnen auch, wie Sie eine Amazon ECS-Bereitstellungsaktion hinzufügen, die Ihr gepushtes Image bereitstellt.

**Wichtig**  
Im Rahmen der Erstellung einer Pipeline in der Konsole wird ein S3-Artefakt-Bucket von CodePipeline for Artifacts verwendet. (Dies unterscheidet sich von dem Bucket, der für eine S3-Quellaktion verwendet wird.) Wenn sich der S3-Artefakt-Bucket in einem anderen Konto befindet als das Konto für Ihre Pipeline, stellen Sie sicher, dass der S3-Artefakt-Bucket denjenigen gehört AWS-Konten , die sicher und zuverlässig sind.

**Anmerkung**  
Dieses Tutorial bezieht sich auf die ECRBuild AndPublish Build-Aktion für eine CodePipeline Pipeline mit einem GitHub Quell-Repository und eine Amazon ECS-Standardaktion für die Bereitstellung in einem Amazon ECS-Cluster. Ein Tutorial, das eine Pipeline mit einem ECR-Image-Repository als Quelle für eine Bereitstellungsaktion von Amazon ECS in CodeDeploy Blau/Grün verwendet CodePipeline, finden Sie unter. [Tutorial: Eine Pipeline mit einer Amazon ECR-Quelle und ECS-to-CodeDeploy Bereitstellung erstellen](tutorials-ecs-ecr-codedeploy.md)

**Wichtig**  
Diese Aktion verwendet CodePipeline Managed CodeBuild Compute, um Befehle in einer Build-Umgebung auszuführen. Für die Ausführung der Befehlsaktion fallen separate Gebühren in an AWS CodeBuild.

## Voraussetzungen
<a name="tutorials-ecr-build-publish-prereqs"></a>

Es müssen bestimmte Ressourcen zur Verfügung stehen, damit Sie mithilfe dieses Tutorials eine CD-Pipeline erstellen können. Zum Einstieg benötigen Sie Folgendes:

**Anmerkung**  
All diese Ressourcen sollten in derselben AWS Region geschaffen werden.
+ Ein Quellcodeverwaltungs-Repository (das in diesem Tutorial verwendet wird GitHub), in dem Sie Folgendes für dieses Tutorial hinzufügen werden:
  + In Schritt 1 fügen Sie Ihrem Quell-Repository eine Beispiel-Dockerfile als Eingabeartefakt für die ECRBuild AndPublish Build-Aktion in hinzu. CodePipeline
  + In Schritt 2 fügen Sie Ihrem Quell-Repository eine Beispieldatei imagedefinitions.json als Voraussetzung für die Amazon ECS-Standardbereitstellungsaktion in hinzu. CodePipeline
+ Ein Amazon ECR-Image-Repository, das ein Image enthält, das Sie aus Ihrem Dockerfile erstellt haben. Weitere Informationen finden Sie unter [Creating a Repository](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) and [Push an Image](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html) im *Amazon Elastic Container Registry User Guide*.
+ Ein Amazon ECS-Cluster und -Service, die in derselben Region wie das Image-Repository erstellt wurden. Weitere Informationen finden Sie unter [Creating a Cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create_cluster.html) and [Creating a Service](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-service.html) im *Amazon Elastic Container Service Developer Guide*.

Nachdem Sie diese Voraussetzungen erfüllt haben, können Sie mit dem Tutorial fortfahren und Ihre CD-Pipeline erstellen.

## Schritt 1: Fügen Sie Ihrem Quell-Repository ein Dockerfile hinzu
<a name="tutorials-ecr-build-publish-file"></a>

In diesem Tutorial wird die ECRBuild AndPublish Aktion verwendet, um Ihr Docker-Image zu erstellen und das Image an Amazon ECR zu übertragen. Die verwaltete Rechenaktion, die CodePipeline verwendet wird CodeBuild , um die Befehle für die ECR-Anmeldung und den Image-Push auszuführen. Sie müssen Ihrem Quellcode-Repository keine `buildspec.yml` Datei hinzufügen, um zu sagen, CodeBuild wie das geht. Für dieses Beispiel stellen Sie das Dockerfile nur wie folgt in Ihrem Repository bereit.

Fügen Sie diesen Beispieltext ein, um Ihre `Dockerfile` Datei zu erstellen. Dieses Dockerfile-Beispiel entspricht dem Beispiel, das in den ECR-Image-Anweisungen in den Voraussetzungen verwendet wurde.

```
FROM public.ecr.aws/amazonlinux/amazonlinux:latest

# Install dependencies
RUN yum update -y && \
 yum install -y httpd

# Install apache and write hello world message
RUN echo 'Hello World!' > /var/www/html/index.html

# Configure apache
RUN echo 'mkdir -p /var/run/httpd' >> /root/run_apache.sh && \
 echo 'mkdir -p /var/lock/httpd' >> /root/run_apache.sh && \
 echo '/usr/sbin/httpd -D FOREGROUND' >> /root/run_apache.sh && \
 chmod 755 /root/run_apache.sh

EXPOSE 80

CMD /root/run_apache.sh
```

**So fügen Sie eine `Dockerfile`-Datei zu Ihrem Quell-Repository hinzu**

1. Öffnen Sie einen Texteditor und kopieren Sie dann die obige Docker-Datei und fügen Sie sie in eine neue Datei ein.

1. Führen Sie einen Commit und eine Push-Übertragung Ihrer `Dockerfile`-Datei zu Ihrem Quell-Repository durch.

   1. Fügen Sie die Datei hinzu.

      ```
      git add .
      ```

   1. Führen Sie einen Commit der Änderung durch.

      ```
      git commit -m "Adding Dockerfile."
      ```

   1. Führen Sie eine Push-Übertragung für das Commit durch.

      ```
      git push
      ```

   Stellen Sie sicher, dass Sie die Datei auf der Stammebene Ihres Repositorys platzieren.

   ```
   / Dockerfile
   ```

## Schritt 2: Fügen Sie Ihrem Quell-Repository eine imagedefinitions.json-Datei hinzu
<a name="w2aac13b9c15"></a>

In diesem Tutorial wird die Amazon ECS-Standard-Bereitstellungsaktion verwendet CodePipeline , um Ihren Container in Ihrem Amazon ECS-Cluster bereitzustellen. Für die Amazon ECS-Standardbereitstellungsaktion ist eine imagedefinitions.json-Datei erforderlich, die Ihren Image-Namen und URI enthält. Weitere Informationen zur Datei imagedefinitions.json finden Sie unter. [Datei imagedefinitions.json für Amazon ECS-Standardbereitstellungsaktionen](file-reference.md#pipelines-create-image-definitions)

Fügen Sie diesen Beispieltext ein, um Ihre Datei zu erstellen. `imagedefinitions.json` Verwenden Sie den Namen in Ihrem Dockerfile, z. B.`hello-world`, und verwenden Sie den URI aus Ihrem Amazon ECR-Repository, in dem das Bild gespeichert ist.

```
[
  {
    "name": "hello-world",
    "imageUri": "{{ACCOUNT-ID}}.dkr.ecr.us-east-1.amazonaws.com/actions/image-repo"
  }
]
```

**Um eine `imagedefinitions.json` Datei zu Ihrem Quell-Repository hinzuzufügen**

1. Öffnen Sie einen Texteditor und kopieren Sie dann das obige Beispiel und fügen Sie es in eine neue Datei ein.

1. Führen Sie einen Commit und eine Push-Übertragung Ihrer `imagedefinitions.json`-Datei zu Ihrem Quell-Repository durch.

   1. Fügen Sie die Datei hinzu.

      ```
      git add .
      ```

   1. Führen Sie einen Commit der Änderung durch.

      ```
      git commit -m "Adding imagedefinitions.json."
      ```

   1. Führen Sie eine Push-Übertragung für das Commit durch.

      ```
      git push
      ```

   Stellen Sie sicher, dass Sie die Datei auf der Stammebene Ihres Repositorys platzieren.

   ```
   / imagedefinitions.json
   ```

## Schritt 3: Erstellen Sie Ihre Pipeline
<a name="tutorials-ecr-build-publish-pipeline"></a>

Verwenden Sie den CodePipeline Assistenten, um Ihre Pipeline-Stufen zu erstellen und Ihr Quell-Repository zu verbinden.

**So erstellen Sie Ihre Pipeline**

1. Öffnen Sie die CodePipeline Konsole unter [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

1. Wählen sie auf der Seite **Welcome (Willkommen)** die Option **Getting started (Erste Schritte)** aus, oder auf der Seite **Pipelines** die Option **Create pipeline (Pipeline erstellen)**.

1. Wählen Sie auf der Seite **Schritt 1: Erstellungsoption auswählen** unter **Erstellungsoptionen** die Option **Benutzerdefinierte Pipeline erstellen** aus. Wählen Sie **Weiter** aus.

1. Geben Sie in **Schritt 2: Pipeline-Einstellungen auswählen** im Feld **Pipeline-Name** den Wert ein**MyPipeline**.

1. CodePipeline bietet Pipelines vom Typ V1 und V2, die sich in Eigenschaften und Preis unterscheiden. Der Typ V2 ist der einzige Typ, den Sie in der Konsole auswählen können. Weitere Informationen finden Sie unter [Pipeline-Typen](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-types-planning.html?icmpid=docs_acp_help_panel). Informationen zur Preisgestaltung für finden Sie CodePipeline unter [Preisgestaltung](https://aws.amazon.com/codepipeline/pricing/).

1. Wählen Sie unter **Servicerolle** die Option **Neue Servicerolle** aus, um CodePipeline die Erstellung einer Servicerolle in IAM zu ermöglichen.

1. Belassen Sie die Einstellungen unter **Erweiterte Einstellungen** bei den Standardeinstellungen, und wählen Sie dann **Next (Weiter)** aus.

1. **Fügen Sie auf der Seite Schritt 3: Quellstufe** hinzufügen eine Quellstufe hinzu:

   1. Wählen Sie **unter Quellanbieter** die Option **GitHub (über GitHub App)** aus.

   1. Wählen Sie unter **Verbindung** eine bestehende Verbindung aus oder erstellen Sie eine neue. Informationen zum Erstellen oder Verwalten einer Verbindung für Ihre GitHub Quellaktion finden Sie unter[GitHub Verbindungen](connections-github.md).

   1. Wählen Sie im Feld **Repository name (Repositoryname)** den Namen Ihres GitHub -Repositorys aus.

   1. Wählen Sie **unter Standardzweig** den Branch aus, den Sie angeben möchten, wenn die Pipeline manuell oder mit einem Quellereignis gestartet wird, das kein Git-Tag ist. Wenn die Quelle der Änderung nicht der Auslöser ist oder wenn eine Pipeline-Ausführung manuell gestartet wurde, wird als Änderung der HEAD-Commit aus dem Standardbranch verwendet.

   Wählen Sie **Weiter** aus.

1. Wählen Sie auf der Seite **Schritt 4: Build-Phase hinzufügen** die Option **Andere Build-Anbieter** auswählen aus **ECRBuildAndPublish**.  
![Fügen Sie Ihrer Pipeline eine Amazon ECR-Build-Aktion hinzu.](http://docs.aws.amazon.com/de_de/codepipeline/latest/userguide/images/ecrbuild-wizard.png)

   1. Wählen Sie für den **Namen des ECR-Repositorys** Ihr Image-Repository aus.

   1. Wählen Sie **Weiter** aus.

1. Wählen Sie in **Schritt 5: Testphase hinzufügen** die Option **Testphase überspringen** aus und akzeptieren Sie dann die Warnmeldung, indem Sie erneut **Überspringen** wählen. 

   Wählen Sie **Weiter** aus.

1. Wählen Sie auf der Seite **Schritt 6: Bereitstellungsphase hinzufügen** die Option **Bereitstellungsphase überspringen** aus. Im folgenden Schritt fügen Sie die ECS-Aktion hinzu.

1. Überprüfen Sie auf der Seite **Schritt 7: Überprüfen** Ihre Pipeline-Konfiguration und wählen Sie **Pipeline erstellen** aus, um die Pipeline zu erstellen.

1. Bearbeiten Sie Ihre Pipeline, um die Amazon ECS-Bereitstellungsaktion zu Ihrer Pipeline hinzuzufügen:

   1. Wählen Sie rechts oben **Edit (Bearbeiten)** aus.

   1. Wählen Sie unten im Diagramm **\+ Add stage (\+ Stufe hinzufügen)** aus. Geben Sie unter **Stage name (Name der Phase)**, einen Namen ein, z. B. **Deploy**.

   1. Wählen Sie **\+ Add action group (Aktionsgruppe hinzufügen)**.

   1. Geben Sie unter **Action name (Aktionsname)** einen Namen ein. 

   1. Wählen Sie **unter Aktionsanbieter** Amazon ECS aus. Belassen Sie unter **Region** als Standardeinstellung die Pipeline-Region.

   1. Wählen Sie unter **Eingabeartefakte** das Eingabeartefakt aus der Quellstufe aus, z. B. `SourceArtifact` 

   1. Wählen Sie als **Clustername** den Amazon ECS-Cluster aus, in dem Ihr Service ausgeführt wird.

   1. Wählen Sie **unter Servicename** den Service aus, der aktualisiert werden soll.

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

   1. Wählen Sie in der Phase, die Sie bearbeiten, **Fertig**. Wählen Sie im AWS CodePipeline -Fenster **Save (Speichern)** und dann in der Warnmeldung **Save (Speichern)**.

   1. Um Ihre Änderungen zu übertragen und einen Pipeline-Build zu starten, wählen Sie **Release change (Änderung freigeben)** und dann **Release (Freigeben)**.

1. Sehen Sie sich nach der Ausführung der Pipeline die Struktur und den Status der Pipeline an.  
![Ein Konsolendiagramm, das einen erfolgreichen Pipeline-Lauf mit der Amazon ECR-Build-Aktion und der Amazon ECS-Bereitstellungsaktion zeigt, die zu Ihrer Pipeline hinzugefügt wurden.](http://docs.aws.amazon.com/de_de/codepipeline/latest/userguide/images/ecrbuild-ecsaction.png)

1. Nachdem die Pipeline erfolgreich ausgeführt wurde, wählen Sie **Details anzeigen**, um die Protokolle der Aktion und die Ausgabe der verwalteten Rechenaktion anzuzeigen.  
![Zeigen Sie Protokolle für die Amazon ECR-Build-Aktion in Ihrer Pipeline an.](http://docs.aws.amazon.com/de_de/codepipeline/latest/userguide/images/ecrbuild-logs.png)

1. Beheben Sie alle fehlgeschlagenen Aktionen. Beispielsweise kann die ECS-Bereitstellungsaktion fehlschlagen, wenn sich die Datei imagedefinitions.json nicht im Quell-Repository befindet. Im Folgenden finden Sie ein Beispiel für die Fehlermeldung, die angezeigt wird, wenn die Datei imagedefinitions.json fehlt.   
![Zeigen Sie Protokolle für die Amazon ECR-Build-Aktion in Ihrer Pipeline an.](http://docs.aws.amazon.com/de_de/codepipeline/latest/userguide/images/ecrbuild-ecsdebug.png)

## Schritt 4: Testen Ihrer Pipeline
<a name="tutorials-ecr-build-publish-test"></a>

Ihre Pipeline sollte über alles verfügen, was für die Ausführung einer end-to-end systemeigenen AWS kontinuierlichen Bereitstellung erforderlich ist. Testen Sie nun ihre Funktionalität, indem Sie eine Code-Änderung mithilfe von Push zu Ihrem Quell-Repository übertragen.

**So testen Sie Ihre Pipeline**

1. Nehmen Sie eine Code-Änderung an Ihrem konfigurierten Quell-Repository vor und führen Sie den Commit-Vorgang und die Push-Übertragung der Änderung durch.

1. Öffnen Sie die CodePipeline Konsole unter [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

1. Wählen Sie Ihre Pipeline in der Liste aus.

1. Sehen Sie sich an, wie die Pipeline ihre Phasen durchläuft. Ihre Pipeline sollte abgeschlossen sein und Ihre Aktion überträgt das Docker-Image an ECR, das anhand Ihrer Codeänderung erstellt wurde.