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 Criar um pipeline, estágios e ações.
Operadores de trabalho do AWS CodePipeline 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 de 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.jsoncomo entrada para a ação de implantação. Para assistir a um tutorial que usa a ação de implantação padrão do Amazon ECS no CodePipeline, consulte Tutorial: Implantação padrão do Amazon ECS com o CodePipeline. Para outro tutorial de exemplo que use a ação de implantação padrão do Amazon ECS no CodePipeline com a ação ECRBuildAndPublish, consulte Tutorial: Compilar e enviar por push uma imagem do Docker para o Amazon ECR com o CodePipeline (tipo V2). -
As implantações azul/verde do Amazon ECS requerem um arquivo
imageDetail.jsoncomo entrada para a ação de implantação. Para conferir um tutorial com um exemplo de implantação azul/verde, consulte Tutorial: Criar um pipeline com a origem do Amazon ECR e a implantação do ECS para CodeDeploy.-
Ações de origem do Amazon ECR geram um arquivo
imageDetail.json, que é fornecido como uma saída da ação de origem.
-
Tópicos
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 aplicações baseadas em contêiner, deverá gerar um arquivo de definições de imagem para fornecer ao operador de trabalho do CodePipeline a identificação de contêiner e imagem do Amazon ECS a ser recuperada no 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, faça upload do arquivo no local de origem, como o repositório do CodeCommit, ou gere o arquivo como um artefato de saída de compilação.
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 |
|---|---|
| nome | 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 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.
-
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.
-
Escolha uma das seguintes opções:
-
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.
-
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çãopost_builddo arquivobuildspec.yml:printf '[{"name":"container_name","imageUri":"image_URI"}]' > imagedefinitions.jsonVocê deve incluir o arquivo de definições de imagem como artefato de saída no arquivo
buildspec.yml.
-
-
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 obter um tutorial passo a passo de como criar um pipeline que use o Amazon ECS como provedor de implantação, consulte Tutorial: Implantação contínua com o 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 aplicações baseadas em contêiner para uma implantação azul/verde, deverá gerar o arquivo imageDetail.json para fornecer ao operador de trabalho do Amazon ECS e do CodeDeploy a identificação de imagem a ser recuperada no 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 Referência da ação de implantação azul/verde do Amazon Elastic Container Service e CodeDeploy.
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.jsonno 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.jsoncomo 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.jsonmanualmente.Para obter um tutorial sobre a criação de um pipeline que inclua um estágio de origem do Amazon ECR, consulte Tutorial: Criar um pipeline com a origem do Amazon ECR e a implantação do 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 |
Antes de criar o pipeline, use as etapas a seguir para configurar o arquivo imageDetail.json.
-
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.
-
Escolha uma das seguintes opções:
-
Se o pipeline tiver ignorado o estágio de compilação, será necessário criar o arquivo JSON manualmente e submetê-lo a upload para seu repositório de origem, como o CodeCommit, 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
imageDetail.json. Envie o arquivoimageDetail.jsonpara o repositório de origem. -
Se o pipeline tiver um estágio de compilação, execute o seguinte:
-
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çãopost_builddo arquivo buildspec.yml:printf '{"ImageURI":"image_URI"}' > imageDetail.jsonVocê deve incluir o arquivo
imageDetail.jsoncomo um artefato de saída no arquivobuildspec.yml. -
Adicione o
imageDetail.jsoncomo artefato no arquivobuildspec.yml.artifacts: files: - imageDetail.json
-
-