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 noAWS CodePipelineque implanta aplicativos de contêiner usando uma implantação azul/verde. Em uma implantação azul/verde, você pode executar uma nova versão do aplicativo junto com a versão antiga e testar a nova versão antes de redirecionar o tráfego para ela. Você também pode monitorar o processo de implantação e fazer uma reversão rapidamente caso tenha algum problema.

O pipeline concluído detecta alterações em suas imagens ou arquivo de definição de tarefa e usa o CodeDeploy para rotear e implantar tráfego para um cluster e load balancer do Amazon ECS. O CodeDeploy cria um novo ouvinte no 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 CodeCommit, onde sua definição de tarefa do Amazon ECS está armazenada.

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

nota

Este tópico descreve a ação de implantação azul/verde do Amazon ECS to CodeDeploy para CodePipeline. Para obter informações de referência sobre ações de implantação padrão do Amazon ECS no CodePipeline, consulteAmazon 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 do aplicativo no CodeDeploy. Antes de criar o pipeline, você já deve ter criado o aplicativo no CodeDeploy.

DeploymentGroupName

: obrigatório Sim

O grupo de implantação especificado para conjuntos de tarefas do Amazon ECS que você criou para seu aplicativo 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. Este é geralmente o nome do artefato de saída da ação de origem. Quando você usa o console, o nome padrão para o 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. Este é geralmente o nome do artefato de saída da ação de origem. Quando você usa o console, o nome padrão para o artefato de saída da ação de origem éSourceArtifact.

AppSpecTemplatePath

: obrigatório Não

O nome do arquivo do arquivo AppSpec armazenado no local do arquivo de origem do pipeline, como o repositório CodeCommit do pipeline. O nome de arquivo padrão é appspec.yaml. Se o arquivo AppSpec tiver o mesmo nome e estiver armazenado no nível raiz no 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 da definição da tarefa armazenada no local de origem do arquivo de pipeline, como o repositório CodeCommit do pipeline. O nome de arquivo padrão é taskdef.json. Se o arquivo de definição de tarefa tiver o mesmo nome e estiver armazenado no nível raiz no repositório de arquivos, não será necessário fornecer o nome do arquivo. Se o caminho não for o padrão, insira o caminho e o nome do arquivo.

<Number>Nome do artefato da imagem

: 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.

Valores disponíveis para<Number>são de 1 a 4.

<Number>ContainerName Image

: obrigatório Não

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

Valores disponíveis para<Number>são de 1 a 4.

Artefatos de entrada

  • Número de artefatos: 1 to 5

  • Descrição: OCodeDeployToECSprimeiro procura o arquivo de definição de tarefa e o arquivo AppSpec no repositório de arquivos de origem, em seguida, procura a imagem no repositório de imagens e, em seguida, executa os comandos AppSpec para implantar o conjunto de tarefas e o contêiner no cluster.

    OCodeDeployToECSa ação procura por umimageDetail.jsonque mapeia o URI da imagem para a imagem. Quando você confirmar uma alteração no repositório de imagens do Amazon ECR, o pipeline de ECR criará umimageDetail.jsonpara esse commit. Você também pode adicionar manualmenteimageDetail.jsonpara um pipeline onde a ação não é 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.

Artefatos de saída

  • Número de artefatos: 0

  • Descrição: 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 o orienta pela criação dos recursos do CodeDeploy e do Amazon ECS necessários para uma implantação azul/verde. O tutorial mostra como enviar 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, nome do contêiner, nome do serviço do Amazon ECS e configuração do load balancer. Em seguida, o tutorial orienta você através da criação do arquivo AppSpec e pipeline para sua implantação.

    nota

    Este tópico e tutorial descrevem a ação azul/verde CodeDeploy/ECS para CodePipeline. Para obter informações sobre ações padrão do ECS no CodePipeline, consulteTutorial: Implementação contínua com o CodePipeline.

  • AWS CodeDeployGuia do usuário— Para obter informações sobre como usar o load balancer, o listener de produção, os grupos de destino e o aplicativo do Amazon ECS em uma implantação azul/verde, consulteTutorial: Implantar um serviço do Amazon ECS. Esta informação de referência noAWS CodeDeployGuia do usuárioO fornece uma visão geral das implantações azuis/verdes com o Amazon ECS eAWS CodeDeploy.

  • Amazon Elastic Container Service Developer— 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, consulteO que é o Amazon ECS?