Referenz zu Abbild-Definitionsdateien - AWS CodePipeline

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.

Referenz zu Abbild-Definitionsdateien

Dieser Abschnitt dient nur als Referenz. Informationen zum Erstellen einer Pipeline mit Quell- oder Bereitstellungsaktionen für Container finden Sie unter Eine Pipeline, Phasen und Aktionen erstellen.

AWS CodePipeline Jobworker für Container-Aktionen, wie z. B. eine ECR Amazon-Quellaktion oder ECS Amazon-Bereitstellungsaktionen, verwenden Definitionsdateien, um das Bild URI und den Container-Namen der Aufgabendefinition zuzuordnen. Jede Definitionsdatei ist eine Datei im JSON -Format, die vom Aktionsanbieter wie folgt verwendet wird:

imagedefinitions.json-Datei für Amazon-Standardbereitstellungsaktionen ECS

Ein Dokument mit Bilddefinitionen ist eine JSON Datei, die Ihren ECS Amazon-Container-Namen sowie das Bild und das Tag beschreibt. Wenn Sie containerbasierte Anwendungen einsetzen, müssen Sie eine Image-Definitionsdatei generieren, um dem CodePipeline Job-Worker den ECS Amazon-Container und die Image-ID zur Verfügung zu stellen, die er aus dem Image-Repository, z. B. Amazon, abrufen kann. ECR

Anmerkung

Der Standarddateiname für die Datei ist imagedefinitions.json. Wenn Sie einen anderen Dateinamen verwenden, müssen Sie diesen bereitstellen, wenn Sie die Pipeline-Bereitstellungsphase erstellen.

Erstellen Sie die Datei imagedefinitions.json, wobei Sie Folgendes berücksichtigen:

  • Die Datei muss die Kodierung UTF -8 verwenden.

  • Die maximale Dateigröße für die Abbild-Definitionsdatei ist 100 KB.

  • Sie müssen die Datei als Quell- oder Build-Artefakt erstellen, damit sie ein Eingabeartefakt für die Bereitstellungsaktion ist. Mit anderen Worten, stellen Sie sicher, dass die Datei entweder an Ihren Quellspeicherort, z. B. in Ihr CodeCommit Repository, hochgeladen oder als integriertes Ausgabeartefakt generiert wird.

Die imagedefinitions.json Datei enthält den Namen und das Bild URI des Containers. Dieser muss mit dem folgenden Satz von Schlüssel-Wert-Paaren konstruiert werden.

Schlüssel Wert
Name container_name
imageUri imageUri
Anmerkung

Das Namensfeld wird für den Namen des Container-Images verwendet, was den Namen für das Docker-Image bedeutet.

Hier ist die JSON Struktur, in der der Name des Containers sample-appecs-repo, URI das Bild und das latest Tag lauten:

[ { "name": "sample-app", "imageUri": "11111EXAMPLE.dkr.ecr.us-west-2.amazonaws.com/ecs-repo:latest" } ]

Sie können die Datei auch so konstruieren, dass mehrere Container-Abbild-Paare aufgelistet werden.

JSONStruktur:

[ { "name": "simple-app", "imageUri": "httpd:2.4" }, { "name": "simple-app-1", "imageUri": "mysql" }, { "name": "simple-app-2", "imageUri": "java1.8" } ]

Führen Sie vor Erstellung Ihrer Pipeline die die folgenden Schritte aus, um die imagedefinitions.json einzurichten.

  1. Planen Sie während der Planung der Bereitstellung Container-basierter Anwendungen für Ihre Pipeline die Quell- und die Build-Phase, sofern vorhanden.

  2. Wählen Sie eine der folgenden Optionen aus:

    1. Wenn Ihre Pipeline so erstellt wurde, dass sie die Erstellungsphase überspringt, müssen Sie die JSON Datei manuell erstellen und in Ihr Quell-Repository hochladen, damit die Quellaktion das Artefakt bereitstellen kann. Erstellen Sie die Datei mit einem Texteditor und geben Sie der Datei einen Namen oder verwenden Sie den Standarddateinamen imagedefinitions.json. Verschieben Sie die Abbild-Definitionsdatei in Ihr Quell-Repository.

      Anmerkung

      Wenn es sich bei Ihrem Quell-Repository um einen Amazon S3 S3-Bucket handelt, denken Sie daran, die JSON Datei zu komprimieren.

    2. Wenn Ihre Pipeline eine Build-Phase enthält, fügen Sie Ihrer Build Spec-Datei einen Befehl hinzu, der die Abbild-Definitionsdatei während der Build-Phase in Ihr Quell-Repository ausgibt. Im folgenden Beispiel wird der Befehl printf verwendet, um eine imagedefinitions.json-Datei zu erstellen. Listen Sie diesen Befehl im Abschnitt post_build der Datei buildspec.yml auf:

      printf '[{"name":"container_name","imageUri":"image_URI"}]' > imagedefinitions.json

      Sie müssen die Abbild-Definitionsdatei als Ausgabeartefakt in die Datei buildspec.yml einfügen.

  3. Wenn Sie Ihre Pipeline in der Konsole erstellen, geben Sie auf der Seite Deploy (Bereitstellen) des Assistenten Create Pipeline (Pipeline erstellen) in Image Filename (Name der Abbilddatei) den Namen der Abbild-Definitionsdatei ein.

Ein step-by-step Tutorial zum Erstellen einer Pipeline, die Amazon ECS als Bereitstellungsanbieter verwendet, finden Sie unter Tutorial: Continuous Deployment with CodePipeline.

imageDetail.json-Datei für Amazon ECS Blue/Green-Bereitstellungsaktionen

Ein imageDetail.json Dokument ist eine JSON Datei, die Ihr ECS Amazon-Bild beschreibtURI. Wenn Sie containerbasierte Anwendungen für eine blaue/grüne Bereitstellung bereitstellen, müssen Sie die imageDetail.json Datei generieren, um dem Amazon ECS und dem CodeDeploy Auftragsarbeiter die Image-ID zur Verfügung zu stellen, die sie aus dem Image-Repository abrufen können, z. B. Amazon. ECR

Anmerkung

Der Name der Datei muss imageDetail.json sein.

Eine Beschreibung der Aktion und ihrer Parameter finden Sie unter. Referenz für Amazon Elastic Container Service und CodeDeploy blaugrüne Bereitstellungsaktionen

Sie müssen die Datei imageDetail.json als Quell- oder Build-Artefakt erstellen, damit sie ein Eingabeartefakt für die Bereitstellungsaktion ist. Sie können eine dieser Methoden verwenden, um die imageDetail.json-Datei in der Pipeline bereitzustellen:

  • Fügen Sie die imageDetail.json Datei an Ihrem Quellspeicherort hinzu, sodass sie in der Pipeline als Eingabe für Ihre Amazon ECS Blue/Green-Bereitstellungsaktion bereitgestellt wird.

    Anmerkung

    Wenn es sich bei Ihrem Quell-Repository um einen Amazon S3 S3-Bucket handelt, denken Sie daran, die JSON Datei zu komprimieren.

  • ECRAmazon-Quellaktionen generieren automatisch eine imageDetail.json Datei als Eingabeartefakt für die nächste Aktion.

    Anmerkung

    Da die ECR Amazon-Quellaktion diese Datei erstellt, müssen Pipelines mit einer ECR Amazon-Quellaktion keine imageDetail.json Datei manuell bereitstellen.

    Ein Tutorial zum Erstellen einer Pipeline, die eine ECR Amazon-Quellphase enthält, finden Sie unterTutorial: Eine Pipeline mit einer ECR Amazon-Quelle und ECS -to-Deployment erstellen CodeDeploy .

Diagramm, das die im imageDetail Artifact-Bucket enthaltene JSON-Datei zeigt

Die imageDetail.json Datei stellt das Bild bereit. URI Er muss mit dem Schlüssel-Wert-Paar konstruiert werden.

Schlüssel Wert
Bild URI image_URI
imageDetail.json

Hier ist die JSON Struktur, in der sich das Bild URI befindetACCOUNTID.dkr.ecr.us-west-2.amazonaws.com/dk-image-repo@sha256:example3:

{ "ImageURI": "ACCOUNTID.dkr.ecr.us-west-2.amazonaws.com/dk-image-repo@sha256:example3" }
imageDetail.json (generated by ECR)

Jedes Mal, wenn eine Änderung in das Image-Repository übertragen wird, wird von der ECR Amazon-Quellaktion automatisch eine imageDetail.json Datei generiert. Die von Amazon imageDetail.json generierten ECR Quellaktionen werden als Ausgabeartefakt von der Quellaktion zur nächsten Aktion in der Pipeline bereitgestellt.

Hier ist die JSON Struktur, in der der Repository-Name dk-image-repoecs-repo, URI das Bild und das Image-Tag lautenlatest:

{ "ImageSizeInBytes": "44728918", "ImageDigest": "sha256:EXAMPLE11223344556677889900bfea42ea2d3b8a1ee8329ba7e68694950afd3", "Version": "1.0", "ImagePushedAt": "Mon Jan 21 20:04:00 UTC 2019", "RegistryId": "EXAMPLE12233", "RepositoryName": "dk-image-repo", "ImageURI": "ACCOUNTID.dkr.ecr.us-west-2.amazonaws.com/dk-image-repo@sha256:example3", "ImageTags": [ "latest" ] }

Die imageDetail.json Datei ordnet das Bild URI und den Container-Namen wie folgt der ECS Amazon-Aufgabendefinition zu:

  • ImageSizeInBytes: Die Größe des Abbilds im Repository in Bytes.

  • ImageDigest: Der sha256-Digest des Abbildmanifests.

  • Version: Die Abbildversion.

  • ImagePushedAt: Datum und Uhrzeit der Push-Übertragung des neuesten Abbilds an das Repository.

  • RegistryId: Die AWS Konto-ID, die der Registrierung zugeordnet ist, die das Repository enthält.

  • RepositoryName: Der Name des ECR Amazon-Repositorys, in das das Bild übertragen wurde.

  • ImageURI: Der URI für das Bild.

  • ImageTags: Das Tag für das Abbild.

Führen Sie vor Erstellung Ihrer Pipeline die die folgenden Schritte aus, um die imageDetail.json einzurichten.

  1. Planen Sie während der Planung der Container-basierten Blau/Grün-Anwendungsbereitstellung für Ihre Pipeline die Quell- und Build-Phase, wenn zutreffend.

  2. Wählen Sie eine der folgenden Optionen aus:

    1. Wenn Ihre Pipeline die Erstellungsphase übersprungen hat, müssen Sie die JSON Datei manuell erstellen und in Ihr Quell-Repository hochladen, z. B. CodeCommit damit die Quellaktion das Artefakt bereitstellen kann. Erstellen Sie die Datei mit einem Texteditor und geben Sie der Datei einen Namen oder verwenden Sie den Standarddateinamen imageDetail.json. Übertragen Sie die imageDetail.json-Datei per Push zu Ihrem Quell-Repository.

    2. Wenn Ihre Pipeline eine Build-Phase enthält, führen Sie die folgenden Aktionen aus:

      1. Fügen Sie Ihrer Build-Spezifikationsdatei einen Befehl hinzu, der die Abbild-Definitionsdatei während der Build-Phase in Ihr Quell-Repository ausgibt. Im folgenden Beispiel wird der Befehl printf verwendet, um eine imageDetail.json-Datei zu erstellen. Listen Sie diesen Befehl im Abschnitt post_build der Datei buildspec.yml auf:

        printf '{"ImageURI":"image_URI"}' > imageDetail.json

        Sie müssen die Datei imageDetail.json als Ausgabeartefakt in die Datei buildspec.yml einfügen.

      2. Fügen Sie die Datei imageDetail.json als Artefakt zur Datei buildspec.yml hinzu.

        artifacts: files: - imageDetail.json