

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

# Tutorial: Crie um pipeline com uma fonte e ECS-to-CodeDeploy implantação do Amazon ECR
<a name="tutorials-ecs-ecr-codedeploy"></a>

Neste tutorial, você configura um pipeline AWS CodePipeline que implanta aplicativos de contêiner usando uma blue/green implantação compatível com imagens do Docker. Em uma implantação azul/verde, você pode executar a nova versão do seu aplicativo junto com a versão antiga e testar a nova versão antes de redirecionar o tráfego. Você também poderá monitorar o processo de implantação e realizar uma reversão rapidamente se houver algum problema.

**Importante**  
Como parte da criação de um pipeline, um bucket de artefatos S3 fornecido pelo cliente será usado CodePipeline por for artefacts. (Este bucket não é o mesmo utilizado para uma ação de origem do S3.) Se o bucket de artefatos do S3 estiver em uma conta diferente da conta do seu pipeline, certifique-se de que o bucket de artefatos do S3 Contas da AWS seja de propriedade de quem é seguro e confiável.

**nota**  
Este tutorial é para a ação de implantação CodeDeploy azul/verde do Amazon ECS para. CodePipeline Para obter um tutorial que usa a ação de implantação padrão do Amazon ECS em CodePipeline, consulte[Tutorial: Implantação padrão do Amazon ECS com CodePipeline](ecs-cd-pipeline.md).

O pipeline concluído detecta alterações em sua imagem, que é armazenada em um repositório de imagens, como o Amazon ECR, e é usada CodeDeploy para rotear e implantar tráfego em um cluster e balanceador de carga do Amazon ECS. CodeDeploy usa um ouvinte para redirecionar o tráfego para a porta do contêiner atualizado especificado no arquivo. AppSpec Para obter informações sobre como o balanceador de carga, o ouvinte de produção, os grupos-alvo e seu aplicativo Amazon ECS são usados em uma blue/green implantação, consulte [Tutorial: Implantar um serviço do Amazon](https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorial-ecs-deployment.html) ECS.

O pipeline também é configurado para usar um local de origem, como, por exemplo CodeCommit, onde sua definição de tarefa do Amazon ECS é armazenada. Neste tutorial, você configura cada um desses AWS recursos e, em seguida, cria seu pipeline com estágios que contêm ações para cada recurso.

O pipeline de entrega contínua compilará e implantará automaticamente as imagens de contêiner sempre que o código-fonte for alterado ou for feito upload de uma nova imagem de base no Amazon ECR.

Esse fluxo usa os seguintes artefatos:
+ Um arquivo de imagem do Docker que especifica o nome do contêiner e a URI do repositório de imagens do Amazon ECR.
+ 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.
+ Um CodeDeploy AppSpec arquivo que especifica o nome do arquivo de definição de tarefas do Amazon ECS, o nome do contêiner do aplicativo atualizado e a porta do contêiner para a qual CodeDeploy redireciona o tráfego de produção. Também é capaz de especificar a configuração de rede opcional e as funções Lambda que podem ser executadas durante os ganchos do evento de ciclo de vida da implantação.

**nota**  
Quando você confirmar uma alteração no repositório de imagens do Amazon ECR, a ação de origem do pipeline criará um arquivo `imageDetail.json` para essa confirmação. Para mais informações sobre o arquivo `imageDetail.json`, consulte [Arquivo ImageDetail.json para ações de implantação do Amazon ECS blue/green](file-reference.md#file-reference-ecs-bluegreen).

Ao criar ou editar seu pipeline e atualizar ou especificar artefatos de origem para o estágio de implantação, certifique-se de apontar para os artefatos de origem com o nome e a versão mais recente que deseja utilizar. Depois de configurar seu pipeline, à medida que forem feitas alterações em sua imagem ou definição de tarefa, pode ser necessário atualizar os arquivos do artefato de origem em seus repositórios e editar o estágio de implantação em seu pipeline.

**Topics**
+ [Pré-requisitos](#tutorials-ecs-ecr-codedeploy-prereq)
+ [Etapa 1: Criar uma imagem e enviá-la a um repositório do Amazon ECR](#tutorials-ecs-ecr-codedeploy-imagerepository)
+ [Etapa 2: criar arquivos de definição de tarefas e de AppSpec origem e enviar para um CodeCommit repositório](#tutorials-ecs-ecr-codedeploy-taskdefinition)
+ [Etapa 3: Criar o Application Load Balancer e os grupos de destino](#tutorials-ecs-ecr-codedeploy-loadbal)
+ [Etapa 4: Criar um cluster e um serviço do Amazon ECS](#tutorials-ecs-ecr-codedeploy-cluster)
+ [Etapa 5: Crie seu CodeDeploy aplicativo e grupo de implantação (plataforma de computação ECS)](#tutorials-ecs-ecr-codedeploy-deployment)
+ [Etapa 6: Criar o pipeline](#tutorials-ecs-ecr-codedeploy-pipeline)
+ [Etapa 7: Realizar uma alteração no pipeline e verificar a implantação](#tutorials-ecs-ecr-codedeploy-update)

## Pré-requisitos
<a name="tutorials-ecs-ecr-codedeploy-prereq"></a>

É necessário que já tenham sido criados os recursos a seguir:
+ Um CodeCommit repositório. Você pode usar o AWS CodeCommit repositório em [Tutorial: criar um pipeline simples (CodeCommit repositório)](tutorials-simple-codecommit.md) que você criou.
+ Inicie uma instância do Linux do Amazon EC2 e instale o Docker para criar uma imagem, conforme mostrado neste tutorial. Caso já exista uma imagem que deseja usar, ignore esse pré-requisito.

## Etapa 1: Criar uma imagem e enviá-la a um repositório do Amazon ECR
<a name="tutorials-ecs-ecr-codedeploy-imagerepository"></a>

Nesta seção, você usa o Docker para criar uma imagem e, em seguida, usa o AWS CLI para criar um repositório Amazon ECR e enviar a imagem para o repositório.

**nota**  
Caso já exista uma imagem que deseja usar, pule esta etapa.

**Criar uma imagem**

1. Conecte-se à sua instância do Linux na qual o Docker esteja instalado.

   Expanda uma imagem para `nginx`. Esse comando fornece a imagem `nginx:latest`:

   ```
   docker pull nginx
   ```

1. Executar **docker images**. A imagem deve estar presente na lista.

   ```
   docker images
   ```

**Para criar um repositório do Amazon ECR e enviar a imagem**

1. Crie um repositório do Amazon ECR para armazenar sua imagem . Anote o `repositoryUri` apresentado na saída.

   ```
   aws ecr create-repository --repository-name nginx
   ```

   Saída:

   ```
   {
       "repository": {
           "registryId": "aws_account_id",
           "repositoryName": "nginx",
           "repositoryArn": "arn:aws:ecr:us-east-1:aws_account_id:repository/nginx",
           "createdAt": 1505337806.0,
           "repositoryUri": "aws_account_id.dkr.ecr.us-east-1.amazonaws.com/nginx"
       }
   }
   ```

1. Marque a imagem com o valor `repositoryUri` da etapa anterior.

   ```
   docker tag nginx:latest aws_account_id.dkr.ecr.us-east-1.amazonaws.com/nginx:latest
   ```

1. Execute o comando **aws ecr get-login-password**, como mostrado neste exemplo para a região `us-west-2` e o ID da conta 111122223333.

   ```
   aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-west-2.amazonaws.com/nginx
   ```

1. Envie a imagem ao Amazon ECR utilizando o `repositoryUri` da etapa anterior.

   ```
   docker push 111122223333.dkr.ecr.us-east-1.amazonaws.com/nginx:latest
   ```

## Etapa 2: criar arquivos de definição de tarefas e de AppSpec origem e enviar para um CodeCommit repositório
<a name="tutorials-ecs-ecr-codedeploy-taskdefinition"></a>

Nesta seção, você criará um arquivo JSON de definição da tarefa, registrando-o no Amazon ECS. Em seguida, você cria um AppSpec arquivo CodeDeploy e usa seu cliente Git para enviar os arquivos para o seu CodeCommit repositório.

**Criar uma definição de tarefa para sua imagem**

1. Crie um arquivo denominado `taskdef.json` com os conteúdos a seguir. Para `image`, insira o nome da imagem, como nginx. Esse valor é atualizado quando o pipeline é executado.
**nota**  
Certifique-se de que a função de execução especificada na definição de tarefas contenha a `AmazonECSTaskExecutionRolePolicy`. Para obter mais informações, consulte [Perfil do IAM de execução de tarefas do Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html) no *Guia do desenvolvedor do Amazon ECS*.

   ```
   {
       "executionRoleArn": "arn:aws:iam::account_ID:role/ecsTaskExecutionRole",
       "containerDefinitions": [
           {
               "name": "sample-website",
               "image": "nginx",
               "essential": true,
               "portMappings": [
                   {
                       "hostPort": 80,
                       "protocol": "tcp",
                       "containerPort": 80
                   }
               ]
           }
       ],
       "requiresCompatibilities": [
           "FARGATE"
       ],
       "networkMode": "awsvpc",
       "cpu": "256",
       "memory": "512",
       "family": "ecs-demo"
   }
   ```

1. Registre sua definição de tarefas com o arquivo `taskdef.json`.

   ```
   aws ecs register-task-definition --cli-input-json file://taskdef.json
   ```

1. Após o registro da definição de tarefas, edite o arquivo para remover o nome da imagem e incluir o texto do espaço reservado `<IMAGE1_NAME>` no campo de imagem.

   ```
   {
       "executionRoleArn": "arn:aws:iam::account_ID:role/ecsTaskExecutionRole",
       "containerDefinitions": [
           {
               "name": "sample-website",
               "image": "<IMAGE1_NAME>",
               "essential": true,
               "portMappings": [
                   {
                       "hostPort": 80,
                       "protocol": "tcp",
                       "containerPort": 80
                   }
               ]
           }
       ],
       "requiresCompatibilities": [
           "FARGATE"
       ],
       "networkMode": "awsvpc",
       "cpu": "256",
       "memory": "512",
       "family": "ecs-demo"
   }
   ```

**Para criar um AppSpec arquivo**
+ O AppSpec arquivo é usado para CodeDeploy implantações. O arquivo, que inclui campos opcionais, usa o seguinte formato:

  ```
  version: 0.0
  Resources:
    - TargetService:
        Type: AWS::ECS::Service
        Properties:
          TaskDefinition: "task-definition-ARN"
          LoadBalancerInfo:
            ContainerName: "container-name"
            ContainerPort: container-port-number
  # Optional properties
          PlatformVersion: "LATEST"
          NetworkConfiguration:
              AwsvpcConfiguration:
                Subnets: ["subnet-name-1", "subnet-name-2"]
                SecurityGroups: ["security-group"]
                AssignPublicIp: "ENABLED"
  Hooks:
  - BeforeInstall: "BeforeInstallHookFunctionName"
  - AfterInstall: "AfterInstallHookFunctionName"
  - AfterAllowTestTraffic: "AfterAllowTestTrafficHookFunctionName"
  - BeforeAllowTraffic: "BeforeAllowTrafficHookFunctionName"
  - AfterAllowTraffic: "AfterAllowTrafficHookFunctionName"
  ```

  Para obter mais informações sobre o AppSpec arquivo, incluindo exemplos, consulte [Referência CodeDeploy AppSpec do arquivo](https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html).

  Crie um arquivo denominado `appspec.yaml` com os conteúdos a seguir. Para `TaskDefinition`, não altere o texto do espaço reservado `<TASK_DEFINITION>`. Esse valor é atualizado quando o pipeline é executado.

  ```
  version: 0.0
  Resources:
    - TargetService:
        Type: AWS::ECS::Service
        Properties:
          TaskDefinition: <TASK_DEFINITION>
          LoadBalancerInfo:
            ContainerName: "sample-website"
            ContainerPort: 80
  ```

**Para enviar arquivos para o seu CodeCommit repositório**

1. Envie ou envie os arquivos para o seu CodeCommit repositório. Esses arquivos são o artefato de origem gerado pelo assistente **Create pipeline (Criar pipeline)** para a ação de implantação no CodePipeline. Os arquivos devem ter a seguinte aparência em seu diretório local:

   ```
   /tmp
     |my-demo-repo
       |-- appspec.yaml
       |-- taskdef.json
   ```

1. Selecione o método que deseja utilizar para carregar seus arquivos:

   1. Usar a linha de comando git a partir de um repositório clonado no computador local:

      1. Altere diretórios para o repositório local:

         ```
         (For Linux, macOS, or Unix) cd /tmp/my-demo-repo
         (For Windows) cd c:\temp\my-demo-repo
         ```

      1. Execute o seguinte comando para organizar todos os seus arquivos de uma só vez:

         ```
         git add -A
         ```

      1. Execute o seguinte comando para confirmar os arquivos com uma mensagem de confirmação:

         ```
         git commit -m "Added task definition files"
         ```

      1. Execute o comando a seguir para enviar os arquivos do seu repositório local para o seu CodeCommit repositório:

         ```
         git push
         ```

   1. Para usar o CodeCommit console para carregar seus arquivos:

      1. Abra o CodeCommit console e escolha seu repositório na lista **Repositórios.**

      1. Selecione **Add file (Adicionar arquivo)** e clique em **Upload file (Carregar arquivo)**.

      1. Clique em **Choose file (Selecionar arquivo)** e localize o arquivo. Informe seu nome de usuário e endereço de e-mail para confirmar a alteração. Escolha **Commit changes (Confirmar alterações)**.

      1. Repita essa etapa para cada arquivo que deseja carregar.

## Etapa 3: Criar o Application Load Balancer e os grupos de destino
<a name="tutorials-ecs-ecr-codedeploy-loadbal"></a>

Nesta seção, você criará um Application Load Balancer do Amazon EC2. É possível utilizar os nomes de sub-rede e valores do grupo de destino gerados com o balanceador de carga posteriormente, ao criar o serviço do Amazon ECS. É possível utilizar um Application Load Balancer ou Network Load Balancer. O load balancer deve usar uma VPC com duas sub-redes públicas em diferentes zonas de disponibilidade. Nessas etapas, confirme sua VPC padrão, crie um load balancer e crie dois grupos de destino para seu load balancer. Para obter mais informações, consulte [Grupos de destino para seus load balancers de rede](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-target-groups.html).

**Verificar sua VPC padrão e sub-redes públicas**

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon VPC em. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1. Verifique a VPC padrão a ser usada. No painel de navegação, escolha **Seu VPCs**. Observe qual VPC exibe **Sim** na coluna de **VPC padrão**. Essa é a VPC padrão. Contém sub-redes padrão a serem selecionadas.

1. Selecione **Subnets (Sub-redes)**. Selecione duas sub-redes que exibam **Yes (Sim)** na coluna de **Default subnet (Sub-rede padrão)**.
**nota**  
Anote sua sub-rede IDs. Você precisará deles posteriormente neste tutorial.

1. Selecione as sub-redes e escolha a guia **Description (Descrição)**. Verifique se as sub-redes que você deseja utilizar se encontram em diferentes zonas de disponibilidade.

1. Selecione as sub-redes e escolha a guia **Route Table (Tabela de rotas)**. Para verificar se cada sub-rede que deseja utilizar é uma sub-rede pública, confirme se uma linha de gateway está presente na tabela de rotas.

**Para criar um Application Load Balancer do Amazon EC2**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon EC2 em. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. No painel de navegação, selecione **Load Balancers**.

1. Selecione **Criar load balancer**.

1. Selecione **Application Load Balancer** e clique em **Create (Criar)**.

1. Em **Name (Nome)**, informe o nome do load balancer.

1. Em **Scheme (Esquema)**, selecione ** Internet-facing (Voltado para a Internet)**.

1. Em **IP address type (Tipo de endereço IP)**, selecione **ipv4**.

1. Configure duas portas do listener para seu load balancer:

   1. Em **Load Balancer Protocol (Protocolo do load balancer)**, selecione **HTTP**. Em **Load Balancer Port (Porta do load balancer)**, insira **80**.

   1. Escolha **Add listener**.

   1. Em **Load Balancer Protocol (Protocolo do load balancer)** para o segundo listener, selecione **HTTP**. Em **Load Balancer Port (Porta do load balancer)**, insira **8080**.

1. Em **Availability Zones (Zonas de disponibilidade)**, em **VPC**, selecione a VPC padrão. A seguir, escolha as duas sub-redes padrão que deseja utilizar.

1. Selecione **Next: Configure Security Settings (Próximo: Definir configurações de segurança)**.

1. Selecione **Next: Configure Security Groups (Próximo: Configurar grupos de segurança)**.

1. Clique em **Select an existing security group (Selecionar um grupo de segurança existente)** e anote o ID do grupo de segurança.

1. Selecione **Next: Configure Routing (Próximo: Configurar roteamento)**.

1. Em **Target group (Grupo de destino)**, selecione **New target group (Novo grupo de destino)** e configure o primeiro grupo de destino:

   1. Em **Nome**, informe o nome do grupo de destino (por exemplo, **target-group-1**).

   1. Em **Tipo de destino**, selecione **IP**.

   1. Em **Protocolo**: Selecione **HTTP**. Em **Porta**, insira **80**.

   1. Selecione **Next: Register Targets (Próximo: Registrar destinos)**.

1. Selecione **Next: Review (Próximo: Análise)** e **Create (Criar)**.

**Criar um grupo de destino para seu load balancer.**

1. Após a provisão do balanceador de carga, abra o console do Amazon EC2. No painel de navegação, selecione **Grupos de destino**.

1. Selecione **Criar grupo de destino**.

1. Em **Nome**, informe o nome do grupo de destino (por exemplo, **target-group-2**).

1. Em **Tipo de destino**, selecione **IP**.

1. Em **Protocolo**: Selecione **HTTP**. Em **Porta**, insira **8080**.

1. Em **VPC**, escolha a VPC padrão.

1. Escolha **Criar**.
**nota**  
Para que sua implantação seja executada, é necessário ter dois grupos de destino criados para seu load balancer. Somente é necessário anotar o ARN do seu primeiro grupo de destino. O ARN é usado no arquivo JSON `create-service` na próxima etapa.

**Atualizar o load balancer para incluir o segundo grupo de destino**

1. Abra o console do Amazon EC2. No painel de navegação, selecione **Load Balancers**.

1. Selecione seu load balancer e clique na guia **Listeners**. Escolha o listener com a porta 8080 e selecione **Edit (Editar)**.

1. Selecione o ícone de lápis próximo a **Forward to (Avançar para)** Escolha o segundo grupo de destino e selecione a marca de verificação. Selecione **Update (Atualizar)** para salvar as atualizações.

## Etapa 4: Criar um cluster e um serviço do Amazon ECS
<a name="tutorials-ecs-ecr-codedeploy-cluster"></a>

Nesta seção, você cria um cluster e um serviço do Amazon ECS que CodeDeploy direciona o tráfego durante a implantação (para um cluster do Amazon ECS em vez de instâncias do EC2). Para criar o serviço do Amazon ECS, é necessário utilizar os nomes de sub-redes, o grupo de segurança e o valor do grupo de destino gerados com o balanceador de carga para criar o serviço.

**nota**  
Ao usar essas etapas para criar seu cluster Amazon ECS, você usa o modelo de cluster **Networking only**, que provisiona os contêineres AWS Fargate. AWS O Fargate é uma tecnologia que gerencia sua infraestrutura de instância de contêiner para você. Não é necessário selecionar nem criar manualmente instâncias do Amazon EC2 para o cluster do Amazon ECS.

**Para criar um cluster do Amazon ECS**

1. Abra o console clássico do Amazon ECS em [https://console.aws.amazon.com/ecs/](https://console.aws.amazon.com/ecs/).

1. No painel de navegação, escolha **Clusters**.

1. Selecione **Criar cluster**.

1. Selecione o modelo de cluster **Somente redes** que utiliza o AWS Fargate e, depois, selecione **Próxima etapa**.

1. Insira um nome de cluster na página **Configure cluster (Configurar cluster)**. Você pode adicionar uma tag opcional para o seu recurso. Escolha **Criar**.

**Para criar um serviço do Amazon ECS**

Use o AWS CLI para criar seu serviço no Amazon ECS.

1. Crie um arquivo JSON e o nomeie como `create-service.json`. Cole a seguinte informação no arquivo JSON.

   No campo `taskDefinition`, ao registrar uma definição de tarefa no Amazon ECS, você atribui uma família a ela. Isso é semelhante a um nome para várias versões da definição da tarefa, especificado com um número de revisão. Neste exemplo, use “`ecs-demo:1`” para a família e o número de revisão no seu arquivo. Use os nomes de sub-rede, o grupo de segurança e valor do grupo de destino que você criou com seu load balancer em [Etapa 3: Criar o Application Load Balancer e os grupos de destino](#tutorials-ecs-ecr-codedeploy-loadbal).
**nota**  
É necessário incluir o ARN do grupo de destino nesse arquivo. Abra o console do Amazon EC2 e, no painel de navegação, em **BALANCEAMENTO DE CARGA**, selecione **Grupos de destino**. Escolha o primeiro grupo de destino. Copie o ARN da guia **Description (Descrição)**.

   ```
   {
       "taskDefinition": "family:revision-number",
       "cluster": "my-cluster",
       "loadBalancers": [
           {
               "targetGroupArn": "target-group-arn",
               "containerName": "sample-website",
               "containerPort": 80
           }
       ],
       "desiredCount": 1,
       "launchType": "FARGATE",
       "schedulingStrategy": "REPLICA",
       "deploymentController": {
           "type": "CODE_DEPLOY"
       },
       "networkConfiguration": {
           "awsvpcConfiguration": {
               "subnets": [
                   "subnet-1",
                   "subnet-2"
               ],
               "securityGroups": [
                   "security-group"
               ],
               "assignPublicIp": "ENABLED"
           }
       }
   }
   ```

1. Execute o comando **create-service** especificando o arquivo JSON:
**Importante**  
Não se esqueça de incluir `file://` antes do nome de arquivo. Ele é obrigatório nesse comando.

   Este exemplo cria um serviço denominado `my-service`.
**nota**  
Este comando de exemplo cria um serviço denominado my-service. Se você já tem um serviço com esse nome, o comando retornará um erro.

   ```
   aws ecs create-service --service-name my-service --cli-input-json file://create-service.json
   ```

   A saída retorna os campos de descrição para seu serviço.

1. Execute o comando **describe-services** para verificar se o serviço foi criado corretamente.

   ```
   aws ecs describe-services --cluster cluster-name --services service-name
   ```

## Etapa 5: Crie seu CodeDeploy aplicativo e grupo de implantação (plataforma de computação ECS)
<a name="tutorials-ecs-ecr-codedeploy-deployment"></a>

Quando você cria um CodeDeploy aplicativo e um grupo de implantação para a plataforma computacional Amazon ECS, o aplicativo é usado durante uma implantação para referenciar o grupo de implantação, grupos-alvo, ouvintes e comportamento de redirecionamento de tráfego corretos.

**Para criar um CodeDeploy aplicativo**

1. Abra o CodeDeploy console e escolha **Criar aplicativo**.

1. Em **Application name (Nome do aplicativo)**, informe o nome que deseja utilizar.

1. Em **Compute platform (Plataforma de computação)**, selecione **Amazon ECS**.

1. Escolha **Criar aplicativo**.

**Para criar um grupo CodeDeploy de implantação**

1. Na guia da página do aplicativo **Deployment groups (Grupos de implantação)**, selecione **Create deployment group (Criar grupo de implantação)**.

1. Em **Nome do grupo de implantação** digite um nome que descreva o grupo de implantação.

1. Em **Função de serviço**, escolha uma função de serviço que conceda CodeDeploy acesso ao Amazon ECS. Para criar uma nova função de serviço, siga estas etapas:

   1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)).

   1. No painel do console, escolha **Roles (Funções)**.

   1. Selecione **Criar perfil**.

   1. Em **Selecionar tipo de entidade confiável**, selecione **AWS service (Serviço da AWS)**. Em **Escolha um caso de uso**, selecione **CodeDeploy**. Em **Selecione seu caso de uso**, selecione **CodeDeploy - ECS.** Escolha **Próximo: Permissões**. A política gerenciada `AWSCodeDeployRoleForECS` já está anexada à função.

   1. Selecione **Next: Tags (Próximo: tags)** e **Next: Review (Próximo: revisar)**.

   1. Insira um nome para a função (por exemplo, **CodeDeployECSRole**) e escolha **Create role (Criar função)**.

1. Em **Configuração de ambiente**, selecione os nomes de cluster e serviço do Amazon ECS.

1. Em **Balanceadores de carga**, escolha o nome do balanceador de carga que distribui o tráfego para seu serviço do Amazon ECS.

1. Em **Production listener port (Porta do listener de produção)**, escolha a porta e o protocolo para o listener que fornece o tráfego de produção para seu serviço do Amazon ECS. Em **Test listener port (Porta do listener de teste)**, escolha a porta e o protocolo para o listener de teste.

1. Em **Nome do grupo de destino 1** e **Nome do grupo de destino 2**, escolha os grupos de destino utilizados para rotear o tráfego durante a implantação. Certifique-se de que esses são os grupos de destino criados para o load balancer.

1. Selecione **Redirecionar o tráfego imediatamente** para determinar por quanto tempo após uma implantação bem-sucedida será possível redirecionar o tráfego à tarefa atualizada do Amazon ECS.

1. Selecione **Criar grupo de implantação**.

## Etapa 6: Criar o pipeline
<a name="tutorials-ecs-ecr-codedeploy-pipeline"></a>

Nesta seção, você criará um pipeline com as seguintes ações:
+ Uma CodeCommit ação em que os artefatos de origem são a definição da tarefa e o AppSpec arquivo.
+ Um estágio de origem com uma ação de origem do Amazon ECR na qual o artefato de origem é o arquivo de imagem.
+ Um estágio de implantação com uma ação de implantação do Amazon ECS em que a implantação é executada com um CodeDeploy aplicativo e um grupo de implantação.

**Criar um pipeline de dois estágios com o assistente**

1. Faça login no Console de gerenciamento da AWS e abra o CodePipeline console em [http://console.aws.amazon. com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home).

1. Na página **Welcome (Bem-vindo)**, **Getting started (Conceitos básicos)** ou **Pipelines**, selecione **Create pipeline (Criar pipeline)**.

1. Na página **Etapa 1: Escolher opção de criação**, em **Opções de criação**, selecione a opção **Criar pipeline personalizado**. Escolha **Próximo**.

1. Em **Etapa 2: Escolher as configurações do pipeline**, em **Nome do pipeline**, insira **MyImagePipeline**.

1. CodePipeline fornece tubulações do tipo V1 e V2, que diferem em características e preço. O tipo V2 é o único tipo que você pode escolher no console. Para ter mais informações, consulte [Pipeline types](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-types-planning.html?icmpid=docs_acp_help_panel). Para obter informações sobre preços de CodePipeline, consulte [Preços](https://aws.amazon.com/codepipeline/pricing/).

1. Em **Função de serviço**, escolha **Nova função de serviço** para permitir CodePipeline a criação de uma função de serviço no IAM.

1. Deixe as configurações em **Advanced settings (Configurações avançadas)** como padrão e escolha **Next (Próximo)**.

1. Em **Etapa 3: Adicionar etapa de origem**, em **Provedor de origem**, escolha **AWS CodeCommit**. Em **Repository name (Nome do repositório)**, selecione o nome do repositório do CodeCommit que você criou em [Etapa 1: criar um CodeCommit repositório](tutorials-simple-codecommit.md#codecommit-create-repository). Em **Nome do ramo**, selecione o nome do ramo que contém a última atualização do código.

   Escolha **Próximo**.

1. Em **Etapa 4: Adicionar etapa de compilação**, escolha **Ignorar etapa de compilação** e aceite a mensagem de aviso escolhendo **Ignorar** novamente. Escolha **Próximo**.

1. Em **Etapa 5: Adicionar etapa de teste**, escolha **Ignorar etapa de teste** e aceite a mensagem de aviso escolhendo **Ignorar** novamente. 

   Escolha **Próximo**.

1. Na **Etapa 6: Adicionar estágio de implantação**:

   1. Em **Deploy provider (Fornecedor de implantação)**, selecione **Amazon ECS (Blue/Green) (Amazon ECS [Azul/Verde])**. Em **Application name (Nome do aplicativo)**, informe ou selecione o nome de um aplicativo da lista, como `codedeployapp`. Em **Deployment group (Grupo de implantação)**, informe ou selecione o nome de um grupo de implantação da lista, como `codedeploydeplgroup`.

       
**nota**  
O nome "Deploy" é o nome padrão dado ao estágio criado em **Step 4: Deploy (Etapa 4: implantar)**, assim como "Source" ("Origem) é o nome dado ao primeiro estágio do pipeline.

   1. Em **Definição de tarefa do Amazon ECS**, escolha **SourceArtifact**. No campo, insira **taskdef.json**.

   1. Em **AWS CodeDeploy AppSpec arquivo**, escolha **SourceArtifact**. No campo, insira **appspec.yaml**.
**nota**  
Nesse momento, não forneça informações em **Dynamically update task definition image (Atualização dinâmica da imagem de definição de tarefas)**.

   1. Escolha **Próximo**.

1. Na **Etapa 7: Revisar**, revise as informações e escolha **Criar funil**.

**Como adicionar uma ação de origem do Amazon ECR ao pipeline**

Visualize o pipeline e adicione uma ação de origem do Amazon ECR ao pipeline.

1. Selecione seu pipeline. No canto superior esquerdo, selecione **Edit (Editar)**.

1. No estágio de origem, clique em **Edit stage (Editar estágio)**.

1. Adicione uma ação paralela escolhendo **\$1 Adicionar ação** ao lado da ação CodeCommit de origem.

1. Em **Action name (Nome da ação)**, informe um nome (por exemplo, **Image**).

1. Em **Action provider (Provedor de ação)**, selecione **Amazon ECR**.  
![\[\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/ECR-source-action.png)

1. Em **Nome do repositório**, selecione o nome do repositório do Amazon ECR.

1. Em **Image tag (Tag da imagem)**, especifique o nome da imagem e a versão, caso seja diferente da última.

1. Em **Output artifacts (Artefatos de saída)**, escolha o artefato de saída padrão (por exemplo, `MyImage`) que contém o nome da imagem e as informações de URI do repositório que o próximo estágio deve utilizar.

1. Escolha **Save (Salvar)** na tela de ação. Escolha **Done (Concluído)** na tela de estágio. Escolha **Save (Salvar)** no pipeline. Uma mensagem mostra a regra do Amazon CloudWatch Events a ser criada para a ação de origem do Amazon ECR.

**Como conectar os artefatos de origem à ação de implantação**

1. Selecione **Editar** no estágio de implantação e escolha o ícone para editar a ação **Amazon ECS (azul/verde)**.

1. Role até a parte inferior do painel. Em **Input artifacts (Artefatos de entrada)**, selecione **Add (Adicionar)**. Adicione o artefato de origem do novo repositório do Amazon ECR (por exemplo, `MyImage`).

1. Em **Definição de Tarefa **SourceArtifact****, escolha e verifique **taskdef.json** se foi inserido.

1. Em **AWS CodeDeploy AppSpec Arquivo **SourceArtifact****, escolha e verifique se foi **appspec.yaml** inserido.

1. Em **Atualizar dinamicamente a imagem de definição de tarefa**, em **Input Artifact with Image** URI, **MyImage**escolha e insira o texto do espaço reservado usado no `taskdef.json` arquivo:. ** IMAGE1\$1NAME** Escolha **Salvar**.

1. No AWS CodePipeline painel, escolha **Salvar alteração do pipeline** e escolha **Salvar alteração**. Visualize seu pipeline atualizado.

   Depois que esse pipeline de exemplo é criado, a configuração da ação para as entradas do console é exibida na estrutura do pipeline da seguinte forma:

   ```
   "configuration": {
     "AppSpecTemplateArtifact": "SourceArtifact",
     "AppSpecTemplatePath": "appspec.yaml",
     "TaskDefinitionTemplateArtifact": "SourceArtifact",
     "TaskDefinitionTemplatePath": "taskdef.json",
     "ApplicationName": "codedeployapp",
     "DeploymentGroupName": "codedeploydeplgroup",
     "Image1ArtifactName": "MyImage",
     "Image1ContainerName": "IMAGE1_NAME"
   },
   ```

1. Para enviar suas alterações e iniciar uma compilação do pipeline, selecione **Liberar alteração** e, depois, **Liberar**.

1. Escolha a ação de implantação para visualizá-la CodeDeploy e ver o progresso da mudança de tráfego.
**nota**  
Você pode ver uma etapa de implantação que mostra um tempo de espera opcional. Por padrão, CodeDeploy espera uma hora após uma implantação bem-sucedida antes de encerrar o conjunto de tarefas original. Você pode usar esse tempo para reverter ou encerrar a tarefa, mas a sua implantação só será concluída quando o conjunto de tarefas for encerrado.

## Etapa 7: Realizar uma alteração no pipeline e verificar a implantação
<a name="tutorials-ecs-ecr-codedeploy-update"></a>

Faça uma alteração na imagem e, depois, envie-a ao repositório do Amazon ECR. Deste modo, a execução de seu pipeline é acionada. Verifique se a alteração da imagem de origem foi implantada.