Riferimento per il file di definizioni delle immagini - AWS CodePipeline

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Riferimento per il file di definizioni delle immagini

Questa sezione è solo per riferimento. Per ulteriori informazioni su come creare una pipeline con l'origine o distribuire operazioni di distribuzione per container, consulta Crea una pipeline, fasi e azioni.

AWS CodePipeline i job worker per le azioni relative ai container, come Amazon ECR source action o Amazon ECS deploy actions, utilizzano i file delle definizioni per mappare l'immagine URI e il nome del contenitore alla definizione dell'attività. Ogni file di definizioni è un file in JSON formato -utilizzato dal provider di azioni come segue:

file imagedefinitions.json per le azioni di distribuzione standard di Amazon ECS

Un documento di definizione delle immagini è un JSON file che descrive il nome del ECS contenitore Amazon, l'immagine e il tag. Se stai distribuendo applicazioni basate su container, devi generare un file di definizioni delle immagini per fornire al CodePipeline job worker il ECS contenitore Amazon e l'identificazione dell'immagine da recuperare dal repository di immagini, come Amazon. ECR

Nota

Il nome file predefinito è imagedefinitions.json. Se scegli di utilizzare un nome di file diverso, è necessario fornirlo quando la fase di distribuzione della pipeline.

Crea il file imagedefinitions.json con le seguenti considerazioni:

  • Il file deve utilizzare la codifica -8. UTF

  • Il limite massimo delle dimensioni del file di definizioni delle immagini è di 100 KB.

  • È necessario creare il file come un artefatto di origine o di compilazione in modo che sia un artefatto di input per l'operazione di distribuzione. In altre parole, assicuratevi che il file sia caricato nella posizione di origine, ad esempio nel CodeCommit repository, o generato come elemento di output integrato.

Il imagedefinitions.json file fornisce il nome e l'immagine del contenitore. URI Deve essere costruito con il seguente set di coppie chiave-valore.

Chiave Valore
nome container_name
imageUri imageUri
Nota

Il campo name viene utilizzato per il nome dell'immagine del contenitore, ovvero il nome dell'immagine Docker.

Ecco la JSON struttura, dove si trovano il nome del contenitore sample-appecs-repo, URI l'immagine e il latest tag:

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

È anche possibile costruire il file per elencare più coppie container-immagine.

JSONstruttura:

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

Prima di creare la pipeline, utilizza la procedura descritta di seguito per impostare il file imagedefinitions.json.

  1. Come parte della pianificazione della distribuzione dell'applicazione basata su container per la pipeline, pianifica la fase di origine e la fase di compilazione, se applicabili.

  2. Seleziona una delle seguenti opzioni:

    1. Se la pipeline è stata creata in modo da saltare la fase di compilazione, è necessario creare manualmente il JSON file e caricarlo nel repository di origine in modo che l'azione sorgente possa fornire l'artefatto. Crea il file utilizzando un editor di testo e assegna un nome al file o utilizza il nome file predefinito imagedefinitions.json. Esegui il push del file di definizioni delle immagini nel repository di origine.

      Nota

      Se il tuo repository di origine è un bucket Amazon S3, ricordati di comprimere il file. JSON

    2. Se la pipeline dispone di una fase di compilazione, aggiungi un comando al file delle specifiche di compilazione che genera il file di definizioni delle immagini nel repository di origine durante la fase di compilazione. L'esempio seguente usa il comando printf per creare un file imagedefinitions.json. Elencare il comando nella sezione post_build del file buildspec.yml:

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

      Il file di definizioni delle immagini deve essere incluso come un artefatto di output nel file buildspec.yml.

  3. Quando si crea la pipeline nella console, nella pagina Deploy (Distribuzione) della procedura guidata Create Pipeline (Creazione pipeline) in Image Filename (Nome file immagini) immettere il nome del file di definizioni delle immagini.

Per un step-by-step tutorial sulla creazione di una pipeline che utilizza Amazon ECS come fornitore di distribuzione, consulta Tutorial: Continuous Deployment with CodePipeline.

imageDetailfile.json per le azioni di distribuzione di Amazon ECS blue/green

Un imageDetail.json documento è un JSON file che descrive la tua ECS immagine AmazonURI. Se stai distribuendo applicazioni basate su container per una distribuzione blu/verde, devi generare il file per fornire imageDetail.json ad Amazon ECS e a CodeDeploy Job Worker l'identificazione dell'immagine da recuperare dall'archivio di immagini, come Amazon. ECR

Nota

Il nome del file deve essere imageDetail.json.

Per una descrizione dell'azione e dei relativi parametri, consulta. Riferimento alle azioni di distribuzione di Amazon Elastic Container Service e CodeDeploy blue-green

È necessario creare il file imageDetail.json come un artefatto di origine o di compilazione in modo che sia un artefatto di input per l'operazione di distribuzione. Puoi utilizzare uno di questi metodi per fornire il file imageDetail.json nella pipeline:

  • Includi il imageDetail.json file nella posizione di origine in modo che venga fornito nella pipeline come input per la tua azione di distribuzione di Amazon ECS blu/green.

    Nota

    Se il tuo repository di origine è un bucket Amazon S3, ricordati di comprimere il file. JSON

  • Le azioni di ECR origine di Amazon generano automaticamente un imageDetail.json file come elemento di input per l'azione successiva.

    Nota

    Poiché l'azione ECR sorgente di Amazon crea questo file, le pipeline con un'azione di ECR origine Amazon non devono fornire manualmente un imageDetail.json file.

    Per un tutorial sulla creazione di una pipeline che includa una fase ECR sorgente Amazon, consultaTutorial: crea una pipeline con un ECR codice sorgente Amazon e la ECS relativa distribuzione CodeDeploy .

Diagramma che mostra il imageDetail file.json contenuto nel bucket Artifact

Il file fornisce l'immagine. imageDetail.json URI Deve essere costruito con la seguente coppia chiave-valore.

Chiave Valore
Immagine URI image_URI
imageDetail.json

Ecco la JSON struttura, dove si trova l'immagine URIACCOUNTID.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)

Un imageDetail.json file viene generato automaticamente dall'azione ECR sorgente di Amazon ogni volta che una modifica viene inserita nell'archivio di immagini. Le azioni di ECR origine imageDetail.json generate da Amazon vengono fornite come artefatto di output dall'azione di origine all'azione successiva nella pipeline.

Ecco la JSON struttura, dove si trovano il nome del repositorydk-image-repo, l'immagine e il URI tag ecs-repo dell'immagine: latest

{ "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" ] }

Il imageDetail.json file associa l'immagine URI e il nome del contenitore alla definizione dell'ECSattività di Amazon come segue:

  • ImageSizeInBytes: le dimensioni in byte dell'immagine nel repository.

  • ImageDigest: il file digest sha256 del manifest delle immagini.

  • Version: la versione dell'immagine.

  • ImagePushedAt: la data e l'ora in cui l'immagine più recente è stata inviata al repository.

  • RegistryId: l'ID AWS dell'account associato al registro che contiene il repository.

  • RepositoryName: il nome del ECR repository Amazon in cui è stata inserita l'immagine.

  • ImageURI: Il URI per l'immagine.

  • ImageTags: il tag utilizzato per l'immagine.

Prima di creare la pipeline, utilizza la procedura descritta di seguito per impostare il file imageDetail.json.

  1. Come parte della pianificazione della distribuzione blu/verde dell'applicazione basata su container per la pipeline, pianifica la fase di origine e la fase di compilazione, se applicabili.

  2. Seleziona una delle seguenti opzioni:

    1. Se la pipeline ha saltato la fase di creazione, è necessario creare manualmente il JSON file e caricarlo nel repository di origine, ad esempio in modo che l'azione sorgente possa fornire l'artefatto. CodeCommit Crea il file utilizzando un editor di testo e assegna un nome al file o utilizza il nome file predefinito imageDetail.json. Invia il file imageDetail.json al repository di origine.

    2. Se la pipeline ha una fase di compilazione, esegui questa procedura:

      1. Aggiungi un comando al file delle specifiche di compilazione che genera il file di definizioni delle immagini nel repository di origine durante la fase di compilazione. L'esempio seguente usa il comando printf per creare un file imageDetail.json. Elenca questo comando nella sezione post_build del file buildspec.yml:

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

        È necessario includere il file imageDetail.json come un artefatto di output nel filebuildspec.yml.

      2. Aggiungi il file imageDetail.json come file dell'artefatto nel file buildspec.yml.

        artifacts: files: - imageDetail.json