Referência de arquivo de definições de imagem - AWS CodePipeline

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Referência de arquivo de definições de imagem

Esta seção é apenas uma referência. Para obter informações sobre a criação de um pipeline com origem ou implantar ações para contêineres, consulte Crie um pipeline em CodePipeline.

AWS CodePipeline trabalhadores que trabalham para ações de contêiner, como uma ação de origem do Amazon ECR ou ações de implantação do Amazon ECS, usam arquivos de definições para mapear o URI da imagem e o nome do contêiner para a definição da tarefa. Cada arquivo de definições é um arquivo em formato JSON usado pelo provedor de ação da seguinte forma:

  • As implantações padrão do Amazon ECS requerem um arquivo imagedefinitions.json como entrada para a ação de implantação.

  • As implantações azul/verde do Amazon ECS requerem um arquivo imageDetail.json como entrada para a ação de implantação.

    • Ações de origem do Amazon ECR geram um arquivo imageDetail.json, que é fornecido como uma saída da ação de origem.

Arquivo imagedefinitions.json para ações de implantação padrão do Amazon ECS

Um documento de definições de imagem é um arquivo JSON que descreve o nome de contêiner, a imagem e a tag do Amazon ECS. Se você estiver implantando aplicativos baseados em contêineres, deverá gerar um arquivo de definições de imagem para fornecer ao funcionário o CodePipeline contêiner do Amazon ECS e a identificação da imagem para recuperar do repositório de imagens, como o Amazon ECR.

nota

O nome do arquivo padrão para o arquivo é imagedefinitions.json. Se você optar por usar um nome de arquivo diferente, você deve fornecê-lo ao criar o estágio de implantação do pipeline.

Crie o arquivo imagedefinitions.json considerando o seguinte:

  • O arquivo deve usar a codificação UTF-8.

  • O limite máximo de tamanho de um arquivo de definições de imagem é 100 KB.

  • Você deve criar o arquivo como origem ou artefato de compilação para que ele seja um artefato de entrada para a ação de implantação. Em outras palavras, certifique-se de que o arquivo seja carregado no local de origem, como seu CodeCommit repositório, ou gerado como um artefato de saída criado.

O arquivo imagedefinitions.json fornece o nome do contêiner e o URI da imagem. Ele deve ser construído com o seguinte conjunto de pares de chave/valor.

Chave Valor
name container_name
imageUri imageUri

Aqui está a estrutura JSON, na qual o nome do contêiner é sample-app. O URI da imagem é ecs-repo e a tag é latest:

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

Você também pode construir o arquivo para listar vários pares de contêiner-imagem.

Estrutura do JSON:

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

Antes de criar o pipeline, use as etapas a seguir para configurar o arquivo imagedefinitions.json.

  1. Como parte do planejamento de implantação de aplicativos baseados em contêiner para o pipeline, planejar o estágio de origem e o estágio de compilação, se aplicável.

  2. Escolha uma das seguintes opções:

    1. Se o pipeline foi projetado para ignorar o estágio de compilação, será necessário criar o arquivo JSON manualmente e submetê-lo a upload para o repositório de origem a fim de que a ação de origem possa fornecer o artefato. Crie o arquivo usando um editor de texto, atribua um nome ao arquivo ou use o nome de arquivo padrão imagedefinitions.json. Envie o arquivo de definições de imagem ao repositório de origem.

      nota

      Se o repositório de origem for um bucket do Amazon S3, lembre-se de compactar o arquivo JSON.

    2. Se o pipeline tiver um estágio de compilação, adicione um comando ao arquivo de especificações de compilação que gere o arquivo de definições de imagem em seu repositório de origem durante a fase de compilação. O exemplo a seguir usa o comando printf para criar um arquivo imagedefinitions.json. Liste esse comando na seção post_build do arquivo buildspec.yml:

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

      Você deve incluir o arquivo de definições de imagem como artefato de saída no arquivo buildspec.yml.

  3. Ao criar o pipeline no console, na página Deploy (Implantar) do assistente Create Pipeline (Criar pipeline), em Image Filename (Nome da imagem), insira o nome de arquivo de definições da imagem.

Para ver um step-by-step tutorial sobre a criação de um pipeline que usa o Amazon ECS como provedor de implantação, consulte Tutorial: Implantação contínua com CodePipeline.

Arquivo imageDetail.json para ações de implantação azul/verde do Amazon ECS

Um documento imageDetail.json é um arquivo JSON que descreve o URI da imagem do Amazon ECS. Se você estiver implantando aplicativos baseados em contêineres para uma implantação azul/verde, deverá gerar o arquivo imageDetail.json para fornecer ao Amazon ECS e ao funcionário a identificação da imagem a CodeDeploy ser recuperada do repositório de imagens, como o Amazon ECR.

nota

O nome do arquivo deve ser imageDetail.json.

Para obter uma descrição da ação e respectivos parâmetros, consulte Amazon Elastic Container Service e CodeDeploy azul esverdeado.

Você deve criar o arquivo imageDetail.json como origem ou artefato de compilação para que ele seja um artefato de entrada para a ação de implantação. Você pode usar um destes métodos para fornecer o arquivo imageDetail.json no pipeline:

  • Inclua o arquivo imageDetail.json no local de origem para que seja fornecido no pipeline como entrada para a ação de implantação azul/verde do Amazon ECS.

    nota

    Se o repositório de origem for um bucket do Amazon S3, lembre-se de compactar o arquivo JSON.

  • Ações de origem do Amazon ECR geram automaticamente um arquivo imageDetail.json como artefato de entrada para a próxima ação.

    nota

    Como a ação de origem do Amazon ECR cria esse arquivo, os pipelines com uma ação de origem do Amazon ECR não precisam fornecer um arquivo imageDetail.json manualmente.

    Para obter um tutorial sobre a criação de um pipeline que inclua um estágio de origem do Amazon ECR, consulte Tutorial: Crie um pipeline com uma fonte Amazon ECR e uma implantação de ECS para- CodeDeploy .

O arquivo imageDetail.json fornece o URI da imagem. Ele deve ser construído com o seguinte par de chave/valor.

Chave Valor
ImageURI image_URI
imageDetail.json

Esta é a estrutura JSON, em que o URI da imagem é 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)

Um arquivo imageDetail.json é gerado automaticamente pela ação de origem do Amazon ECR cada vez que uma alteração é enviada por push ao repositório de imagens. O imageDetail.json gerado por ações de origem do Amazon ECR é fornecido como um artefato de saída da ação de origem para a próxima ação no pipeline.

Esta é a estrutura JSON, em que o nome do repositório é dk-image-repo, o URI da imagem é ecs-repo, e a tag de imagem é 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" ] }

O arquivo imageDetail.json mapeia o URI da imagem e nome do contêiner para a definição de tarefa do Amazon ECS da seguinte maneira:

  • ImageSizeInBytes: O tamanho, em bytes, da imagem no repositório.

  • ImageDigest: A compilação sha256 do manifesto da imagem.

  • Version: A versão da imagem.

  • ImagePushedAt: A data e a hora em que a última imagem foi enviada ao repositório.

  • RegistryId: a ID da AWS conta associada ao registro que contém o repositório.

  • RepositoryName: o nome do repositório do Amazon ECR ao qual a imagem foi enviada por push.

  • ImageURI: O URI para a imagem.

  • ImageTags: A tag usada para a imagem.

Antes de criar o pipeline, use as etapas a seguir para configurar o arquivo imageDetail.json.

  1. Como parte do planejamento de implantação de aplicativos baseados em contêiner azul/verde para o pipeline, planeje o estágio de origem e o estágio de compilação, se aplicável.

  2. Escolha uma das seguintes opções:

    1. Se seu pipeline pulou o estágio de construção, você deve criar manualmente o arquivo JSON e carregá-lo no seu repositório de origem, por exemplo, para que a ação de origem possa fornecer o artefato. CodeCommit Crie o arquivo usando um editor de texto, atribua um nome ao arquivo ou use o nome de arquivo padrão imageDetail.json. Envie o arquivo imageDetail.json para o repositório de origem.

    2. Se o pipeline tiver um estágio de compilação, execute o seguinte:

      1. Adicione um comando ao arquivo de especificações de compilação que gere o arquivo de definições de imagem em seu repositório de origem durante a fase de compilação. O exemplo a seguir usa o comando printf para criar um arquivo imageDetail.json. Liste esse comando na seção post_build do arquivo buildspec.yml:

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

        Você deve incluir o arquivo imageDetail.json como um artefato de saída no arquivo buildspec.yml.

      2. Adicione o imageDetail.json como artefato no arquivo buildspec.yml.

        artifacts: files: - imageDetail.json