Amazon Elastic Container Service e CodeDeploy (azul-verde) - 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á.

Amazon Elastic Container Service e CodeDeploy (azul-verde)

Você pode configurar um pipeline no AWS CodePipeline que implante aplicativos de contêiner usando uma implantação azul/verde. Em uma implantação azul/verde, você pode executar a nova versão da sua aplicação junto com a versão antiga e testar a nova versão antes de redirecionar o tráfego para ela. Você também poderá monitorar o processo de implantação e realizar uma reversão rapidamente se houver algum problema.

O pipeline concluído detecta alterações em suas imagens ou no arquivo de definição de tarefa e usa o CodeDeploy para encaminhar e implantar o tráfego em um cluster e balanceador de carga do Amazon ECS. O CodeDeploy cria um novo receptor em seu balanceador de carga que pode direcionar sua nova tarefa por meio de uma porta especial. Você também pode configurar o pipeline para usar um local de origem, como um repositório do CodeCommit, no qual a definição de tarefa do Amazon ECS é armazenada.

Antes de criar seu pipeline, você já deve ter criado os recursos do Amazon ECS, os recursos do CodeDeploy, o balanceador de carga e o grupo de destino. Você já deve ter marcado e armazenado a imagem no seu repositório de imagens e carregado a definição da tarefa e o arquivo AppSpec no seu repositório de arquivos.

nota

Este tópico descreve a ação de implantação azul/verde do Amazon ECS para CodeDeploy no CodePipeline. Para obter informações de referência sobre as ações de implantação padrão do Amazon ECS no CodePipeline, consulte Amazon Elastic Container Service.

Tipo de ação

  • Categoria: Deploy

  • Proprietário: AWS

  • Fornecedor: CodeDeployToECS

  • Versão: 1

Parâmetros de configuração

ApplicationName

Obrigatório: Sim

O nome da aplicação no CodeDeploy. Antes de criar seu pipeline, você já deve ter criado a aplicação no CodeDeploy.

DeploymentGroupName

Obrigatório: Sim

O grupo de implantação especificado para os conjuntos de tarefas do Amazon ECS que você criou para a aplicação do CodeDeploy. Antes de criar seu pipeline, você já deve ter criado o grupo de implantação no CodeDeploy.

TaskDefinitionTemplateArtifact

Obrigatório: Sim

O nome do artefato de entrada que fornece o arquivo de definição de tarefa para a ação de implantação. Geralmente, esse é o nome do artefato de saída da ação de origem. Quando você usa o console, o nome padrão do artefato de saída da ação de origem é SourceArtifact.

AppSpecTemplateArtifact

Obrigatório: Sim

O nome do artefato de entrada que fornece o arquivo AppSpec para a ação de implantação. Esse valor é atualizado quando o pipeline é executado. Geralmente, esse é o nome do artefato de saída da ação de origem. Quando você usa o console, o nome padrão do artefato de saída da ação de origem é SourceArtifact. Para TaskDefinition no arquivo AppSpec, você pode manter o texto do espaço reservado <TASK_DEFINITION> conforme mostrado aqui.

AppSpecTemplatePath

Obrigatório: não

O nome do arquivo AppSpec armazenado no local do arquivo de origem do pipeline, como o repositório do CodeCommit do pipeline. O nome de arquivo padrão é appspec.yaml. Se seu arquivo AppSpec tiver o mesmo nome e estiver armazenado no nível raiz do repositório de arquivos, você não precisará fornecer o nome do arquivo. Se o caminho não for o padrão, insira o caminho e o nome do arquivo.

TaskDefinitionTemplatePath

Obrigatório: não

O nome do arquivo de definição armazenado no local do arquivo de origem do arquivo de pipeline; por exemplo, o repositório do CodeCommit do pipeline. O nome de arquivo padrão é taskdef.json. Se o arquivo de definição tiver o mesmo nome e estiver armazenado no nível raiz do repositório de arquivos, você não precisará fornecer o nome do arquivo. Se o caminho não for o padrão, insira o caminho e o nome do arquivo.

Image<Number>ArtifactName

Obrigatório: não

O nome do artefato de entrada que fornece a imagem para a ação de implantação. Geralmente, esse é o artefato de saída do repositório de imagens, como a saída da ação de origem do Amazon ECR.

Os valores disponíveis para <Number> vão de 1 a 4.

Image<Number>ContainerName

Obrigatório: não

O nome da imagem disponível no repositório de imagens; por exemplo, o repositório de origem do Amazon ECR.

Os valores disponíveis para <Number> vão de 1 a 4.

Input artifacts (Artefatos de entrada)

  • Número de artefatos: 1 to 5

  • Descrição: a ação CodeDeployToECS primeiro procura o arquivo de definição de tarefa e o arquivo AppSpec no repositório de arquivos de origem. Depois, ela procura a imagem no repositório de imagens, gera dinamicamente uma nova revisão da definição de tarefa e, por fim, executa os comandos do AppSpec para implantar o conjunto de tarefas e o contêiner no cluster.

    A ação CodeDeployToECS procura um arquivo imageDetail.json que mapeie o URI de imagem para a imagem. Quando você confirmar uma alteração no repositório de imagens do Amazon ECR, a ação de origem do ECR do pipeline criará um arquivo imageDetail.json para essa confirmação. Você também pode adicionar manualmente um arquivo imageDetail.json para um pipeline em que a ação não seja automatizada. Para mais informações sobre o arquivo imageDetail.json, consulte Arquivo imageDetail.json para ações de implantação azul/verde do Amazon ECS.

    A ação CodeDeployToECS gera dinamicamente uma nova revisão da definição de tarefa. Nessa fase, essa ação substitui os espaços reservados no arquivo de definição de tarefa pelo URI de imagem recuperado nos arquivos imageDetail.json. Por exemplo, se você definir IMAGE1_NAME como parâmetro Image1ContainerName, especifique o espaço reservado <IMAGE1_NAME> como valor do campo de imagem em seu arquivo de definição de tarefa. Nesse caso, a ação CodeDeployToECS substitui o espaço reservado <IMAGE1_NAME> no URI de imagem real recuperado no arquivo ImageDetail.json no artefato especificaeo como Image1ArtifactName.

    Para atualizações de definição de tarefa, o arquivo AppSpec.yaml do CodeDeploy contém a propriedade TaskDefinition.

    TaskDefinition: <TASK_DEFINITION>

    Essa propriedade será atualizada pela ação CodeDeployToECS depois que a nova definição de tarefa for criada.

    Para o valor do campo TaskDefinition, o texto do espaço reservado deve ser <TASK_DEFINITION>. A ação CodeDeployToECS substitui esse espaço reservado pelo ARN real da definição de tarefa gerada dinamicamente.

Artefatos de saída

  • Número de artefatos: 0

  • Descrição: os artefatos de saída não se aplicam a esse tipo de ação.

Declaração de ação

YAML
Name: Deploy Actions: - Name: Deploy ActionTypeId: Category: Deploy Owner: AWS Provider: CodeDeployToECS Version: '1' RunOrder: 1 Configuration: AppSpecTemplateArtifact: SourceArtifact ApplicationName: ecs-cd-application DeploymentGroupName: ecs-deployment-group Image1ArtifactName: MyImage Image1ContainerName: IMAGE1_NAME TaskDefinitionTemplatePath: taskdef.json AppSpecTemplatePath: appspec.yaml TaskDefinitionTemplateArtifact: SourceArtifact OutputArtifacts: [] InputArtifacts: - Name: SourceArtifact - Name: MyImage Region: us-west-2 Namespace: DeployVariables
JSON
{ "Name": "Deploy", "Actions": [ { "Name": "Deploy", "ActionTypeId": { "Category": "Deploy", "Owner": "AWS", "Provider": "CodeDeployToECS", "Version": "1" }, "RunOrder": 1, "Configuration": { "AppSpecTemplateArtifact": "SourceArtifact", "ApplicationName": "ecs-cd-application", "DeploymentGroupName": "ecs-deployment-group", "Image1ArtifactName": "MyImage", "Image1ContainerName": "IMAGE1_NAME", "TaskDefinitionTemplatePath": "taskdef.json", "AppSpecTemplatePath": "appspec.yaml", "TaskDefinitionTemplateArtifact": "SourceArtifact" }, "OutputArtifacts": [], "InputArtifacts": [ { "Name": "SourceArtifact" }, { "Name": "MyImage" } ], "Region": "us-west-2", "Namespace": "DeployVariables" } ] }

Os recursos relacionados a seguir podem ajudar você à medida que trabalha com esta ação.

  • Tutorial: Criar um pipeline com a origem do Amazon ECR e a implantação do ECS para CodeDeploy – Este tutorial orienta você na criação dos recursos do CodeDeploy e do Amazon ECS necessários para uma implantação azul/verde. O tutorial mostra como enviar por push uma imagem do Docker para o Amazon ECR e criar uma definição de tarefa do Amazon ECS que lista o nome da imagem do Docker, o nome do contêiner, o nome do serviço do Amazon ECS e a configuração do balanceador de carga. Em seguida, o tutorial orienta você pela criação do arquivo AppSpec e do pipeline da sua implantação.

    nota

    Este tópico e tutorial descrevem a ação de implantação azul/verde do CodeDeploy/ECS no CodePipeline. Para obter informações sobre as ações padrão do ECS no CodePipeline, consulte Tutorial: Implantação contínua com o CodePipeline.

  • Guia do usuário do AWS CodeDeploy: para obter informações sobre como usar o balanceador de carga, o receptor de produção, os grupos de destino e a aplicação do Amazon ECS em uma implantação azul/verde, consulte Tutorial: Implantar um serviço do Amazon ECS. Essas informações de referência no Guia do usuário do AWS CodeDeploy fornecem uma visão geral das implantações azul/verde com o Amazon ECS e o AWS CodeDeploy.

  • Guia do desenvolvedor do Amazon Elastic Container Service: para obter informações sobre como trabalhar com imagens e contêineres do Docker, serviços e clusters do ECS e conjuntos de tarefas do ECS, consulte O que é o Amazon ECS?