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, estágios e ações.

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

arquivo imagedefinitions.json para ações de implantação padrão da Amazon ECS

Um documento de definições de imagem é um JSON arquivo que descreve o nome do ECS contêiner da Amazon, a imagem e a tag. 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 ECS contêiner e a identificação da imagem da Amazon para recuperar do repositório de imagens, como a 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 imagedefinitions.json arquivo fornece o nome e a imagem do contêinerURI. Ele deve ser construído com o seguinte conjunto de pares de chave/valor.

Chave Valor
name container_name
imageUri imageUri
nota

O campo nome é usado para o nome da imagem do contêiner, ou seja, o nome da imagem do Docker.

Aqui está a JSON estrutura, onde está sample-app o nome do contêinerecs-repo, a imagem URI e a taglatest:

[ { "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.

JSONestrutura:

[ { "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 seu pipeline for criado de forma que ele pule o estágio de construção, você deverá criar o JSON arquivo manualmente e carregá-lo no repositório de origem para 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 seu repositório de origem for um bucket do Amazon S3, lembre-se de compactar o arquivoJSON.

    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 como criar um pipeline que usa a Amazon ECS como provedor de implantação, consulte Tutorial: Implantação contínua com CodePipeline.

imageDetailArquivo.json para ações de implantação ECS azul/verde da Amazon

Um imageDetail.json documento é um JSON arquivo que descreve sua ECS imagem da AmazonURI. Se você estiver implantando aplicativos baseados em contêineres para uma implantação azul/verde, deverá gerar o arquivo imageDetail.json para fornecer à Amazon ECS e CodeDeploy ao funcionário a identificação da imagem a ser recuperada do repositório de imagens, como a 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 referência de ação de implantação CodeDeploy azul-verde.

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 imageDetail.json arquivo em seu local de origem para que ele seja fornecido no pipeline como entrada para sua ação de implantação ECS azul/verde da Amazon.

    nota

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

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

    nota

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

    Para ver um tutorial sobre a criação de um pipeline que inclui um estágio de ECR origem da Amazon, consulteTutorial: Crie um pipeline com uma ECR fonte da Amazon e ECS para implantação CodeDeploy .

Diagrama mostrando o imageDetail arquivo.json contido no bucket de artefatos

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

Chave Valor
Imagem URI image_URI
imageDetail.json

Aqui está a JSON estrutura, onde URI está a imagemACCOUNTID.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 imageDetail.json arquivo é gerado automaticamente pela ação de ECR origem da Amazon sempre que uma alteração é enviada para o repositório de imagens. As ações de ECR origem imageDetail.json geradas pela Amazon são fornecidas como um artefato de saída da ação de origem para a próxima ação no pipeline.

Aqui está a JSON estrutura, onde está o nome do repositóriodk-image-repo, a imagem URI e a tag da imagem: ecs-repo 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 imageDetail.json arquivo mapeia a imagem URI e o nome do contêiner para a definição de ECS tarefa da Amazon da seguinte forma:

  • 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 ECR repositório da Amazon para o qual a imagem foi enviada.

  • 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 JSON arquivo 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