Référence pour les fichiers de définitions d'image - AWS CodePipeline

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Référence pour les fichiers de définitions d'image

Cette section est fournie à des fins de référence uniquement. Pour de plus amples informations sur la création d'un pipeline avec des actions source ou de déploiement pour les conteneurs, veuillez consulter Création d'un pipeline, d'étapes et d'actions.

AWS CodePipeline pour les actions de conteneur, telles qu'une action Amazon ECR source ou des actions de ECS déploiement Amazon, les travailleurs utilisent des fichiers de définitions pour associer l'image URI et le nom du conteneur à la définition de la tâche. Chaque fichier de définitions est un fichier JSON au format -formaté utilisé par le fournisseur d'actions comme suit :

fichier imagedefinitions.json pour les actions de déploiement standard d'Amazon ECS

Un document de définition d'image est un JSON fichier qui décrit le nom de votre ECS conteneur Amazon, ainsi que l'image et le tag. Si vous déployez des applications basées sur des conteneurs, vous devez générer un fichier de définitions d'images pour fournir au CodePipeline travailleur le ECS conteneur Amazon et l'identification de l'image à récupérer dans le référentiel d'images, tel qu'Amazon. ECR

Note

Le nom de fichier par défaut pour le fichier est imagedefinitions.json. Si vous choisissez d'utiliser un autre nom de fichier, vous devez l'indiquer lorsque vous créez la phase de déploiement du pipeline.

Créez le fichier imagedefinitions.json en respectant les considérations suivantes :

  • Le fichier doit utiliser le codage UTF -8.

  • La taille maximum du fichier de définitions d'image est de 100 Ko.

  • Vous devez créer le fichier en tant que source ou artefact de génération afin qu'il soit un artefact d'entrée pour l'action de déploiement. En d'autres termes, assurez-vous que le fichier est soit téléchargé vers votre emplacement source, tel que votre CodeCommit référentiel, soit généré en tant qu'artefact de sortie intégré.

Le imagedefinitions.json fichier fournit le nom et l'image du conteneurURI. Il doit être construit avec l'ensemble de paires clé-valeur suivant.

Clé Valeur
name container_name
imageUri imageUri
Note

Le champ de nom est utilisé pour le nom de l'image du conteneur, c'est-à-dire le nom de l'image Docker.

Voici la JSON structure, où se trouvent le nom du conteneurecs-repo, URI l'image et le tag latest : sample-app

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

Vous pouvez également construire le fichier de manière à répertorier plusieurs paires image-conteneur.

JSONstructure :

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

Avant de créer votre pipeline, suivez les étapes suivantes pour configurer le fichier imagedefinitions.json.

  1. Dans le cadre de la planification du déploiement d'application basé sur conteneur pour votre pipeline, planifiez l'étape source et l'étape de build, le cas échéant.

  2. Sélectionnez l'une des méthodes suivantes :

    1. Si votre pipeline est créé de telle sorte qu'il ignore l'étape de construction, vous devez créer le JSON fichier manuellement et le télécharger dans votre référentiel source afin que l'action source puisse fournir l'artefact. Créez le fichier à l'aide de l'éditeur de texte et nommez-le ou utilisez le nom de fichier imagedefinitions.json par défaut. Disposez le fichier de définitions d'image dans votre référentiel source.

      Note

      Si votre référentiel source est un compartiment Amazon S3, n'oubliez pas de compresser le JSON fichier.

    2. Si votre pipeline comporte une étape de build, ajoutez une commande à votre fichier spécifique de build qui émet le fichier de définitions d'image dans votre référentiel source pendant la phase de build. L'exemple suivant utilise la commande printf pour créer un fichier imagedefinitions.json. Répertoriez cette commande dans la section post_build du fichier buildspec.yml :

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

      Vous devez inclure le fichier de définitions d'image en tant qu'artefact de sortie dans le fichier buildspec.yml.

  3. Lors de la création de votre pipeline dans la console, vous devez saisir le nom du fichier de définitions d'image dans le champ Nom du fichier image de la page Déploiement de l'assistant Créer un pipeline.

Pour un step-by-step didacticiel sur la création d'un pipeline utilisant Amazon ECS comme fournisseur de déploiement, consultez Tutoriel : Continuous Deployment with CodePipeline.

imageDetailfichier .json pour les actions de déploiement ECS bleu/vert d'Amazon

Un imageDetail.json document est un JSON fichier qui décrit votre ECS image AmazonURI. Si vous déployez des applications basées sur des conteneurs pour un déploiement bleu/vert, vous devez générer le imageDetail.json fichier pour fournir à Amazon ECS et CodeDeploy au travailleur l'identification de l'image à récupérer dans le référentiel d'images, tel qu'Amazon. ECR

Note

Le nom du fichier doit être imageDetail.json.

Pour une description de l'action et de ses paramètres, consultezAmazon Elastic Container Service et référence CodeDeploy sur les actions de déploiement bleu-vert.

Vous devez créer le fichier imageDetail.json en tant que source ou artefact de génération afin qu'il soit un artefact d'entrée pour l'action de déploiement. Vous pouvez utiliser l'une de ces méthodes pour fournir le fichier imageDetail.json dans le pipeline :

  • Incluez le imageDetail.json fichier dans votre emplacement source afin qu'il soit fourni dans le pipeline en tant qu'entrée de votre action de déploiement ECS bleu/vert Amazon.

    Note

    Si votre référentiel source est un compartiment Amazon S3, n'oubliez pas de compresser le JSON fichier.

  • Les actions Amazon ECR source génèrent automatiquement un imageDetail.json fichier en tant qu'artefact d'entrée pour l'action suivante.

    Note

    Étant donné que l'action Amazon ECR source crée ce fichier, les pipelines dotés d'une action Amazon ECR source n'ont pas besoin de fournir un imageDetail.json fichier manuellement.

    Pour un didacticiel sur la création d'un pipeline incluant un stage ECR source Amazon, consultezTutoriel : Création d'un pipeline avec une ECR source Amazon et déploiement en ECS vue d'un déploiement CodeDeploy .

Schéma illustrant le fichier imageDetail .json contenu dans le bucket d'artefacts

Le imageDetail.json fichier fournit l'imageURI. Il doit être construit avec la paire clé-valeur suivante.

Clé Valeur
Image URI image_URI
imageDetail.json

Voici la JSON structure, où se trouve l'image URI ACCOUNTID.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 fichier est généré automatiquement par l'action Amazon ECR source chaque fois qu'une modification est envoyée au référentiel d'images. Les actions ECR source imageDetail.json générées par Amazon sont fournies sous forme d'artefact de sortie entre l'action source et l'action suivante du pipeline.

Voici la JSON structure, où se trouvent le nom du dépôt dk-image-repoecs-repo, URI l'image et la balise d'image 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" ] }

Le imageDetail.json fichier associe l'image URI et le nom du conteneur à la définition de ECS tâche Amazon comme suit :

  • ImageSizeInBytes : taille, en octets, de l'image dans le référentiel.

  • ImageDigest : hachage sha256 du manifeste de l'image.

  • Version : version de l'image.

  • ImagePushedAt : date et heure de la transmission de la dernière image dans le référentiel.

  • RegistryId: ID de AWS compte associé au registre qui contient le référentiel.

  • RepositoryName: nom du ECR référentiel Amazon dans lequel l'image a été transférée.

  • ImageURI: Le URI pour l'image.

  • ImageTags : balise utilisée pour l'image.

Avant de créer votre pipeline, suivez les étapes suivantes pour configurer le fichier imageDetail.json.

  1. Dans le cadre de la planification du déploiement bleu/vert d'application basé sur conteneur pour votre pipeline, planifiez l'étape source et l'étape de génération, le cas échéant.

  2. Sélectionnez l'une des méthodes suivantes :

    1. Si votre pipeline a ignoré l'étape de génération, vous devez créer le JSON fichier manuellement et le télécharger dans votre référentiel source, par exemple CodeCommit, afin que l'action source puisse fournir l'artefact. Créez le fichier à l'aide de l'éditeur de texte et nommez-le ou utilisez le nom de fichier imageDetail.json par défaut. Procédez à la transmission du fichier imageDetail.json dans votre référentiel source.

    2. Si votre pipeline comporte une étape de génération, procédez comme suit :

      1. Ajoutez une commande à votre fichier de spécification de génération qui émet le fichier de définitions d'image dans votre référentiel source pendant la phase de génération. L'exemple suivant utilise la commande printf pour créer un fichier imageDetail.json. Répertoriez cette commande dans la section post_build du fichier buildspec.yml :

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

        Vous devez inclure le fichier imageDetail.json en tant qu'artefact de sortie dans le fichier buildspec.yml.

      2. Ajoutez le fichier imageDetail.json en tant qu'artefact dans le fichier buildspec.yml.

        artifacts: files: - imageDetail.json