

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 Ihres Quellcodes ausführt und an Amazon ECR überträgt. In diesem Tutorial erfahren Sie auch, wie Sie eine Amazon ECS-Bereitstellungsaktion hinzufügen, mit der Ihr gepushtes Image bereitgestellt wird.

**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 als dem Konto für Ihre Pipeline befindet, stellen Sie sicher, dass der S3-Artefakt-Bucket dem Konto gehört AWS-Konten , das sicher und zuverlässig ist.

**Anmerkung**  
Dieses Tutorial behandelt die ECRBuildAndPublish Build-Aktion für eine CodePipeline Pipeline mit einem GitHub Quell-Repository und einer 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 Amazon ECS-Aktion zur CodeDeploy blue/green Bereitstellung verwendet CodePipeline, finden Sie unter[Tutorial: Erstellen Sie eine Pipeline mit einer Amazon ECR-Quelle und Bereitstellung ECS-to-CodeDeploy](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**  
Alle diese Ressourcen sollten in derselben AWS Region erstellt werden.
+ Ein Quellcodeverwaltungs-Repository (dieses Tutorial verwendet GitHub), dem Sie für dieses Tutorial Folgendes hinzufügen werden:
  + In Schritt 1 fügen Sie Ihrem Quell-Repository ein Beispiel-Dockerfile als Eingabeartefakt für die ECRBuildAndPublish Build-Aktion 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 [ Erstellen eines Repositorys ](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) und [ Übertragen eines Images ](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html) im * Amazon Elastic Container Registry Benutzerhandbuch. *
+ 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) und [ 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 ECRBuildAndPublish Aktion verwendet, um Ihr Docker-Image zu erstellen und das Image an Amazon ECR zu übertragen. Die verwaltete Rechenaktion wird CodePipeline verwendet 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 erfahren, CodeBuild wie das geht. Für dieses Beispiel stellen Sie das Dockerfile in Ihrem Repository nur wie folgt 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 wird.

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

**Um eine hinzuzufügen `Dockerfile` Datei zu deinem Quell-Repository**

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üge eine imagedefinitions.json-Datei zu deinem Quell-Repository hinzu
<a name="w2aac13b9c15"></a>

In diesem Tutorial wird die Amazon ECS-Standardbereitstellungsaktion 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 imagedefinitions.json-Datei finden Sie unter. [imagedefinitions.json-Datei 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 die 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 hinzuzufügen `imagedefinitions.json` Datei in dein Quell-Repository**

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: Deine Pipeline erstellen
<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 auf ** Schritt 2: Wählen Sie die Pipeline-Einstellungen aus ** und geben Sie im Feld ** Pipeline-Name ** den Wert ein**MyPipeline**.

1. CodePipeline bietet Pipelines vom Typ V1 und V2, die sich in ihren Eigenschaften und ihrem 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 Standard-Branch ** 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 Standard-Branch verwendet.

   Wählen Sie **Weiter** aus.

1. Wählen Sie auf der ** Seite ** Schritt 4: Build-Phase hinzufügen die Option ** Andere Build-Anbieter aus**, und wählen Sie dann ** ECRBuildAndPublish**.  
![Fügen Sie Ihrer Pipeline eine Amazon ECR-Build-Aktion hinzu.](https://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 ** Create pipeline 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 ** Action Provider ** die Option Amazon ECS aus. Belassen Sie unter **Region** als Standardeinstellung die Pipeline-Region.

   1. Wählen Sie unter ** Eingabeartefakte ** das Eingabeartefakt aus der Quellphase 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 für den ** Servicenamen 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. Nachdem die Pipeline ausgeführt wurde, sehen Sie sich die Struktur und den Status der Pipeline an.  
![Ein Konsolendiagramm, das eine erfolgreiche Pipeline-Ausführung zeigt, wobei die Amazon ECR-Build-Aktion und die Amazon ECS-Bereitstellungsaktion zu Ihrer Pipeline hinzugefügt wurden.](https://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.  
![Sehen Sie sich die Protokolle für die Amazon ECR-Build-Aktion in Ihrer Pipeline an.](https://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. Das Folgende ist ein Beispiel für die Fehlermeldung, die angezeigt wird, wenn die Datei imagedefinitions.json fehlt.   
![Sehen Sie sich die Protokolle für die Amazon ECR-Build-Aktion in Ihrer Pipeline an.](https://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 alles enthalten, was Sie für den Betrieb einer durchgängigen nativen AWS kontinuierlichen Bereitstellung benötigen. 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 auf ECR, das aufgrund Ihrer Codeänderung erstellt wurde.