

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

# CodePipeline tutoriais
<a name="tutorials"></a>

Depois de concluir as etapas[Começando com CodePipeline](getting-started-codepipeline.md), você pode experimentar um dos AWS CodePipeline tutoriais neste guia do usuário.

**Topics**
+ [Tutorial: Implante em instâncias do Amazon EC2 com CodePipeline](tutorials-ec2-deploy.md)
+ [Tutorial: Crie e envie uma imagem do Docker para o Amazon ECR com CodePipeline (tipo V2)](tutorials-ecr-build-publish.md)
+ [Tutorial: implante no Amazon EKS com CodePipeline](tutorials-eks-deploy.md)
+ [Tutorial: Criar um pipeline que executa comandos com computação (tipo V2)](tutorials-commands.md)
+ [Tutorial: Usar tags do Git para iniciar o pipeline](tutorials-github-tags.md)
+ [Tutorial: Filtrar nomes de ramificação para solicitações pull a fim de iniciar o pipeline (tipo V2)](tutorials-github-featurebranches.md)
+ [Tutorial: Usar variáveis no nível do pipeline](tutorials-pipeline-variables.md)
+ [Tutorial: Criar um pipeline simples (bucket do S3)](tutorials-simple-s3.md)
+ [Tutorial: criar um pipeline simples (CodeCommit repositório)](tutorials-simple-codecommit.md)
+ [Tutorial: Criar um pipeline de quatro estágios](tutorials-four-stage-pipeline.md)
+ [Tutorial: configurar uma regra de CloudWatch eventos para receber notificações por e-mail sobre mudanças no estado do pipeline](tutorials-cloudwatch-sns-notifications.md)
+ [Tutorial: crie um pipeline que crie e teste seu aplicativo Android com AWS Device Farm](tutorials-codebuild-devicefarm.md)
+ [Tutorial: crie um pipeline que teste seu aplicativo iOS com AWS Device Farm](tutorials-codebuild-devicefarm-S3.md)
+ [Tutorial: Criar um pipeline que realiza a implantação no Service Catalog](tutorials-S3-servicecatalog.md)
+ [Tutorial: Crie um pipeline com AWS CloudFormation](tutorials-cloudformation.md)
+ [Tutorial: criar um pipeline que usa variáveis das ações de AWS CloudFormation implantação](tutorials-cloudformation-action.md)
+ [Tutorial: Implantação padrão do Amazon ECS com CodePipeline](ecs-cd-pipeline.md)
+ [Tutorial: Crie um pipeline com uma fonte e ECS-to-CodeDeploy implantação do Amazon ECR](tutorials-ecs-ecr-codedeploy.md)
+ [Tutorial: Criar um pipeline que implanta uma skill do Amazon Alexa](tutorials-alexa-skills-kit.md)
+ [Tutorial: Criar um pipeline que usa o Amazon S3 como um provedor de implantação](tutorials-s3deploy.md)
+ [Tutorial: Crie um pipeline que publique seu aplicativo sem servidor no AWS Serverless Application Repository](tutorials-serverlessrepo-auto-publish.md)
+ [Tutorial: implantações da função Lambda com CodePipeline](tutorials-lambda-deploy.md)
+ [Tutorial: Usar variáveis com ações de invocação do Lambda](tutorials-lambda-variables.md)
+ [Tutorial: use uma ação de AWS Step Functions invocação em um pipeline](tutorials-step-functions.md)
+ [Tutorial: Crie um pipeline que use AWS AppConfig como provedor de implantação](tutorials-AppConfig.md)
+ [Tutorial: use o clone completo com uma fonte de GitHub pipeline](tutorials-github-gitclone.md)
+ [Tutorial: use o clone completo com uma fonte de CodeCommit pipeline](tutorials-codecommit-gitclone.md)
+ [Tutorial: criar um pipeline com ações AWS CloudFormation StackSets de implantação](tutorials-stackset-deployment.md)
+ [Tutorial: criar uma regra de verificação de variável para um pipeline como uma condição de entrada](tutorials-varcheckrule.md)

# Tutorial: Implante em instâncias do Amazon EC2 com CodePipeline
<a name="tutorials-ec2-deploy"></a>

Este tutorial ajuda você a criar uma ação de implantação CodePipeline que implanta seu código em instâncias que você configurou no Amazon EC2.

**nota**  
Como parte da criação de um pipeline no console, um bucket de artefatos S3 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**  
A ação de implantação `EC2` está disponível somente para pipelines do tipo V2.

## Pré-requisitos
<a name="tutorials-ec2-deploy-prereqs"></a>

Para você usar este tutorial para criar seu pipeline de CD, alguns recursos precisam estar em operação. Veja aqui estão os itens que você precisa para começar:

**nota**  
Todos esses recursos devem ser criados na mesma AWS região.
+ Um repositório de controle de origem (este tutorial usa GitHub) onde você adicionará um `script.sh` arquivo de amostra.
+ Você deve usar uma função CodePipeline de serviço existente que tenha sido atualizada com as permissões para essa ação. Para atualizar o perfil de serviço, consulte [Permissões de política do perfil de serviço para a ação de implantação do EC2](action-reference-EC2Deploy.md#action-reference-EC2Deploy-permissions-action).

Assim que você atender a esses pré-requisitos, poderá continuar com o tutorial e criar seu pipeline de CD.

## Etapa 1: Criar instâncias do Amazon EC2 Linux
<a name="tutorials-ec2-deploy-instances"></a>

Nesta etapa, você vai criar as instâncias do Amazon EC2 nas quais implantará uma aplicação de amostra. Como parte desse processo, crie uma função de instância no IAM, caso ainda não tenha criado uma função de instância na região onde deseja criar recursos.

**Como criar uma função de instância**

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 **EC2**. Em **Select your use case (Selecione seu caso de uso)**, escolha **EC2**. Escolha **Próximo**.

1. Procure e selecione a política chamada **`AmazonSSMManagedEC2InstanceDefaultPolicy`**. 

1. Procure e selecione a política chamada **`AmazonSSMManagedInstanceCore`**. Escolha **Próximo: tags**.

1. Selecione **Próximo: revisar**. Forneça um nome para a função (por exemplo, **EC2InstanceRole**).
**nota**  
Anote o nome da função para a próxima etapa. Escolha essa função ao criar a instância.
**nota**  
Você adicionará permissões a essa função para permitir o acesso ao bucket de artefato do S3 para o pipeline depois da criação do pipeline.

   Selecione **Criar perfil**.

**Para executar instâncias**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Na navegação lateral, escolha **Instâncias** e selecione **Executar instâncias** na parte superior da página.

1. Em **Nome**, insira **MyInstances**. Isso atribui à instância uma tag **Chave** de **Name** e uma tag **Valor** de **MyInstances**. 

1. Em **Imagens do aplicativo e do sistema operacional (Amazon Machine Image)**, localize a opção **Amazon Linux** AMI com o AWS logotipo e verifique se ela está selecionada. (Essa AMI é descrita como AMI do Amazon Linux 2 (HVM) e é identificada como “Elegível para o nível gratuito”.)

1. Em **Tipo de instância**, selecione o tipo `t2.micro` elegível para o nível gratuito como configuração de hardware para a instância.

1. Na seção **Par de chaves (login)**, selecione um par de chaves ou crie um. 

1. Em **Configurações de rede**, verifique se o status é **Habilitar**.

1. Expanda **Advanced details** (Detalhes avançados). Em **Perfil de instância do IAM**, selecione o perfil do IAM criado no procedimento anterior (por exemplo, **EC2InstanceRole**).
**nota**  
Não deixe a função da instância em branco, pois isso cria uma função padrão e não seleciona a função criada por você.

1. Em **Resumo**, em **Número de instâncias**, insira `2`.

1. Escolha **Iniciar instância**. 

1. É possível visualizar o status da ativação na página **Instâncias**. Ao executar uma instância, seu estado inicial é `pending`. Após o início da instância, seu estado muda para `running` e ela recebe um nome DNS público. (Se a coluna do **Public DNS (DNS público)** não for exibida, selecione o ícone **Show/Hide (Exibir/Ocultar)** e **Public DNS (DNS público)**.)

## Etapa 2: adicionar permissões de bucket do artefato à função de instância do EC2
<a name="tutorials-ec2-deploy-role-s3"></a>

Atualize a função de instância do EC2 criada para a instância a fim de permitir que ela acesse o bucket de artefato do pipeline. 

**nota**  
Ao criar a instância, você cria ou usa uma função de instância do EC2 existente. Para evitar `Access Denied` erros, você deve adicionar permissões de bucket do S3 à função da instância para conceder permissões de instância ao bucket de CodePipeline artefatos. Crie uma função padrão ou atualize a função existente com a permissão `s3:GetObject` limitada ao bucket de artefato da região do pipeline.

1. Navegue até seu pipeline no CodePipeline console. Escolha **Configurações**. Exiba o nome e o local do armazenamento de artefato de um pipeline existente. Anote o nome do recurso da Amazon (ARN) do bucket de artefato e o copie.

1. Navegue até o console do IAM e escolha **Roles** (Funções). Selecione a função de instância que você criou na etapa 1 deste tutorial.

1. Na guia **Permissions (Permissões)**, escolha **Add inline policy (Adicionar política em linha)**.

1. Adicione o JSON a seguir ao documento da política, substituindo o valor no campo `Resource` pelo ARN do bucket.

   ```
   {
       "Effect": "Allow",
       "Principal": "*",
       "Action": "s3:GetObject",
       "Resource": "arn:aws:s3:::BucketName"
   }
   ```

1. Selecione **Atualizar**.

## Etapa 3: Adicionar um arquivo de script ao repositório
<a name="tutorials-ec2-deploy-file"></a>

Cole esse texto de amostra a fim de criar o arquivo `script.sh` para a etapa pós-script da implantação.

```
echo "Hello World!" 
```

**Para adicionar um arquivo `script.sh` ao repositório de origem**

1. Abra um editor de texto e, em seguida, copie e cole o arquivo acima em um novo arquivo.

1. Confirme e envie o arquivo `script.sh` para o repositório de origem.

   1. Adicione o arquivo.

      ```
      git add .
      ```

   1. Confirme a alteração.

      ```
      git commit -m "Adding script.sh."
      ```

   1. Envie a confirmação.

      ```
      git push
      ```

   Anote o caminho no repositório.

   ```
   /MyDemoRepo/test/script.sh
   ```

## Etapa 4: Criação do pipeline
<a name="tutorials-ec2-deploy-pipeline"></a>

Use o CodePipeline assistente para criar seus estágios de funil e conectar seu repositório de origem.

**Para criar o pipeline**

1. Abra o CodePipeline console em [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

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 **MyPipeline**.

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 **Usar função de serviço existente** e, em seguida, escolha a função de CodePipeline serviço que foi atualizada com as permissões necessárias para essa ação. Para configurar sua função CodePipeline de serviço para essa ação, consulte[Permissões de política do perfil de serviço para a ação de implantação do EC2](action-reference-EC2Deploy.md#action-reference-EC2Deploy-permissions-action).

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

1. Na página **Etapa 3: Adicionar etapa de origem**, adicione uma etapa de origem:

   1. Em **Provedor de origem**, escolha **GitHub (via GitHub aplicativo)**.

   1. Em **Conexão**, escolha uma conexão existente ou crie uma nova. Para criar ou gerenciar uma conexão para sua ação GitHub de origem, consulte[GitHub conexões](connections-github.md).

   1. Em **Repository name (Nome do repositório)**, selecione o nome do seu repositório do GitHub .

   Escolha **Próximo**.

1. Na página **Etapa 4: Adicionar etapa de compilação**, escolha **Ignorar**.

1. Na página **Etapa 5: Adicionar etapa de implantação**, escolha **EC2**.  
![\[\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/ec2deploy-action.png)

   1. Em **Diretório de destino**, insira o diretório na instância na qual você deseja implantar, como `/home/ec2-user/testhelloworld`.
**nota**  
Especifique o diretório de implantação que você deseja que a ação use na instância. A ação automatizará a criação do diretório especificado na instância como parte da implantação.

   1. Para **PostScript**, insira o caminho e o nome do arquivo para seu script, como`test/script.sh`.

   1. Escolha **Próximo**.

1. Na página **Step 6: Review**, revise a configuração do pipeline e escolha **Create pipeline** para criá-lo.  
![\[\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/ec2deploy-pipeline.png)

1. Depois que o pipeline for executado com êxito, escolha **Visualizar detalhes** para exibir os logs na ação a fim de exibir a saída da ação da computação gerenciada.  
![\[\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/ec2deploy-logs.png)  
![\[\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/ec2deploy-logs2.png)

## Etapa 5: Teste seu pipeline
<a name="tutorials-ec2-deploy-test"></a>

Seu pipeline deve ter tudo para executar uma implantação AWS contínua end-to-end nativa. Agora, teste a funcionalidade enviando uma alteração de código ao repositório de origem.

**Para testar o pipeline**

1. Faça uma alteração no código no repositório de origem configurado, confirme e envie a alteração.

1. Abra o CodePipeline console em [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

1. Escolha o pipeline na lista.

1. Observe a evolução do pipeline pelos respectivos estágios. O pipeline deve ser concluído, e a ação implanta o script nas instâncias.

1. Para obter mais informações sobre solução de problemas, consulte [A ação Implantar do EC2 falha com uma mensagem de erro `No such file`](troubleshooting.md#troubleshooting-ec2-deploy).

# Tutorial: Crie e envie uma imagem do Docker para o Amazon ECR com CodePipeline (tipo V2)
<a name="tutorials-ecr-build-publish"></a>

Este tutorial ajuda você a criar uma ação de compilação CodePipeline que executa e envia sua imagem do Docker para o Amazon ECR após uma alteração no código-fonte. Este tutorial também mostra como adicionar uma ação de implantação do Amazon ECS que implanta a imagem enviada por push.

**Importante**  
Como parte da criação de um pipeline no console, um bucket de artefatos S3 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 ECRBuild AndPublish criação de um CodePipeline pipeline com um repositório de GitHub origem e uma ação padrão do Amazon ECS para implantação em um cluster do Amazon ECS. Para ver um tutorial que usa um pipeline com um repositório de imagens ECR como fonte para uma ação de implantação CodeDeploy azul/verde do Amazon ECS em, consulte. CodePipeline [Tutorial: Crie um pipeline com uma fonte e ECS-to-CodeDeploy implantação do Amazon ECR](tutorials-ecs-ecr-codedeploy.md)

**Importante**  
Essa ação usa CodeBuild computação CodePipeline gerenciada para executar comandos em um ambiente de compilação. A execução da ação Comandos incorrerá em cobranças separadas no AWS CodeBuild.

## Pré-requisitos
<a name="tutorials-ecr-build-publish-prereqs"></a>

Para você usar este tutorial para criar seu pipeline de CD, alguns recursos precisam estar em operação. Veja aqui estão os itens que você precisa para começar:

**nota**  
Todos esses recursos devem ser criados na mesma AWS região.
+ Um repositório de controle de código-fonte (este tutorial usa GitHub) onde você adicionará o seguinte neste tutorial:
  + Na Etapa 1, você adicionará uma amostra do Dockerfile ao seu repositório de origem como artefato de entrada para a ECRBuild AndPublish ação de compilação em. CodePipeline
  + Na Etapa 2, você adicionará um arquivo imagedefinitions.json de amostra ao seu repositório de origem como requisito para a ação de implantação padrão do Amazon ECS em. CodePipeline
+ Um repositório de imagens do Amazon ECR que contém uma imagem compilada por você a partir do Dockerfile. Para obter mais informações, consulte [Criação de um repositório](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) e [Envio de uma imagem por push](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html) no *Guia do usuário do Amazon Elastic Container Registry*.
+ Um cluster e um serviço do Amazon ECS criados na mesma região do repositório de imagens. Para obter mais informações, consulte [Criação de um cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create_cluster.html) e [Criação de um serviço](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-service.html) no *Guia do desenvolvedor do Amazon Elastic Container Service*.

Assim que você atender a esses pré-requisitos, poderá continuar com o tutorial e criar seu pipeline de CD.

## Etapa 1: Adicionar um Dockerfile ao repositório de origem
<a name="tutorials-ecr-build-publish-file"></a>

Este tutorial usa a ECRBuild AndPublish ação para criar sua imagem do Docker e enviar a imagem para o Amazon ECR. A ação de computação gerenciada é CodePipeline usada CodeBuild para executar os comandos de login e envio de imagem do ECR. Você não precisa adicionar um `buildspec.yml` arquivo ao seu repositório de código-fonte para saber CodeBuild como fazer isso. Você só fornece o Dockerfile no repositório da mesma forma que faz para este exemplo.

Cole esse texto de amostra para criar o arquivo `Dockerfile`. Este Dockerfile de amostra é o mesmo da amostra usada nas instruções de imagem do ECR nos pré-requisitos.

```
FROM public.ecr.aws/amazonlinux/amazonlinux:latest

# Install dependencies
RUN yum update -y && \
 yum install -y httpd

# Install apache and write hello world message
RUN echo 'Hello World!' > /var/www/html/index.html

# Configure apache
RUN echo 'mkdir -p /var/run/httpd' >> /root/run_apache.sh && \
 echo 'mkdir -p /var/lock/httpd' >> /root/run_apache.sh && \
 echo '/usr/sbin/httpd -D FOREGROUND' >> /root/run_apache.sh && \
 chmod 755 /root/run_apache.sh

EXPOSE 80

CMD /root/run_apache.sh
```

**Para adicionar um arquivo `Dockerfile` ao repositório de origem**

1. Abra um editor de texto e, em seguida, copie e cole o Dockerfile acima em um novo arquivo.

1. Confirme e envie o arquivo `Dockerfile` para o repositório de origem.

   1. Adicione o arquivo.

      ```
      git add .
      ```

   1. Confirme a alteração.

      ```
      git commit -m "Adding Dockerfile."
      ```

   1. Envie a confirmação.

      ```
      git push
      ```

   Não se esqueça de colocar o arquivo no nível raiz do repositório.

   ```
   / Dockerfile
   ```

## Etapa 2: Adicionar um arquivo imagedefinitions.json ao repositório de origem
<a name="w2aac13b9c15"></a>

Este tutorial usa a ação de implantação padrão do Amazon ECS CodePipeline para implantar seu contêiner em seu cluster do Amazon ECS. A ação de implantação padrão do Amazon ECS exige um arquivo imagedefinitions.json contendo o nome e o URI da imagem. Para obter mais informações sobre o arquivo imagedefinitions.json, consulte [Arquivo imagedefinitions.json para ações de implantação padrão do Amazon ECS](file-reference.md#pipelines-create-image-definitions).

Cole esse texto de amostra para criar o arquivo `imagedefinitions.json`. Use o nome no Dockerfile, como `hello-world`, e use o URI do repositório do Amazon ECR onde a imagem está armazenada.

```
[
  {
    "name": "hello-world",
    "imageUri": "ACCOUNT-ID.dkr.ecr.us-east-1.amazonaws.com/actions/image-repo"
  }
]
```

**Para adicionar um arquivo `imagedefinitions.json` ao repositório de origem**

1. Abra um editor de texto e, em seguida, copie e cole o exemplo acima em um novo arquivo.

1. Confirme e envie o arquivo `imagedefinitions.json` para o repositório de origem.

   1. Adicione o arquivo.

      ```
      git add .
      ```

   1. Confirme a alteração.

      ```
      git commit -m "Adding imagedefinitions.json."
      ```

   1. Envie a confirmação.

      ```
      git push
      ```

   Não se esqueça de colocar o arquivo no nível raiz do repositório.

   ```
   / imagedefinitions.json
   ```

## Etapa 3: Criação do pipeline
<a name="tutorials-ecr-build-publish-pipeline"></a>

Use o CodePipeline assistente para criar seus estágios de funil e conectar seu repositório de origem.

**Para criar o pipeline**

1. Abra o CodePipeline console em [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

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 **MyPipeline**.

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. Na página **Etapa 3: Adicionar etapa de origem**, adicione uma etapa de origem:

   1. Em **Provedor de origem**, escolha **GitHub (via GitHub aplicativo)**.

   1. Em **Conexão**, escolha uma conexão existente ou crie uma nova. Para criar ou gerenciar uma conexão para sua ação GitHub de origem, consulte[GitHub conexões](connections-github.md).

   1. Em **Repository name (Nome do repositório)**, selecione o nome do seu repositório do GitHub .

   1. Em **Ramificação padrão**, selecione a ramificação que você deseja especificar quando o pipeline é iniciado manualmente ou com um evento de origem que não seja uma tag do Git. Se a origem da alteração não for o gatilho ou se a execução de um pipeline tiver sido iniciada manualmente, a alteração usada será a confirmação HEAD da ramificação padrão.

   Escolha **Próximo**.

1. Na página **Etapa 4: Adicionar estágio de compilação**, escolha **Outros provedores de compilação **ECRBuildAndPublish****.  
![\[\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/ecrbuild-wizard.png)

   1. Para **Nome do repositório do ECR**, escolha o repositório de imagens.

   1. 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 página **Etapa 6: Adicionar etapa de implantação**, escolha **Ignorar etapa de implantação**. Você adicionará a ação do ECS na etapa a seguir.

1. Na página **Etapa 7: Revisão**, revise a configuração do pipeline e escolha **Create pipeline** para criar o pipeline.

1. Edite o pipeline para adicionar a ação de implantação do Amazon ECS ao pipeline:

   1. No canto superior direito, escolha **Edit (Editar)**.

   1. Na parte inferior do diagrama, escolha **\$1 Add stage (\$1 Adicionar estágio)**. Em **Nome do estágio**, insira um nome, como **Deploy**.

   1. Escolha **\$1 Add action group (Adicionar grupo de ação)**.

   1. Em **Nome da ação**, insira um nome. 

   1. Em **Provedor de ação**, escolha Amazon ECR. Permita que **Region (Região)** seja definida para a região do pipeline.

   1. Em **Artefatos de entrada**, escolha o artefato do estágio de origem, como `SourceArtifact`. 

   1. Em **Nome do cluster**, escolha o cluster do Amazon ECS no qual o serviço está em execução.

   1. Para **Nome do serviço**, escolha o serviço a ser atualizado.

   1. Escolha **Salvar**.

   1. No estágio que está editando, escolha **Done (Concluído)**. No painel do AWS CodePipeline , escolha **Save (Salvar)** e selecione **Save (Salvar)** na mensagem de aviso.

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

1. Depois que o pipeline for executado, exiba a estrutura e o status do pipeline.  
![\[\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/ecrbuild-ecsaction.png)

1. Depois que o pipeline for executado com êxito, escolha **Visualizar detalhes** para exibir os logs na ação a fim de exibir a saída da ação da computação gerenciada.  
![\[\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/ecrbuild-logs.png)

1. Solucione o problema de qualquer falha. Por exemplo, a ação de implantação do ECS poderá falhar se o arquivo imagedefinitions.json não estiver no repositório de origem. Este é um exemplo da mensagem de erro exibida quando o arquivo imagedefinitions.json não é encontrado.   
![\[\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/ecrbuild-ecsdebug.png)

## Etapa 4: Testar o pipeline
<a name="tutorials-ecr-build-publish-test"></a>

Seu pipeline deve ter tudo para executar uma implantação AWS contínua end-to-end nativa. Agora, teste a funcionalidade enviando uma alteração de código ao repositório de origem.

**Para testar o pipeline**

1. Faça uma alteração no código no repositório de origem configurado, confirme e envie a alteração.

1. Abra o CodePipeline console em [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

1. Escolha o pipeline na lista.

1. Observe a evolução do pipeline pelos respectivos estágios. O pipeline deve ser concluído e a ação, enviar por push a imagem do Docker que foi criada a partir da alteração do código.

# Tutorial: implante no Amazon EKS com CodePipeline
<a name="tutorials-eks-deploy"></a>

Este tutorial ajuda você a criar uma ação de implantação CodePipeline que implanta seu código em um cluster que você configurou no Amazon EKS.

A ação do EKS oferece suporte a clusters do EKS públicos e privados. Os clusters privados são do tipo recomendado pelo EKS. No entanto, ambos os tipos são compatíveis.

**nota**  
Como parte da criação de um pipeline no console, um bucket de artefatos S3 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**  
Essa ação usa CodeBuild computação CodePipeline gerenciada para executar comandos em um ambiente de compilação. A execução da ação Comandos incorrerá em cobranças separadas no AWS CodeBuild.

**nota**  
A ação de implantação `EKS` está disponível somente para pipelines do tipo V2.

## Pré-requisitos
<a name="tutorials-eks-deploy-prereqs"></a>

Para você usar este tutorial para criar seu pipeline de CD, alguns recursos precisam estar em operação. Veja aqui estão os itens que você precisa para começar:

**nota**  
Todos esses recursos devem ser criados na mesma AWS região.
+ Um repositório de controle de origem (este tutorial usa GitHub) onde você adicionará um `deployment.yaml` arquivo de amostra.
+ Você deve usar uma função CodePipeline de serviço existente que você atualizará com as permissões para essa ação usando [Etapa 3: atualizar a política CodePipeline de função de serviço no IAM](#tutorials-eks-deploy-role) abaixo. As permissões necessárias se baseiam no tipo de cluster que você criou. Para obter mais informações, consulte [Permissões de política de perfil de serviço](action-reference-EKS.md#action-reference-EKS-service-role).
+ Uma imagem de trabalho e uma tag de repositório que você enviou por push para o ECR ou o repositório de imagens.

Assim que você atender a esses pré-requisitos, poderá continuar com o tutorial e criar seu pipeline de CD.

## Etapa 1: (Opcional) Criar um cluster no Amazon EKS
<a name="tutorials-eks-deploy-cluster"></a>

Você pode optar por criar um cluster do EKS com um endpoint público ou privado. 

Nas etapas a seguir, você criará um cluster público ou privado no EKS. Esta etapa será opcional se você já tiver criado o cluster.

### Criar um cluster público no Amazon EKS
<a name="tutorials-eks-deploy-cluster-public"></a>

Nesta etapa, você cria um cluster no EKS.

**Criar um cluster público**

1. Abra o console do EKS e escolha **Criar cluster**.

1. Em **Nome**, nomeie o cluster. Escolha **Próximo**.

1. Escolha **Criar**.

### Criar um cluster privado no Amazon EKS
<a name="tutorials-eks-deploy-cluster-private"></a>

Se você optar por criar um cluster com um endpoint privado, não se esqueça de conectar apenas as sub-redes privadas e verificar se elas têm conexão com a Internet.

Siga as próximas cinco sub-etapas para criar um cluster com um endpoint privado.

**Criar uma VPC no console**

1. Abra o console da VPC e escolha **Criar VPC**.

1. Em **Configurações da VPC**, escolha **VPC e mais**.

1. Opte por criar uma sub-rede pública e 4 privadas. Escolha **Criar VPC**.

1. Na página de sub-redes, escolha **Privada**. 

**Determinar as sub-redes privadas na VPC**

1. Navegue até a VPC e escolha a ID da VPC para abrir a página de detalhes da VPC.

1. Na página Detalhes da VPC, escolha a guia **Mapa de recursos**.

1. Consulte o diagrama e anote as sub-redes privadas. As sub-redes são exibidas com rótulos para indicar o status público ou privado, e cada sub-rede é mapeada para uma tabela de rotas.  
![\[\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/eks-deploy-subnets.png)

   Um cluster privado terá todas as sub-redes privadas.

1. Crie uma sub-rede pública para hospedar o gateway NAT. Só é possível anexar um gateway da Internet a uma VPC de cada vez.

**Criar um gateway NAT em uma sub-rede pública**

1. Na sub-rede pública, crie um gateway NAT. Navegue até o console da VPC e escolha **Gateways da Internet**. Escolha **Criar gateway da Internet**.

1. Em Nome, digite um nome para o gateway da internet. Escolha **Criar gateway da Internet**.

Atualize a tabela de rotas da sub-rede privada a fim de direcionar o tráfego para o gateway NAT.

**Adicionar o gateway NAT às tabelas de rotas das sub-redes privadas**

1. Navegue até o console da VPC e escolha **Sub-redes**.

1. Para cada sub-rede privada, escolha-a e, em seguida, escolha a tabela de rotas dessa sub-rede na página de detalhes. Escolha **Editar tabela de rotas**. 

1. Atualize a tabela de rotas da sub-rede privada a fim de direcionar o tráfego de internet para o gateway NAT. Selecione **Adicionar rota**. Escolha o **Gateway NAT** dentre as opções a serem adicionadas. Escolha o gateway da internet criado por você.

1. Para a sub-rede pública, crie a tabela de rotas personalizada. Verifique se a lista de controle de acesso (ACL) da rede da sub-rede pública permite o tráfego de entrada vindo da sub-rede privada.

1. Escolha **Salvar alterações**.

Nesta etapa, você cria um cluster no EKS.

**Criar um cluster privado**

1. Abra o console do EKS e escolha **Criar cluster**.

1. Em **Nome**, nomeie o cluster. Escolha **Próximo**.

1. Especifique a VPC e as outras informações de configuração. Escolha **Criar**.

O cluster do EKS pode ser um cluster público ou privado. Esta etapa é para clusters que tenham APENAS um endpoint privado. Verifique se o cluster é privado.

## Etapa 2: Configurar o cluster privado no Amazon EKS
<a name="tutorials-eks-deploy-cluster-private-configure"></a>

Esta etapa será aplicável somente se você tiver criado um cluster privado. Esta etapa é para clusters que tenham APENAS um endpoint privado. 

**Configure seu cluster**

1. Só anexe sub-redes privadas no cluster do EKS na guia **Redes**. Anexe as sub-redes privadas capturadas na seção **Determinar as sub-redes privadas na VPC** em [Etapa 1: (Opcional) Criar um cluster no Amazon EKS](#tutorials-eks-deploy-cluster).

1. Certifique-se de que as sub-redes privadas tenham acesso à Internet, pois CodePipeline armazena e recupera artefatos do bucket de artefatos do S3 para seu pipeline.

## Etapa 3: atualizar a política CodePipeline de função de serviço no IAM
<a name="tutorials-eks-deploy-role"></a>

Nesta etapa, você atualizará uma função de CodePipeline serviço existente, por exemplo`cp-service-role`, com as permissões exigidas CodePipeline para se conectar ao seu cluster. Se você não tiver uma função existente, crie uma nova.

Atualize sua função CodePipeline de serviço com as etapas a seguir.

**Para atualizar sua política CodePipeline de função de serviço**

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. Pesquise sua função CodePipeline de serviço, como`cp-service-role`.

1. Adicione uma nova política em linha.

1. No **Editor de políticas**, insira a opção a seguir.
   + Para um cluster público, adicione as permissões a seguir.

------
#### [ JSON ]

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
     
         "Statement": [
             {
                 "Sid": "EksClusterPolicy",
                 "Effect": "Allow",
                 "Action": "eks:DescribeCluster",
                 "Resource": "arn:aws:eks:us-east-1:111122223333:cluster/my-cluster"
             },
             {
                 "Sid": "EksVpcClusterPolicy",
                 "Effect": "Allow",
                 "Action": [
                     "ec2:DescribeDhcpOptions",
                     "ec2:DescribeNetworkInterfaces",
                     "ec2:DescribeRouteTables",
                     "ec2:DescribeSubnets",
                     "ec2:DescribeSecurityGroups",
                     "ec2:DescribeVpcs"
                 ],
                 "Resource": [
                     "*"
                 ]
             }
         ]
     }
     ```

------
   + Para um cluster privado, adicione as permissões a seguir. Os clusters privados exigirão permissões adicionais para a VPC, se aplicável.

------
#### [ JSON ]

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
     
         "Statement": [
             {
                 "Sid": "EksClusterPolicy",
                 "Effect": "Allow",
                 "Action": "eks:DescribeCluster",
                 "Resource": "arn:aws:eks:us-east-1:111122223333:cluster/my-cluster"
             },
             {
                 "Sid": "EksVpcClusterPolicy",
                 "Effect": "Allow",
                 "Action": [
                     "ec2:DescribeDhcpOptions",
                     "ec2:DescribeNetworkInterfaces",
                     "ec2:DescribeRouteTables",
                     "ec2:DescribeSubnets",
                     "ec2:DescribeSecurityGroups",
                     "ec2:DescribeVpcs"
                 ],
                 "Resource": [
                     "*"
                 ]
             },
             {
                 "Effect": "Allow",
                 "Action": "ec2:CreateNetworkInterface",
                 "Resource": "*",
                 "Condition": {
                     "StringEqualsIfExists": {
                         "ec2:Subnet": [
                             "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-03ebd65daeEXAMPLE",
                             "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-0e377f6036EXAMPLE",
                             "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-0db658ba1cEXAMPLE",
                             "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-0db658ba1cEXAMPLE"
                         ]
                     }
                 }
             },
             {
                 "Effect": "Allow",
                 "Action": "ec2:CreateNetworkInterfacePermission",
                 "Resource": "*",
                 "Condition": {
                     "ArnEquals": {
                         "ec2:Subnet": [
                             "arn:aws:ec2:us-east-1:111122223333:subnet/subnet-03ebd65daeEXAMPLE",
                             "arn:aws:ec2:us-east-1:111122223333:subnet/subnet-0e377f6036EXAMPLE",
                             "arn:aws:ec2:us-east-1:111122223333:subnet/subnet-0db658ba1cEXAMPLE",
                             "arn:aws:ec2:us-east-1:111122223333:subnet/subnet-0db658ba1cEXAMPLE"
                         ]
                     }
                 }
             },
             {
                 "Effect": "Allow",
                 "Action": "ec2:DeleteNetworkInterface",
                 "Resource": "*",
                 "Condition": {
                     "StringEqualsIfExists": {
                         "ec2:Subnet": [
                             "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-03ebd65daeEXAMPLE",
                             "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-0e377f6036EXAMPLE",
                             "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-0db658ba1cEXAMPLE",
                             "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-0db658ba1cEXAMPLE"
                         ]
                     }
                 }
             }
         ]
     }
     ```

------

1. Escolha **Atualizar política**.

## Etapa 4: criar uma entrada de acesso para a função CodePipeline de serviço
<a name="tutorials-eks-deploy-access-entry"></a>

Nesta etapa, você cria uma entrada de acesso em seu cluster que adicionará a função de CodePipeline serviço que você atualizou na Etapa 3, junto com uma política de acesso gerenciado.

1. Abra o console do EKS e navegue até o cluster.

1. Escolha a guia **Acesso**.

1. Em **Entradas de acesso do IAM**, escolha **Criar entrada de acesso**.

1. No **ARN da entidade principal do IAM**, insira a função recém-atualizada por você para a ação, como `cp-service-role`. Escolha **Próximo**.

1. Na página **Etapa 2: Adicionar política de acesso**, em **Nome da política**, escolha a política gerenciada para acesso, como `AmazonEKSClusterAdminPolicy`. Escolha **Add policy**. Escolha **Próximo**.
**nota**  
Essa é a política que a CodePipeline ação usa para falar com o Kubernetes. Como prática recomendada, para diminuir o escopo das permissões na política com o privilégio mínimo em vez da política administrativa, anexe uma política personalizada.

1. Na página de revisão, escolha **Criar**.

## Etapa 5: Criar um repositório de origem e adicionar os arquivos de configuração `helm chart`
<a name="tutorials-eks-deploy-source"></a>

Nesta etapa, você cria um arquivo de configuração que seja indicado para a ação (arquivos de manifesto do Kubernetes ou chart do Helm) e armazena o arquivo de configuração no repositório de origem. Use o arquivo indicado para a configuração. Para obter mais informações, consulte [https://kubernetes. ](https://kubernetes.io/docs/reference/kubectl/quick-reference/)io/docs/reference/kubectl/quick[-reference/ ou https://helm. sh/docs/topics/charts](https://helm.sh/docs/topics/charts/)/.
+ Para Kubernetes, use um arquivo de manifesto.
+ Para Helm, use um chart do Helm.

1. Crie ou use um GitHub repositório existente.

1. Crie uma nova estrutura no repositório para os arquivos de chart do Helm, conforme mostrado no exemplo abaixo.

   ```
   mychart
   |-- Chart.yaml
   |-- charts
   |-- templates
   |   |-- NOTES.txt
   |   |-- _helpers.tpl
   |   |-- deployment.yaml
   |   |-- ingress.yaml
   |   `-- service.yaml
   `-- values.yaml
   ```

1. Adicione o arquivo ao nível raiz do repositório.

## Etapa 6: Criação do pipeline
<a name="tutorials-eks-deploy-pipeline"></a>

Use o CodePipeline assistente para criar seus estágios de funil e conectar seu repositório de origem.

**Para criar o pipeline**

1. Abra o CodePipeline console em [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

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 **MyEKSPipeline**.

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 **Perfil de serviço**, escolha o perfil de serviço atualizado por você na etapa 3.

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

1. Na página **Etapa 3: Adicionar estágio de origem**, em **Provedor de origem**, escolha **criar uma conexão com seu GitHub repositório**.

1. Na página **Etapa 4: Adicionar etapa de compilação**, escolha **Ignorar**.

1. Na página **Etapa 5: Adicionar etapa de implantação**, escolha **Amazon EKS**.  
![\[Deploy configuration form with Helm selected, showing fields for release name and chart location.\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/eks-action-example.png)

   1. Em **Tipo de configuração da implantação**, escolha **Helm**.

   1. Em **Local de chart do Helm**, insira o nome da versão, como `my-release`. Para **Local de chart do Helm**, insira o caminho dos arquivos de chart do Helm, como `mychart`.

   1. Escolha **Próximo**.

1. Na página **Step 6: Review**, revise a configuração do pipeline e escolha **Create pipeline** para criá-lo.  
![\[\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/eks-deploy-pipeline.png)

1. Depois que o pipeline for executado com êxito, escolha **Visualizar detalhes** para exibir os logs na ação a fim de exibir a saída da ação.

# Tutorial: Criar um pipeline que executa comandos com computação (tipo V2)
<a name="tutorials-commands"></a>

Neste tutorial, você vai configurar um pipeline que realiza a execução contínua de comandos de compilação fornecidos usando a ação Commands em um estágio de compilação. Para ter mais informações sobre a ação Commands, consulte [Referência da ação Commands](action-reference-Commands.md).

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

## Pré-requisitos
<a name="tutorials-commands-prereq"></a>

Você já deve ter o seguinte:
+ Um GitHub repositório. Você pode usar o GitHub repositório em [Tutorial: use o clone completo com uma fonte de GitHub pipeline](tutorials-github-gitclone.md) que você criou.

## Etapa 1: criar arquivos de origem e enviar para seu GitHub repositório
<a name="tutorials-commands-push"></a>

Nesta seção, você cria e envia seus arquivos de origem de exemplo para o repositório que o pipeline usa para seu estágio de origem. Neste exemplo, você produz e envia o seguinte: 
+ Um arquivo `README.txt`.

**Como criar arquivos de origem**

1. Crie um arquivo com o seguinte texto:

   ```
   Sample readme file
   ```

1. Salve o arquivo como `README.txt`.

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

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

   ```
   README.txt
   ```

1. Para usar a linha de comando Git a partir de um repositório clonado no computador local:

   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 source files"
      ```

   1. Execute o seguinte comando para enviar os arquivos de seu repositório local para seu repositório do :

      ```
      git push
      ```

## Etapa 2: Criar o pipeline
<a name="tutorials-commands-pipeline"></a>

Nesta seção, você criará um pipeline com as seguintes ações:
+ Um estágio de origem com uma ação GitHub (via GitHub aplicativo) para o repositório em que os arquivos de origem são armazenados.
+ Um estágio de compilação com a ação Commands.

**Criar um pipeline 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 **MyCommandsPipeline**.

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.
**nota**  
Caso utilize um perfil de serviço já existente, será preciso incluir as permissões a seguir ao perfil de serviço para habilitar o uso da ação Commands. Restrinja as permissões ao nível de recurso do pipeline aplicando permissões baseadas em recurso na declaração de política do perfil de serviço. Para ter mais informações, consulte o exemplo de política em [Permissões de política de perfil de serviço](action-reference-Commands.md#action-reference-Commands-policy).  
registros: CreateLogGroup
registros: CreateLogStream
registros: PutLogEvents

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

1. Na página **Etapa 3: Adicionar etapa de origem**, adicione uma etapa de origem:

   1. Em **Provedor de origem**, escolha **GitHub (via GitHub aplicativo)**.

   1. Em **Conexão**, escolha uma conexão existente ou crie uma nova. Para criar ou gerenciar uma conexão para sua ação GitHub de origem, consulte[GitHub conexões](connections-github.md).

   1. Em **Nome do repositório**, escolha o nome do seu GitHub repositório.com. 

   1. Em **Ramificação padrão**, selecione a ramificação que você deseja especificar quando o pipeline é iniciado manualmente ou com um evento de origem que não seja uma tag do Git. Se a origem da alteração não for o gatilho ou se a execução de um pipeline tiver sido iniciada manualmente, a alteração usada será a confirmação HEAD da ramificação padrão. Você também pode especificar webhooks com filtragem (acionadores). Para obter mais informações, consulte [Automatizar a inicialização de pipelines usando gatilhos e filtragem](pipelines-triggers.md).

   Escolha **Próximo**.

1. Em **Etapa 4: adicionar estágio de compilação**, escolha **Comandos**.
**nota**  
A execução da ação Commands acarretará cobranças separadas em AWS CodeBuild.

   Insira os comandos a seguir: 

   ```
   ls
   echo hello world
   cat README.txt
   echo pipeline Execution Id is #{codepipeline.PipelineExecutionId}
   ```

   Escolha **Próximo**.  
![\[A página Etapa 4: Adicionar etapa de compilação de um novo pipeline com a ação Comandos.\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/commands-wizard-screen.png)

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 página **Etapa 6: Adicionar etapa de implantação**, escolha **Ignorar etapa de implantação** e aceite a mensagem de aviso escolhendo **Ignorar** novamente. 

   Escolha **Próximo**.

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

1. Como etapa final para criar a ação, adicione uma variável de ambiente à ação que resultará em uma variável de saída para a ação. Na ação Commands, selecione **Editar**. Na tela **Editar**, especifique um namespace de variável para sua ação inserindo `compute` no campo **Namespace de variável**.

   Adicione a variável CodeBuild `AWS_Default_Region` de saída e escolha **Adicionar variável**.  
![\[A página Editar para a ação Commands\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/commands-output-edit-var.png)

## Etapa 3: executar o pipeline e verificar os comandos de compilação
<a name="tutorials-commands-update"></a>

Implemente uma alteração para iniciar a execução do pipeline. Verifique se os comandos de compilação foram executados visualizando o histórico de execução, os logs de compilação e as variáveis ​​de saída.

**Como visualizar logs de ação e variáveis ​​de saída**

1. Após a execução bem-sucedida do pipeline, você poderá visualizar os logs e a saída da ação.

1. Para visualizar as variáveis de saída da ação, escolha **Histórico** > **Linha do tempo**. 

   Visualize a variável de saída que foi adicionada à ação. A saída da ação Commands exibe a variável de saída resolvida para a região da ação.  
![\[A saída da ação Commands exibindo a variável de saída resolvida para a ação Região\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/commands-output-variable.png)

1. Para visualizar os logs da ação, escolha **Visualizar detalhes** na ação Commands bem-sucedida. Visualize os logs da ação Commands.  
![\[Logs de exemplo para a ação Commands\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/commands-output-logs.png)

# Tutorial: Usar tags do Git para iniciar o pipeline
<a name="tutorials-github-tags"></a>

Neste tutorial, você criará um pipeline que se conecta ao seu GitHub repositório, onde a ação de origem está configurada para o tipo de gatilho de tags Git. Quando uma tag do Git é criada em uma confirmação, o pipeline é iniciado. Este exemplo mostra como criar um pipeline que permite a filtragem de tags com base na sintaxe do nome da tag. Para obter mais informações sobre a filtragem de padrões glob, consulte [Trabalhar com padrões glob na sintaxe](syntax-glob.md).

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

Este tutorial se conecta GitHub por meio do tipo de `CodeStarSourceConnection` ação.

**nota**  
Este atributo não está disponível nas regiões Ásia-Pacífico (Hong Kong), África (Cidade do Cabo), Oriente Médio (Bahrein) ou Europa (Zurique). Para fazer referência a outras ações disponíveis, consulte [Integrações de produtos e serviços com CodePipeline](integrations.md). Para considerações sobre essa ação na região Europa (Milão), consulte a nota em [CodeStarSourceConnection para Bitbucket Cloud GitHub, GitHub Enterprise Server, GitLab .com e ações GitLab autogerenciadas](action-reference-CodestarConnectionSource.md).

**Topics**
+ [Pré-requisitos](#tutorials-github-tags-prereq)
+ [Etapa 1: abrir CloudShell e clonar seu repositório](#w2aac13c16c15)
+ [Etapa 2: Criar um pipeline para acionar as tags do Git](#tutorials-github-tags-pipeline)
+ [Etapa 3: Marcar as confirmações para lançamento](#w2aac13c16c19)
+ [Etapa 4: Lançar alterações e visualizar logs](#tutorials-github-tags-view)

## Pré-requisitos
<a name="tutorials-github-tags-prereq"></a>

Antes de começar, é necessário fazer o seguinte:
+ Crie um GitHub repositório com sua GitHub conta.
+ Tenha suas GitHub credenciais prontas. Quando você usa o Console de gerenciamento da AWS para configurar uma conexão, você é solicitado a entrar com suas GitHub credenciais. 

## Etapa 1: abrir CloudShell e clonar seu repositório
<a name="w2aac13c16c15"></a>

É possível usar uma interface de linha de comandos para clonar o repositório, fazer confirmações e adicionar tags. Este tutorial inicia uma CloudShell instância para a interface de linha de comando.

1. Faça login no Console de gerenciamento da AWS.

1. Na barra de navegação superior, escolha o AWS ícone. A página principal dos Console de gerenciamento da AWS é exibida.

1. Na barra de navegação superior, escolha o AWS CloudShell ícone. CloudShell abre. Aguarde enquanto o CloudShell ambiente é criado.
**nota**  
Se você não vê o CloudShell ícone, verifique se você está em uma [região suportada pelo CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/faq-list.html#regions-available). Este tutorial pressupõe que você esteja na região do Oeste dos EUA (Oregon).

1. Em GitHub, navegue até seu repositório. Selecione **Editar** e **HTTPS**. Copie o caminho. O endereço para clonar o repositório Git é copiado na área de transferência.

1. Execute o comando a seguir para clonar o repositório.

   ```
   git clone https://github.com/<account>/MyGitHubRepo.git
   ```

1. Entre na sua GitHub conta `Username` e `Password` quando solicitado. Para a entrada `Password`, é necessário usar um token criado pelo usuário em vez da senha da conta.

## Etapa 2: Criar um pipeline para acionar as tags do Git
<a name="tutorials-github-tags-pipeline"></a>

Nesta seção, você criará um pipeline com as seguintes ações:
+ Um estágio de origem com uma conexão com seu GitHub repositório e ação.
+ Um estágio de construção com uma ação de AWS CodeBuild construção.

**Criar um pipeline com o assistente**

1. Faça login no CodePipeline console em [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

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 **MyGitHubTagsPipeline**.

1. Em **Tipo de pipeline**, mantenha a seleção padrão em **V2**. Os tipos de pipeline diferem em características e preços. Para obter mais informações, consulte [Tipos de pipeline](pipeline-types.md).

1. Em **Service role (Função do serviço)**, selecione **New service role (Nova função de serviço)**.
**nota**  
Se você optar por usar sua função de CodePipeline serviço existente, certifique-se de ter adicionado a permissão do `codestar-connections:UseConnection` IAM à sua política de função de serviço. Para obter instruções sobre a função de CodePipeline serviço, consulte [Adicionar permissões à função CodePipeline de serviço](https://docs.aws.amazon.com/codepipeline/latest/userguide/security-iam.html#how-to-update-role-new-services).

1. Em **Configurações avançadas** mantenha os padrões. Em **Artifact store** (Armazenamento de artefatos), selecione **Default location** (Local padrão) para usar o armazenamento de artefatos padrão, como o bucket de artefatos do Amazon S3 designado como padrão, para o pipeline na região que você selecionou.
**nota**  
Este não é o bucket de origem para seu código-fonte. Este é o armazenamento de artefatos para o pipeline. Um armazenamento de artefatos separado, como um bucket do S3, é necessário para cada pipeline.

   Escolha **Próximo**.

1. Na página **Etapa 3: Adicionar etapa de origem**, adicione uma etapa de origem:

   1. Em **Provedor de origem**, escolha **GitHub (via GitHub aplicativo)**.

   1. Em **Conexão**, escolha uma conexão existente ou crie uma nova. Para criar ou gerenciar uma conexão para sua ação GitHub de origem, consulte[GitHub conexões](connections-github.md).

   1. Em **Repository name (Nome do repositório)**, selecione o nome do seu repositório do GitHub.

   1. Em **Ramificação padrão**, selecione a ramificação que você deseja especificar quando o pipeline é iniciado manualmente ou com um evento de origem que não seja uma tag do Git. Se a origem da alteração não for o gatilho ou se a execução de um pipeline tiver sido iniciada manualmente, a alteração usada será a confirmação HEAD da ramificação padrão.

   1. Em **Eventos de webhook**, em **Tipo de filtro**, escolha **Tags**.

      No campo **Tags ou padrões**, insira `release*`.
**Importante**  
Os pipelines que começam com um tipo de gatilho de tags do Git serão configurados para eventos WebhookV2 e não usarão o evento do Webhook (detecção de alterações em todos os eventos push) para iniciar o pipeline.

   Escolha **Próximo**.

1. Em **Add build stage (Adicionar estágio de compilação)**, adicione um estágio de compilação:

   1. Em **Build provider (Provedor de compilação)**, escolha **AWS CodeBuild**. Permita que **Region (Região)** seja definida para a região do pipeline.

   1. Escolha **Criar projeto**.

   1. Em **Nome do projeto**, insira um nome para esse projeto de compilação.

   1. Em **Environment image (Imagem do ambiente)**, escolha **Managed image (Imagem gerenciada)**. Para **Operating system**, selecione **Ubuntu**.

   1. Em **Runtime (Tempo de execução)**, selecione **Standard (Padrão)**. **Para **Imagem**, escolha: 5.0aws/codebuild/standard.**

   1. Em **Service role (Função de serviço)**, selecione **New service role (Nova função de serviço)**.
**nota**  
Anote o nome da sua função CodeBuild de serviço. Você precisará do nome do perfil para a etapa final deste tutorial.

   1. Em **Buildspec**, para **Build specifications** (Especificações da compilação), escolha **Insert build commands** (Inserir comandos de compilação). Selecione **Alternar para o editor** e cole o seguinte em **Comandos de compilação**.

      ```
      version: 0.2
      #env:
        #variables:
           # key: "value"
           # key: "value"
        #parameter-store:
           # key: "value"
           # key: "value"
        #git-credential-helper: yes
      phases:
        install:
          #If you use the Ubuntu standard image 2.0 or later, you must specify runtime-versions.
          #If you specify runtime-versions and use an image other than Ubuntu standard image 2.0, the build fails.
          runtime-versions:
            nodejs: 12
          #commands:
            # - command
            # - command
        #pre_build:
          #commands:
            # - command
            # - command
        build:
          commands:
            - 
        #post_build:
          #commands:
            # - command
            # - command
      artifacts:
        files:
           - '*'
          # - location
        name: $(date +%Y-%m-%d)
        #discard-paths: yes
        #base-directory: location
      #cache:
        #paths:
          # - paths
      ```

   1. Escolha **Continuar para CodePipeline**. Isso retorna ao CodePipeline console e cria um CodeBuild projeto que usa seus comandos de compilação para configuração. O projeto de compilação usa uma função de serviço para gerenciar AWS service (Serviço da AWS) permissões. Essa etapa pode levar alguns minutos.

   1. 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 página **Etapa 6: Adicionar estágio de implantação**, escolha **Ignorar estágio de implantação** e, em seguida, aceite a mensagem de aviso escolhendo **Ignorar** novamente. Escolha **Próximo**.

1. Na **Etapa 7: Revisão**, escolha **Criar funil**.

## Etapa 3: Marcar as confirmações para lançamento
<a name="w2aac13c16c19"></a>

Depois de criar seu pipeline e especificar as tags do Git, você pode marcar os commits no seu repositório. GitHub Nestas etapas, você marcará uma confirmação com a tag `release-1`. Cada confirmação em um repositório do Git deve ter uma tag exclusiva do Git. Ao selecionar a confirmação e marcá-la, isso permite incorporar alterações de diferentes ramificações na implantação do pipeline. Observe que o nome da tag release não se aplica ao conceito de lançamento em GitHub.

1. Faça referência ao commit copiado IDs que você deseja marcar. Para visualizar as confirmações em cada ramificação, no CloudShell terminal, digite o seguinte comando para capturar a confirmação IDs que você deseja marcar: 

   ```
   git log
   ```

1. No CloudShell terminal, insira o comando para marcar seu commit e enviá-lo para a origem. Depois de marcar a confirmação, use o comando git push para enviar a tag à origem. No exemplo a seguir, insira este comando para usar a tag `release-1` para a segunda confirmação com o ID `49366bd`. Essa tag será filtrada pelo filtro de tags `release*` do pipeline e iniciará o pipeline.

   ```
   git tag release-1 49366bd
   ```

   ```
   git push origin release-1
   ```  
![\[\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/git-tags-pipeline.png)

## Etapa 4: Lançar alterações e visualizar logs
<a name="tutorials-github-tags-view"></a>

1. Depois que o pipeline for executado com êxito, no estágio de criação bem-sucedido, selecione **Visualizar log**.

   Em **Registros**, veja a saída da CodeBuild compilação. Os comandos geram o valor da variável inserida.

1. Na página **Histórico**, visualize a coluna **Gatilhos**. Veja o tipo de gatilho **GitTag : release-1**.

# Tutorial: Filtrar nomes de ramificação para solicitações pull a fim de iniciar o pipeline (tipo V2)
<a name="tutorials-github-featurebranches"></a>

Neste tutorial, você criará um pipeline que se conecta ao seu GitHub repositório.com, onde a ação de origem é configurada para iniciar seu pipeline com uma configuração de gatilho que filtra as pull requests. Quando um evento de solicitação pull especificado ocorre para uma ramificação específica, o pipeline é iniciado. Este exemplo mostra como criar um pipeline que permite a filtragem de nomes de ramificações. Para ter mais informações sobre como trabalhar com gatilhos, consulte [Adicionar filtros para tipos de evento push e pull request (CLI)](pipelines-filter.md#pipelines-filter-cli). Para ter mais informações sobre como filtrar com padrões regex no formato glob, consulte [Trabalhar com padrões glob na sintaxe](syntax-glob.md).

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

Este tutorial se conecta ao GitHub domínio.com por meio do tipo de `CodeStarSourceConnection` ação.

**Topics**
+ [Pré-requisitos](#tutorials-github-featurebranches-prereq)
+ [Etapa 1: criar um pipeline para iniciar uma solicitação pull para ramificações especificadas](#tutorials-github-featurebranches-pipeline)
+ [Etapa 2: criar e mesclar uma pull request em GitHub .com para iniciar suas execuções de funil](#tutorials-github-featurebranches-pullrequest)

## Pré-requisitos
<a name="tutorials-github-featurebranches-prereq"></a>

Antes de começar, é necessário fazer o seguinte:
+ Crie um GitHub repositório.com com sua conta GitHub .com.
+ Tenha suas GitHub credenciais prontas. Quando você usa o Console de gerenciamento da AWS para configurar uma conexão, você é solicitado a entrar com suas GitHub credenciais. 

## Etapa 1: criar um pipeline para iniciar uma solicitação pull para ramificações especificadas
<a name="tutorials-github-featurebranches-pipeline"></a>

Nesta seção, você criará um pipeline com as seguintes ações:
+ Um estágio de origem com uma conexão com seu repositório e ação GitHub .com.
+ Um estágio de construção com uma ação de AWS CodeBuild construção.

**Criar um pipeline com o assistente**

1. Faça login no CodePipeline console em [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

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 **MyFilterBranchesPipeline**.

1. Em **Tipo de pipeline**, mantenha a seleção padrão em **V2**. Os tipos de pipeline diferem em características e preços. Para obter mais informações, consulte [Tipos de pipeline](pipeline-types.md).

1. Em **Service role (Função do serviço)**, selecione **New service role (Nova função de serviço)**.
**nota**  
Se você optar por usar sua função de CodePipeline serviço existente, certifique-se de ter adicionado a permissão do `codeconnections:UseConnection` IAM à sua política de função de serviço. Para obter instruções sobre a função de CodePipeline serviço, consulte [Adicionar permissões à função CodePipeline de serviço](https://docs.aws.amazon.com/codepipeline/latest/userguide/security-iam.html#how-to-update-role-new-services).

1. Em **Configurações avançadas** mantenha os padrões. Em **Artifact store** (Armazenamento de artefatos), selecione **Default location** (Local padrão) para usar o armazenamento de artefatos padrão, como o bucket de artefatos do Amazon S3 designado como padrão, para o pipeline na região que você selecionou.
**nota**  
Este não é o bucket de origem para seu código-fonte. Este é o armazenamento de artefatos para o pipeline. Um armazenamento de artefatos separado, como um bucket do S3, é necessário para cada pipeline.

   Escolha **Próximo**.

1. Na página **Etapa 3: Adicionar etapa de origem**, adicione uma etapa de origem:

   1. Em **Provedor de origem**, escolha **GitHub (via GitHub aplicativo)**.

   1. Em **Conexão**, escolha uma conexão existente ou crie uma nova. Para criar ou gerenciar uma conexão para sua ação GitHub de origem, consulte[GitHub conexões](connections-github.md).

   1. Em **Nome do repositório**, escolha o nome do seu GitHub repositório.com.

   1. Em **Tipo de gatilho**, escolha **Especificar filtro**.

      Em **Tipo de evento**, escolha **Solicitação pull**. Selecione todos os eventos em solicitação pull para que sejam acionados ao criar, atualizar ou fechar as solicitações pull.

      Em **Ramificações**, no campo **Incluir**, insira `main*`.  
![\[Imagem mostrando a opção Incluir ramificações selecionada com um valor de main* para um gatilho com um tipo de evento de solicitação pull\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/pullreq-example-triggers-edit.png)
**Importante**  
Os pipelines que começam com esse tipo de gatilho serão configurados para eventos WebhookV2 e não usarão o evento Webhook (detecção de alterações em todos os eventos push) para iniciar o pipeline.

   Escolha **Próximo**.

1. Em **Etapa 4: Adicionar etapa de compilação**, em **Provedor de compilação**, escolha **AWS CodeBuild**. Permita que **Region (Região)** seja definida para a região do pipeline. Escolha ou crie o projeto de compilação conforme as instruções em [Tutorial: Usar tags do Git para iniciar o pipeline](tutorials-github-tags.md). Esta ação será usada neste tutorial apenas como o segundo estágio necessário para criar o pipeline.

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 página **Etapa 6: Adicionar estágio de implantação**, escolha **Ignorar estágio de implantação** e, em seguida, aceite a mensagem de aviso escolhendo **Ignorar** novamente. Escolha **Próximo**.

1. Na **Etapa 7: Revisão**, escolha **Criar funil**.

## Etapa 2: criar e mesclar uma pull request em GitHub .com para iniciar suas execuções de funil
<a name="tutorials-github-featurebranches-pullrequest"></a>

Nesta seção, você cria e mescla uma solicitação pull. Isso inicia o pipeline, com uma execução para solicitação pull aberta e uma execução para solicitação pull fechada.

**Como criar uma solicitação pull e iniciar o pipeline**

1. Em GitHub .com, crie uma pull request fazendo uma alteração no README.md em uma ramificação de recurso e gerando uma pull request para a ramificação. `main` Confirme a alteração com uma mensagem como `Update README.md for PR`.

1. O pipeline começa com a revisão de origem mostrando a mensagem de **Origem** da solicitação pull como **Atualizar README.md para PR**.  
![\[Imagem exibindo a mensagem de origem da solicitação Pull com o seguinte texto: Update README.md for PR\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/pullreq-example.png)

1. Escolha **History (Histórico)**. No histórico de execução do pipeline, visualize os eventos de status de solicitação pull CREATED e MERGED que iniciaram as execuções do pipeline.  
![\[Imagem mostrando o histórico de execução do pipeline que mostra os eventos de status de solicitação pull CREATED e MERGED que iniciaram as execuções do pipeline\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/pullreq-example-history.png)

# Tutorial: Usar variáveis no nível do pipeline
<a name="tutorials-pipeline-variables"></a>

Neste tutorial, você criará um pipeline em que adicionará uma variável no nível do pipeline e executará uma ação de CodeBuild criação que gera o valor da variável.

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

**Topics**
+ [Pré-requisitos](#tutorials-pipeline-variables-prereq)
+ [Etapa 1: Criar seu pipeline e compilar o projeto](#tutorials-pipeline-variables-pipeline)
+ [Etapa 2: Lançar alterações e visualizar logs](#tutorials-pipeline-variables-view)

## Pré-requisitos
<a name="tutorials-pipeline-variables-prereq"></a>

Antes de começar, é necessário fazer o seguinte:
+ Crie um CodeCommit repositório.
+ Adicione um arquivo .txt a um repositório.

## Etapa 1: Criar seu pipeline e compilar o projeto
<a name="tutorials-pipeline-variables-pipeline"></a>

Nesta seção, você criará um pipeline com as seguintes ações:
+ Um estágio de origem com uma conexão com seu CodeCommit repositório.
+ Um estágio de construção com uma ação de AWS CodeBuild construção.

**Criar um pipeline com o assistente**

1. Faça login no CodePipeline console em [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

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 **MyVariablesPipeline**.

1. Em **Tipo de pipeline**, mantenha a seleção padrão em **V2**. Os tipos de pipeline diferem em características e preços. Para obter mais informações, consulte [Tipos de pipeline](pipeline-types.md).

1. Em **Service role (Função do serviço)**, selecione **New service role (Nova função de serviço)**.
**nota**  
Se você optar por usar sua função de CodePipeline serviço existente, certifique-se de ter adicionado a permissão do `codeconnections:UseConnection` IAM à sua política de função de serviço. Para obter instruções sobre a função de CodePipeline serviço, consulte [Adicionar permissões à função CodePipeline de serviço](https://docs.aws.amazon.com/codepipeline/latest/userguide/security-iam.html#how-to-update-role-new-services).

1. Em **Variáveis**, selecione **Adicionar variável**. Em **Nome**, insira `timeout`. Em **Padrão**, insira 1000. Em Descrição, insira a seguinte descrição: **Timeout**.

   Isso criará uma variável na qual você poderá declarar o valor quando a execução do pipeline começar. Os nomes das variáveis devem corresponder a `[A-Za-z0-9@\-_]+` e podem ser qualquer coisa, exceto uma string vazia.

1. Em **Configurações avançadas** mantenha os padrões. Em **Artifact store** (Armazenamento de artefatos), selecione **Default location** (Local padrão) para usar o armazenamento de artefatos padrão, como o bucket de artefatos do Amazon S3 designado como padrão, para o pipeline na região que você selecionou.
**nota**  
Este não é o bucket de origem para seu código-fonte. Este é o armazenamento de artefatos para o pipeline. Um armazenamento de artefatos separado, como um bucket do S3, é necessário para cada pipeline.

   Escolha **Próximo**.

1. Na página **Etapa 3: Adicionar etapa de origem**, adicione uma etapa de origem:

   1. Em **Source provider (Provedor de código-fonte)**, selecione **AWS CodeCommit**.

   1. Em **Nome do repositório** e **Nome da ramificação**, selecione o repositório e a ramificação.

   Escolha **Próximo**.

1. Em **Etapa 4: Adicionar etapa de compilação**, adicione um estágio de compilação:

   1. Em **Build provider (Provedor de compilação)**, escolha **AWS CodeBuild**. Permita que **Region (Região)** seja definida para a região do pipeline.

   1. Escolha **Criar projeto**.

   1. Em **Nome do projeto**, insira um nome para esse projeto de compilação.

   1. Em **Environment image (Imagem do ambiente)**, escolha **Managed image (Imagem gerenciada)**. Para **Operating system**, selecione **Ubuntu**.

   1. Em **Runtime (Tempo de execução)**, selecione **Standard (Padrão)**. **Para **Imagem**, escolha: 5.0aws/codebuild/standard.**

   1. Em **Service role (Função de serviço)**, selecione **New service role (Nova função de serviço)**.
**nota**  
Anote o nome da sua função CodeBuild de serviço. Você precisará do nome do perfil para a etapa final deste tutorial.

   1. Em **Buildspec**, para **Build specifications** (Especificações da compilação), escolha **Insert build commands** (Inserir comandos de compilação). Selecione **Alternar para o editor** e cole o seguinte em **Comandos de compilação**. No buildspec, a variável do cliente `$CUSTOM_VAR1` será usada para gerar a variável do pipeline no log de criação. Você criará a variável de saída `$CUSTOM_VAR1` como uma variável de ambiente na etapa a seguir.

      ```
      version: 0.2
      #env:
        #variables:
           # key: "value"
           # key: "value"
        #parameter-store:
           # key: "value"
           # key: "value"
        #git-credential-helper: yes
      phases:
        install:
          #If you use the Ubuntu standard image 2.0 or later, you must specify runtime-versions.
          #If you specify runtime-versions and use an image other than Ubuntu standard image 2.0, the build fails.
          runtime-versions:
            nodejs: 12
          #commands:
            # - command
            # - command
        #pre_build:
          #commands:
            # - command
            # - command
        build:
          commands:
            - echo $CUSTOM_VAR1
        #post_build:
          #commands:
            # - command
            # - command
      artifacts:
        files:
           - '*'
          # - location
        name: $(date +%Y-%m-%d)
        #discard-paths: yes
        #base-directory: location
      #cache:
        #paths:
          # - paths
      ```

   1. Escolha **Continuar para CodePipeline**. Isso retorna ao CodePipeline console e cria um CodeBuild projeto que usa seus comandos de compilação para configuração. O projeto de compilação usa uma função de serviço para gerenciar AWS service (Serviço da AWS) permissões. Essa etapa pode levar alguns minutos.

   1. Em **Variáveis de ambiente *- opcional***, para criar uma variável de ambiente como uma variável de entrada para a ação de criação que será resolvida pela variável em nível de pipeline, selecione **Adicionar variável de ambiente**. Isso criará a variável especificada no buildspec como `$CUSTOM_VAR1`. Em **Nome**, insira `CUSTOM_VAR1`. Em **Valor**, informe `#{variables.timeout}`. Em **Tipo**, escolha`Plaintext`.

      O `#{variables.timeout}` valor da variável de ambiente é baseado no namespace da variável no nível do pipeline `variables` e na variável no nível do pipeline criada para o pipeline na etapa 7. `timeout`

   1. 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 página **Etapa 6: Adicionar estágio de implantação**, escolha **Ignorar estágio de implantação** e, em seguida, aceite a mensagem de aviso escolhendo **Ignorar** novamente. Escolha **Próximo**.

1. Na **Etapa 7: Revisão**, escolha **Criar funil**.

## Etapa 2: Lançar alterações e visualizar logs
<a name="tutorials-pipeline-variables-view"></a>

1. Depois que o pipeline for executado com êxito, no estágio de criação bem-sucedido, selecione **Visualizar detalhes**.

   Na página de detalhes, selecione a guia **Logs**. Veja a saída da CodeBuild compilação. Os comandos geram o valor da variável inserida.

1. No painel de navegação à esquerda, selecione **Histórico**.

   Escolha a execução recente e, depois, selecione a guia **Variáveis**. Visualize o valor resolvido para a variável do pipeline.

# Tutorial: Criar um pipeline simples (bucket do S3)
<a name="tutorials-simple-s3"></a>

A maneira mais fácil de criar um pipeline é usar o assistente de **criação de pipeline** no AWS CodePipeline console. 

Neste tutorial, você cria um pipeline de dois estágios que usa um bucket de origem S3 versionado e lança um aplicativo de CodeDeploy amostra. 

**nota**  
Quando o Amazon S3 é o provedor de origem do pipeline, é possível compactar o(s) arquivo(s) de origem em um único .zip e fazer upload do .zip para o bucket de origem. Também é possível fazer upload de um único arquivo descompactado; no entanto, ocorrerão falha nas ações downstream que aguardam um arquivo .zip.

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

Após criar esse pipeline simples, adicione outro estágio e, em seguida, desabilite e habilite a transição entre os estágios.

**Importante**  
Muitas das ações que você adiciona ao pipeline nesse procedimento envolvem AWS recursos que você precisa criar antes de criar o pipeline. AWS os recursos para suas ações de origem sempre devem ser criados na mesma AWS região em que você cria seu pipeline. Por exemplo, se você criar seu pipeline na região Leste dos EUA (Ohio), seu CodeCommit repositório deverá estar na região Leste dos EUA (Ohio).   
Você pode adicionar ações entre regiões ao criar seu pipeline. AWS os recursos para ações entre regiões devem estar na mesma AWS região em que você planeja executar a ação. Para obter mais informações, consulte [Adicionar uma ação entre regiões em CodePipeline](actions-create-cross-region.md).

Antes de começar, você deve cumprir os pré-requisitos em [Começando com CodePipeline](getting-started-codepipeline.md).

**Topics**
+ [Etapa 1: criar um bucket de origem do S3 para a aplicação](#s3-create-s3-bucket)
+ [Etapa 2: Crie instâncias Windows do Amazon EC2 e instale o agente CodeDeploy](#S3-create-instances)
+ [Etapa 3: criar um aplicativo no CodeDeploy](#S3-create-deployment)
+ [Etapa 4: Crie seu primeiro funil em CodePipeline](#s3-create-pipeline)
+ [(Opcional) Etapa 5: Adicionar outra etapa ao pipeline](#s3-add-stage)
+ [(Opcional) Etapa 6: desativar e ativar as transições entre os estágios no CodePipeline](#s3-configure-transitions)
+ [Etapa 7: Limpar os recursos](#s3-clean-up)

## Etapa 1: criar um bucket de origem do S3 para a aplicação
<a name="s3-create-s3-bucket"></a>

É possível armazenar os aplicativos ou arquivos de origem em qualquer local versionado. Neste tutorial, você criará um bucket do S3 para os exemplos de arquivo de aplicação e habilitar o versionamento nesse bucket. Após habilitar o versionamento, copie os aplicativos de exemplo para esse bucket. 

**Para criar um bucket do S3**

1. Faça login no console em Console de gerenciamento da AWS. Abra o console do S3.

1. Escolha **Create bucket** (Criar bucket).

1. No **Bucket name** (Nome do bucket), insira um nome para o seu bucket (por exemplo, **awscodepipeline-demobucket-example-date**).
**nota**  
Como todos os nomes de bucket no Amazon S3 devem ser exclusivos, use um dos próprios nomes e não o nome exibido no exemplo. Você pode alterar o nome de exemplo simplesmente adicionando uma data. Anote esse nome, pois você precisará usá-lo mais adiante neste tutorial.

   Em **Região**, selecione a região onde você pretende criar o pipeline, como **Oeste dos EUA (Oregon)** e, depois, selecione **Criar bucket**.

1. Depois que o bucket é criado, um banner de sucesso é exibido. Escolha **Go to bucket details (Ir para detalhes do bucket)**.

1. Na guia **Properties (Propriedades)** escolha **Versioning (Versionamento)**. Escolha **Enable versioning (Ativar versionamento)** e escolha **Save (Salvar)**.

   Quando o versionamento é habilitado, o Amazon S3 salva todas as versões de cada objeto no bucket.

1. Na guia **Permissions (Permissões)** deixe os valores padrão. Para obter mais informações sobre permissões de bucket e objeto do S3, consulte [Especificar permissões em uma política](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).

1. Depois, faça download de um exemplo e salve-o em uma pasta ou um diretório no computador local.

   1. Escolha uma das opções a seguir. Escolha `SampleApp_Windows.zip` se deseja seguir as etapas deste tutorial para instâncias do Windows Server.
      + Se você quiser implantar em instâncias Amazon Linux usando CodeDeploy, baixe o aplicativo de amostra aqui: [SampleApp\$1Linux.zip](samples/SampleApp_Linux.zip).
      + Se você quiser implantar em instâncias do Windows Server usando CodeDeploy, baixe o aplicativo de amostra aqui: [SampleApp\$1Windows.zip](samples/SampleApp_Windows.zip).

      O aplicativo de amostra contém os seguintes arquivos para implantação com CodeDeploy: 
      + `appspec.yml`— O arquivo de especificação do aplicativo (AppSpecarquivo) é um arquivo formatado em [YAML](http://www.yaml.org) usado por CodeDeploy para gerenciar uma implantação. Para obter mais informações sobre o AppSpec arquivo, consulte [Referência CodeDeploy AppSpec do arquivo](https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html) no *Guia AWS CodeDeploy do usuário*.
      + `index.html`: o arquivo de índice contém a página inicial da aplicação de exemplo implantada.
      + `LICENSE.txt`: o arquivo de licença contém informações de licença da aplicação de exemplo.
      + Arquivos para scripts: a aplicação de exemplo usa scripts para gravar arquivos de texto em um local na instância. Um arquivo é gravado para cada um dos vários eventos do ciclo de vida da CodeDeploy implantação da seguinte forma:
        + Pasta `scripts` (somente exemplo do Linux): a pasta contém os seguintes scripts de shell para instalar dependências e iniciar e interromper a aplicação de exemplo para a implantação automatizada: `install_dependencies`, `start_server` e `stop_server`.
        + (Somente exemplo do Windows) `before-install.bat`: um script em lote para o evento de ciclo de vida de implantação `BeforeInstall`, que será executado para remover os arquivos antigos gravados durante implantações anteriores deste exemplo e criar um local na instância onde os novos arquivos serão gravados.

   1. Faça download do arquivo compactado. Não descompacte o arquivo.

1. No console do Amazon S3, para o bucket, faça upload do arquivo:  

   1. Escolha **Carregar**. 

   1. Arraste e solte o arquivo ou escolha **Add files (Adicionar arquivos)** e navegue até o arquivo.

   1. Escolha **Carregar**.

## Etapa 2: Crie instâncias Windows do Amazon EC2 e instale o agente CodeDeploy
<a name="S3-create-instances"></a>

**nota**  
Este tutorial fornece etapas de exemplo para criar instâncias do Windows do Amazon EC2. Para obter etapas de exemplo para criar instâncias do Linux do Amazon EC2, consulte [Etapa 3: Crie uma instância Linux do Amazon EC2 e instale o agente CodeDeploy](tutorials-simple-codecommit.md#codecommit-create-deployment). Quando solicitado o número de instâncias a serem criadas, especifique **2** instâncias.

Nesta etapa, você vai criar as instâncias do Amazon EC2 do Windows Server nas quais implantará uma aplicação de exemplo. Como parte desse processo, você cria uma função de instância com políticas que permitem a instalação e o gerenciamento do CodeDeploy agente nas instâncias. O CodeDeploy agente é um pacote de software que permite que uma instância seja usada em CodeDeploy implantações. Você também anexa políticas que permitem que a instância busque arquivos que o CodeDeploy agente usa para implantar seu aplicativo e permitir que a instância seja gerenciada pelo SSM.

**Como criar uma função de instância**

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 **Choose a use case (Escolher um caso de uso)**, selecione **EC2** e escolha **Next: Permissions (Próximo: permissões)**.

1. Procure e selecione a política chamada **`AmazonEC2RoleforAWSCodeDeploy`**.

1. Procure e selecione a política chamada **`AmazonSSMManagedInstanceCore`**. Escolha **Próximo: tags**.

1. Selecione **Próximo: revisar**. Forneça um nome para a função (por exemplo, **EC2InstanceRole**).
**nota**  
Anote o nome da função para a próxima etapa. Escolha essa função ao criar a instância.

   Selecione **Criar perfil**.

**Para executar instâncias**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Na navegação lateral, escolha **Instâncias** e selecione **Executar instâncias** na parte superior da página.

1. Em **Nome e tags**, em **Nome**, insira **MyCodePipelineDemo**. Isso atribui à instância uma tag **Chave** de **Name** e uma tag **Valor** de **MyCodePipelineDemo**. Posteriormente, você cria um CodeDeploy aplicativo que implanta o aplicativo de amostra nas instâncias. CodeDeployseleciona instâncias a serem implantadas com base nas tags.

1. Em **Imagens de aplicações e sistemas operacionais (imagem de máquina da Amazon)**, selecione a opção **Windows**. (Essa AMI é descrita como **Microsoft Windows Server 2019 Base**, é identificada como “Elegível para o nível gratuito” e pode ser encontrada em **Início rápido**.)

1. Em **Tipo de instância**, selecione o tipo `t2.micro` elegível para o nível gratuito como configuração de hardware para a instância.

1. Na seção **Par de chaves (login)**, selecione um par de chaves ou crie um. 

   Também é possível selecionar **Prosseguir sem um par de chaves**.
**nota**  
Para os fins deste tutorial, é possível prosseguir sem um par de chaves. Para usar o SSH para se conectar às instâncias, crie ou use um par de chaves.

1. Em **Configurações de rede**, faça o seguinte:

   Em **Atribuir IP público automaticamente**, verifique se o status é **Habilitado**.
   + Ao lado de **Assign a security group (Atribuir um grupo de segurança)**, selecione **Create a new security group (Criar novo grupo de segurança)**.
   + Na linha para **SSH**, em **Tipo de origem**, selecione **Meu IP**.
   + Selecione **Adicionar grupo de segurança**, selecione **HTTP** e, depois, em **Tipo de origem**, selecione **Meu IP**.

1. Expanda **Advanced details** (Detalhes avançados). Em **Perfil de instância do IAM**, selecione o perfil do IAM criado no procedimento anterior (por exemplo, **EC2InstanceRole**).

1. Em **Resumo**, em **Número de instâncias**, insira `2`.

1. Escolha **Iniciar instância**.

1. Escolha **View all instances** (Visualizar todas as instâncias) para fechar a página de confirmação e voltar ao console.

1. É possível visualizar o status da ativação na página **Instâncias**. Ao executar uma instância, seu estado inicial é `pending`. Após o início da instância, seu estado muda para `running` e ela recebe um nome DNS público. (Se a coluna do **Public DNS (DNS público)** não for exibida, selecione o ícone **Show/Hide (Exibir/Ocultar)** e **Public DNS (DNS público)**.)

1. Pode levar alguns minutos até que a instância esteja pronta para sua conexão. Verifique se a instância passou nas verificações de status. Você pode visualizar essas informações na coluna **Status Checks (Verificações de status)**.

## Etapa 3: criar um aplicativo no CodeDeploy
<a name="S3-create-deployment"></a>

Em CodeDeploy, um *aplicativo* é um identificador, na forma de um nome, do código que você deseja implantar. CodeDeploy usa esse nome para garantir que a combinação correta de revisão, configuração de implantação e grupo de implantação seja referenciada durante uma implantação. Você seleciona o nome do CodeDeploy aplicativo criado nesta etapa ao criar seu pipeline posteriormente neste tutorial.

Primeiro, você cria uma função de serviço CodeDeploy para usar. Se você já criou um perfil de serviço, não precisará criar outro.

**Para criar uma função CodeDeploy de serviço**

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 entidade confiável**, escolha **AWS service (Serviço da AWS)**. Em **Use case** (Caso de uso), escolha **CodeDeploy**. **CodeDeploy**Escolha entre as opções listadas. Escolha **Próximo**. A política gerenciada `AWSCodeDeployRole` já está anexada à função.

1. Escolha **Próximo**.

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

**Para criar um aplicativo no CodeDeploy**

1. Abra o CodeDeploy console em [https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy).

1. Se a página **Aplicativos** não aparecer, no AWS CodeDeploy menu, escolha **Aplicativos**.

1. Escolha **Criar aplicativo**.

1. Em **Nome do aplicativo**, insira `MyDemoApplication`. 

1. Em **Plataforma de computação**, selecione **EC2/On-Premises**.

1. Escolha **Criar aplicativo**.

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

1. Na página que mostra o aplicativo, selecione **Create deployment group (Criar grupo de implantação)**.

1. Em **Nome do grupo de implantação**, insira **MyDemoDeploymentGroup**.

1. Em **Perfil de serviço**, selecione o perfil de serviço criado anteriormente. Você deve usar uma função de serviço que AWS CodeDeploy confie, no mínimo, na confiança e nas permissões descritas em [Criar uma função de serviço para CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/getting-started-create-service-role.html). Para obter o ARN da função de serviço, consulte [Obter ARN da função de serviço (console)](https://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-create-service-role.html#getting-started-get-service-role-console).

1. Em **Deployment type (Tipo de implantação)**, selecione **In-place (No local)**.

1. Em **Environment configuration (Configuração do ambiente)**, selecione **Amazon EC2 Instances (Instâncias do Amazon EC2)**. Escolha **Name (Nome)** no campo **Key (Chave)** e, no campo **Value (Valor)** informe **MyCodePipelineDemo**. 
**Importante**  
É necessário selecionar o mesmo valor para a chave **Nome** atribuída à instância do EC2 quando criada. Se você marcou instâncias com algo diferente de **MyCodePipelineDemo**, certifique-se de usar a tag aqui.

1. Em **Configuração do agente com AWS Systems Manager**, escolha **Agora e agende atualizações**. Isso vai instalar o agente na instância. A instância do Windows já está configurada com o agente SSM e agora será atualizada com o CodeDeploy agente.

1. Em **Configurações da implantação**, selecione `CodeDeployDefault.OneAtaTime`.

1. Em **Balanceador de carga**, verifique se a caixa **Habilitar balanceamento de carga** não está selecionada. Você não precisa configurar um load balancer ou escolher um grupo de destino para este exemplo. Depois de desmarcar a caixa de seleção, as opções do balanceador de carga não são exibidas.

1. Na seção **Avançado** deixe os padrões.

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

## Etapa 4: Crie seu primeiro funil em CodePipeline
<a name="s3-create-pipeline"></a>

Nesta parte do tutorial, você vai criar o pipeline. O exemplo executa automaticamente no pipeline.

**Para criar um processo de liberação CodePipeline automatizado**

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 **MyFirstPipeline**. 
**nota**  
Se você escolher outro nome para o pipeline, certifique-se de usar esse nome em vez de **MyFirstPipeline** no restante deste tutorial. Depois de criar um pipeline, não é possível alterar o nome dele. Os nomes de pipelines estão sujeitos à algumas limitações. Para obter mais informações, consulte [Cotas no AWS CodePipeline.](limits.md). 

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 **Perfil de serviço**, faça um dos seguintes procedimentos:
   + Escolha **Nova função de serviço** para permitir CodePipeline a criação de uma nova função de serviço no IAM.
   + Escolha **Existing service role (Função de serviço existente)** para usar uma função de serviço já criada no IAM. Em **Role name (Nome da função)**, selecione a função de serviço na lista.

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 **Amazon S3**. Em **Bucket**, insira o nome do bucket do S3 que você criou em [Etapa 1: criar um bucket de origem do S3 para a aplicação](#s3-create-s3-bucket). Em **S3 object key (Chave do objeto do S3)**, insira a chave do objeto com ou sem um caminho de arquivo, e lembre-se de incluir a extensão do arquivo. Por exemplo, para `SampleApp_Windows.zip`, insira o nome do arquivo de exemplo como mostrado neste exemplo:

   ```
   SampleApp_Windows.zip
   ```

   Escolha **Próxima etapa**.

   Em **Change detection options (Alterar opções de detecção)**, deixe os valores padrão. Isso permite CodePipeline usar o Amazon CloudWatch Events para detectar alterações em seu bucket de origem.

    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**, em **Provedor de implantação**, escolha **CodeDeploy **. O campo **Região** é padronizado para o mesmo do seu Região da AWS funil. Em **Application name (Nome do aplicativo)**, insira `MyDemoApplication` ou selecione o botão **Refresh (Atualizar)** e selecione o nome do aplicativo na lista. Em **Deployment group (Grupo de implantação)**, insira **MyDemoDeploymentGroup** ou selecione-o na lista e selecione **Next (Próximo)**. 
**nota**  
O nome Implantação é o nome padrão dado ao estágio criado em **Step 4: Add deploy stage (Etapa 4: adicionar estágio de implantação)**, assim como Origem é o nome dado ao primeiro estágio do pipeline. 

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

1. O pipeline começa a ser executado. Você pode visualizar o progresso e as mensagens de sucesso e falha à medida que a CodePipeline amostra implanta uma página da web em cada uma das instâncias do Amazon EC2 na implantação. CodeDeploy

Parabéns\$1 Você acabou de criar um pipeline simples em CodePipeline. O pipeline tem dois estágios:
+ Um estágio de origem chamado **Source (Origem)**, que detecta as alterações no aplicativo de exemplo com versionamento armazenado no bucket do S3 e obtém essas alterações para o pipeline.
+ Um estágio **Deploy (Implantar)** que implanta essas alterações nas instâncias do EC2 com o CodeDeploy. 

Agora, verifique os resultados.

**Como verificar se seu pipeline foi executado com êxito**

1. Visualize o progresso inicial do pipeline. O status de cada estágio muda de **No executions yet** (Ainda não executado) para **In Progress** (Em andamento) e, então, para **Succeeded** (Bem-sucedido) ou **Failed** (Falhou). O pipeline deve concluir a primeira execução dentro de alguns minutos.

1. Após a exibição do status **Com êxito** para o status da ação, na área do status da etapa **Implantar**, selecione **Detalhes**. Isso abre o CodeDeploy console.

1. Na guia **Grupo de implantação**, em **Eventos de ciclo de vida da implantação**, selecione o ID. Isso abre o console do EC2.

1. Na guia **Description (Descrição)**, em **Public DNS (DNS público)**, copie o endereço e cole-o na barra de endereços de seu navegador da Web. Visualize a página de índice para o aplicativo de exemplo que você carregou para o bucket do S3.

   A página da web exibe a aplicação de exemplo que você baixou para o bucket do S3.

Para obter mais informações sobre os estágios, as ações e o funcionamento dos pipelines, consulte [CodePipeline conceitos ](concepts.md).

## (Opcional) Etapa 5: Adicionar outra etapa ao pipeline
<a name="s3-add-stage"></a>

Agora, adicione outro estágio ao pipeline para implantar dos servidores de preparação para os servidores de produção usando a CodeDeploy. Primeiro, você cria outro grupo de implantação no CodePipelineDemoApplication in CodeDeploy. Em seguida, adicione um estágio que inclui uma ação que usa esse grupo de implantação. Para adicionar outro estágio, use o CodePipeline console ou o AWS CLI para recuperar e editar manualmente a estrutura do pipeline em um arquivo JSON e, em seguida, execute o **update-pipeline** comando para atualizar o pipeline com suas alterações.

**Topics**
+ [Crie um segundo grupo de implantação no CodeDeploy](#s3-add-stage-part-1)
+ [Adicionar o grupo de implantação como outro estágio ao pipeline](#s3-add-stage-part-2)

### Crie um segundo grupo de implantação no CodeDeploy
<a name="s3-add-stage-part-1"></a>

**nota**  
Nesta parte do tutorial, você vai criar um segundo grupo de implantação, mas o implantará nas mesmas instâncias do Amazon EC2 usadas anteriormente. Isso é apenas para fins de demonstração. Ele foi projetado propositadamente para não mostrar como os erros são exibidos em. CodePipeline

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

1. Abra o CodeDeploy console em [https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy).

1. Selecione **Applications (Aplicativos)** e, na lista de aplicativos, selecione `MyDemoApplication`.

1. Selecione a guia **Deployment groups (Grupos de implantação)**, depois escolha **Create deployment group (Criar grupo de implantação)**.

1. Na página **Create deployment group (Criar grupo de implantação)**, em **Deployment group name (Nome do grupo de implantação)**, insira um nome para o segundo grupo de implantação (por exemplo, **CodePipelineProductionFleet**).

1. Em **Função de serviço**, escolha a mesma função de CodeDeploy serviço que você usou para a implantação inicial (não a função CodePipeline de serviço).

1. Em **Deployment type (Tipo de implantação)**, selecione **In-place (No local)**.

1. Em **Environment configuration (Configuração do ambiente)**, selecione **Amazon EC2 Instances (Instâncias do Amazon EC2)**. Escolha **Nome** na caixa **Chave** e, na caixa **Valor**, escolha `MyCodePipelineDemo` na lista. Deixe a configuração padrão para **Deployment settings (Configurações da implantação)**. 

1. Em **Deployment configuration (Configuração de implantação)**, selecione `CodeDeployDefault.OneAtaTime`.

1. Em **Load Balancer**, desmarque **Enable load balancing (Habilitar balanceamento de carga)**.

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

### Adicionar o grupo de implantação como outro estágio ao pipeline
<a name="s3-add-stage-part-2"></a>

Agora que você possui outro grupo de implantação, poderá adicionar um estágio que usa esse grupo para implantar nas mesmas instâncias do EC2 usadas anteriormente. Você pode usar o CodePipeline console ou o AWS CLI para adicionar esse estágio. 

**Topics**
+ [Criar um terceiro estágio (console)](#s3-add-stage-part-2-console)
+ [Criar um terceiro estágio (CLI)](#s3-add-stage-part-2-cli)

#### Criar um terceiro estágio (console)
<a name="s3-add-stage-part-2-console"></a>

Você pode usar o CodePipeline console para adicionar um novo estágio que usa o novo grupo de implantação. Como esse grupo de implantação está implantando nas instâncias do EC2 que você já usou, a ação de implantação neste estágio falhará. 

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. Em **Name (Nome)**, selecione o nome do pipeline que você criou, MyFirstPipeline. 

1. Na página de detalhes do pipeline, selecione **Editar**. 

1. Na página **Edit (Editar)**, escolha **\$1 Add stage (\$1 Adicionar estágio)** para adicionar um estágio logo depois do estágio de implantação.   
![\[Imagem exibindo o botão + Adicionar estágio na tela de edição\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/edit-pipeline-console-pol.png)

1. Em **Add stage (Adicionar estágio)**, em **Stage name (Nome do estágio)**, insira **Production**. Escolha **Add stage (Adicionar estágio)**.

1. No novo estágio, escolha **\$1 Add action group (\$1 Adicionar grupo de ação)**.

1. Em **Edit action (Editar ação)**, em **Action name (Nome da ação)**, insira **Deploy-Second-Deployment**. Em **Provedor de ação**, em **Implantar**, escolha **CodeDeploy**.

1. Na CodeDeploy seção, em **Nome `MyDemoApplication` do aplicativo**, escolha na lista suspensa, como você fez quando criou o pipeline. Em **Deployment group (Grupo de implantação)**, selecione o grupo de implantação que você acabou de criar, **CodePipelineProductionFleet**. Em **Input artifacts (Artefatos de entrada)**, escolha o artefato de entrada da ação de origem. Escolha **Salvar**.

1. Na página **Edit (Editar)**, escolha **Save (Salvar)**. Em **Save pipeline changes (Salvar alterações de pipeline)**, escolha **Save (Salvar)**.

1. Embora o novo estágio tenha sido adicionado ao seu pipeline, um status de **Ainda não executado** é exibido, pois nenhuma alteração acionou outra execução do pipeline. Você deve reexecutar manualmente a última revisão para ver como o pipeline editado é executado. Na página de detalhes do pipeline, selecione **Lançar alteração** e, depois, **Lançar** quando solicitado. Essa ação executa a revisão mais recente disponível em cada local de origem especificado em uma ação de origem do pipeline. 

   Como alternativa, para usar o AWS CLI para executar novamente o pipeline, a partir de um terminal em sua máquina Linux, macOS ou Unix local, ou de um prompt de comando em sua máquina Windows local, execute o **start-pipeline-execution** comando, especificando o nome do pipeline. Isso executa o aplicativo em seu bucket de origem por meio do pipeline pela segunda vez.

   ```
   aws codepipeline start-pipeline-execution --name MyFirstPipeline
   ```

   Esse comando retorna um `pipelineExecutionId` objeto.

1. Volte ao CodePipeline console e, na lista de pipelines, escolha abrir **MyFirstPipeline**a página de visualização.

   O pipeline mostra três estágios e o estado do artefato em execução através destes três estágios. Pode levar até cinco minutos para que o pipeline execute todas os estágios. Você vê que a implantação é bem-sucedida nos dois primeiros estágios, da mesma forma que antes, mas o estágio **Production (Produção)** mostra que a ação **Deploy-Second-Deployment** falhou.

1. Na ação **Deploy-Second-Deployment**, selecione **Detalhes**. Você é redirecionado para a página da implantação do CodeDeploy. Nesse caso, a falha resulta da implantação do primeiro grupo de instâncias em todas as instâncias do EC2, sem deixar qualquer instância para o segundo grupo de implantação.
**nota**  
Esta falha é por projeto, para demonstrar o que acontece quando ocorre uma falha em um estágio do pipeline.

#### Criar um terceiro estágio (CLI)
<a name="s3-add-stage-part-2-cli"></a>

Embora usar o AWS CLI para adicionar um estágio ao seu pipeline seja mais complexo do que usar o console, ele fornece mais visibilidade da estrutura do pipeline.

**Para criar um terceiro estágio para seu pipeline**

1. Abra uma sessão de terminal na máquina local do Linux, do macOS ou do Unix ou um prompt de comando na máquina local do Windows e execute o comando **get-pipeline** para exibir a estrutura de pipeline que você acabou de criar. Em **MyFirstPipeline**, digite o seguinte comando: 

   ```
   aws codepipeline get-pipeline --name "MyFirstPipeline"
   ```

   Esse comando retorna a estrutura do MyFirstPipeline. A primeira parte da saída deve ser semelhante ao seguinte:

   ```
   {
       "pipeline": {
           "roleArn": "arn:aws:iam::80398EXAMPLE:role/AWS-CodePipeline-Service",
           "stages": [
       ...
   ```

   A última parte da saída inclui os metadados do pipeline e deve ser semelhante ao seguinte:

   ```
       ...
           ],
           "artifactStore": {
               "type": "S3"
               "location": "amzn-s3-demo-bucket",
           },
           "name": "MyFirstPipeline",
           "version": 4
       },
       "metadata": {
           "pipelineArn": "arn:aws:codepipeline:us-east-2:80398EXAMPLE:MyFirstPipeline",
           "updated": 1501626591.112,
           "created": 1501626591.112
       }
   }
   ```

1. Copie e cole essa estrutura em um editor de texto plano e salve o arquivo como **pipeline.json**. Para sua conveniência, salve este arquivo no mesmo diretório onde você executa os comandos **aws codepipeline**.
**nota**  
Você pode canalizar o JSON diretamente em um arquivo com o comando **get-pipeline** da seguinte forma:  

   ```
   aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json
   ```

1. Copie a seção da etapa **Implantar** e cole-a após as duas primeiras etapas. Como é uma etapa de implantação, assim como a etapa **Implantar**, você a usará como um modelo para a terceira etapa. 

1. Altere o nome do estágio e os detalhes do grupo de implantação. 

   O exemplo a seguir mostra o JSON que será adicionado ao arquivo pipeline.json após a etapa de **implantação**. Edite os elementos enfatizados com novos valores. Lembre-se de incluir uma vírgula para separar as definições das etapas **Implantar** e **Produção**.

   ```
   ,
   {
       "name": "Production",
        "actions": [
           {
            "inputArtifacts": [
                {
                 "name": "MyApp"
                }
              ],
             "name": "Deploy-Second-Deployment",
             "actionTypeId": {
                 "category": "Deploy",
                 "owner": "AWS",
                 "version": "1",
                 "provider": "CodeDeploy"
                 },
            "outputArtifacts": [],
            "configuration": {
                 "ApplicationName": "CodePipelineDemoApplication",
                 "DeploymentGroupName": "CodePipelineProductionFleet"
                  },
            "runOrder": 1
           }
       ]
   }
   ```

1. Se você estiver trabalhando com a estrutura do pipeline recuperada por meio do comando **get-pipeline**, é necessário remover as linhas `metadata` do arquivo JSON. Caso contrário, o comando **update-pipeline** não é capaz de utilizá-la. Remova as linhas `"metadata": { }`, `"created"`, `"pipelineARN"` e os campos `"updated"`.

   Por exemplo, remova as seguintes linhas da estrutura:

   ```
   "metadata": {  
     "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name",
     "created": "date",
     "updated": "date"
     }
   ```

   Salve o arquivo.

1. Execute o comando **update-pipeline** especificando o arquivo JSON do pipeline, de modo semelhante ao seguinte:

   ```
   aws codepipeline update-pipeline --cli-input-json file://pipeline.json
   ```

   Este comando retorna toda a estrutura do pipeline atualizado.
**Importante**  
Não se esqueça de incluir `file://` antes do nome de arquivo. Ele é obrigatório nesse comando.

1.  Execute o comando **start-pipeline-execution**, especificando o nome do pipeline. Isso executa o aplicativo em seu bucket de origem por meio do pipeline pela segunda vez.

   ```
   aws codepipeline start-pipeline-execution --name MyFirstPipeline
   ```

   Esse comando retorna um `pipelineExecutionId` objeto.

1. Abra o CodePipeline console e escolha **MyFirstPipeline**na lista de pipelines.

   O pipeline mostra três estágios e o estado do artefato em execução através destes três estágios. Pode levar até cinco minutos para que o pipeline execute todas os estágios. Embora a implantação seja bem-sucedida nos dois primeiros estágios, da mesma forma que antes, o estágio **Produção** mostra que a ação **Deploy-Second-Deployment** falhou. 

1. Na ação **Deploy-Second-Deployment**, selecione **Detalhes** para ver os detalhes da falha. Você será redirecionado para a página de detalhes da CodeDeploy implantação. Nesse caso, a falha resulta da implantação do primeiro grupo de instâncias em todas as instâncias do EC2, sem deixar qualquer instância para o segundo grupo de implantação. 
**nota**  
Esta falha é por projeto, para demonstrar o que acontece quando ocorre uma falha em um estágio do pipeline.

## (Opcional) Etapa 6: desativar e ativar as transições entre os estágios no CodePipeline
<a name="s3-configure-transitions"></a>

Você pode habilitar ou desabilitar a transição entre estágios em um pipeline. Desabilitar a transição entre os estágios permite que você controle manualmente as transições entre um estágio e outro. Por exemplo, você talvez queira executar os primeiros dois estágios de um pipeline, mas desativar as transições para o terceiro estágio até que você esteja pronto para implantar para produção ou ao solucionar um problema ou uma falha com esse estágio.

**Para desativar e ativar as transições entre os estágios em um pipeline CodePipeline**

1. Abra o CodePipeline console e escolha **MyFirstPipeline**na lista de pipelines.

1. Na página de detalhes do pipeline, selecione o botão **Desativar transição** entre a segunda etapa, (**Implantar**) e a terceira etapa adicionada na seção anterior, (**Produção**).

1. Em **Disable transition (Desabilitar transição)**, insira um motivo para desabilitar a transição entre os estágios e depois selecione **Disable (Desabilitar)**.

   A seta entre estágios exibe um ícone e uma alteração de cor e o botão **Enable transition (Permitir transição)** é exibido.  
![\[Imagem exibindo o motivo fornecido para desativar a transição como “Desativando a transição enquanto investigo a falha”.\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/codepipeline-disabled-transition-pol.png)

1. Faça o upload de sua amostra novamente para o bucket do S3. Como o bucket é versionado, essa mudança inicia o pipeline. 

1. Volte para a página de detalhes de seu pipeline e veja o status dos estágios. A visualização do pipeline é alterada para mostrar o andamento e o sucesso nos primeiros dois estágios, mas nenhuma alteração ocorre no terceiro estágio. Esse processo pode levar alguns minutos.

1. Permita a transição selecionando o botão **Enable transition (Permitir transição)** entre os dois estágios. Na caixa de diálogo **Permitir transição**, selecione **Permitir**. O estágio começa a ser executado em alguns minutos e tenta processar o artefato que foi executado pelos dois primeiros estágios de pipeline.
**nota**  
Se você quiser que esse terceiro estágio seja bem-sucedido, edite o grupo de CodePipelineProductionFleet implantação antes de habilitar a transição e especifique um conjunto diferente de instâncias do EC2 em que o aplicativo é implantado. Para mais informações sobre como fazer isso, consulte [Alterar configurações do grupo de implantação](https://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-change-deployment-group-settings.html). Se você criar mais instâncias do EC2, poderá incorrer em custos adicionais. 

## Etapa 7: Limpar os recursos
<a name="s3-clean-up"></a>

Você pode usar alguns dos recursos criados neste tutorial para o [Tutorial: Criar um pipeline de quatro estágios](tutorials-four-stage-pipeline.md). Por exemplo, você pode reutilizar o CodeDeploy aplicativo e a implantação. Você pode configurar uma ação de criação com um provedor CodeBuild, como, que é um serviço de compilação totalmente gerenciado na nuvem. Você também pode configurar uma ação de criação que use um provedor com um servidor ou um sistema de criação, como o Jenkins.

No entanto, após finalizar este e outros tutoriais, você deverá excluir o pipeline e os recursos usados para não ser cobrado pelo uso contínuo desses recursos. Primeiro, exclua o pipeline, depois o CodeDeploy aplicativo e suas instâncias associadas do Amazon EC2 e, finalmente, o bucket do S3.

**Para limpar os recursos usados neste tutorial**

1. Para limpar seus CodePipeline recursos, siga as instruções em [Excluir um pipeline em AWS CodePipeline](pipelines-delete.md).

1. Para limpar seus CodeDeploy recursos, siga as instruções em [Para limpar recursos (console)](https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorials-wordpress-clean-up.html#tutorials-wordpress-clean-up-console).

1. Para excluir o bucket do S3, siga as instruções em [Excluir ou esvaziar um bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-or-empty-bucket.html). Se você não pretende criar mais pipelines, exclua o bucket do S3 criado para o armazenamento de seus artefatos do pipeline. Para mais informações sobre esse bucket, consulte [CodePipeline conceitos ](concepts.md).

# Tutorial: criar um pipeline simples (CodeCommit repositório)
<a name="tutorials-simple-codecommit"></a>

Neste tutorial, você usa CodePipeline para implantar código mantido em um CodeCommit repositório em uma única instância do Amazon EC2. Seu pipeline é acionado quando você envia uma alteração para o CodeCommit repositório. O pipeline implanta suas alterações em uma instância do Amazon EC2 CodeDeploy usando como serviço de implantação.

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

O pipeline tem dois estágios:
+ Um estágio de origem (**Fonte**) para sua ação CodeCommit de origem.
+ Um estágio de implantação (**Implantação**) para sua ação CodeDeploy de implantação.

A maneira mais fácil de começar AWS CodePipeline é usar o assistente **Create Pipeline** no CodePipeline console.

**nota**  
Antes de começar, certifique-se de ter configurado seu cliente Git para trabalhar com ele. CodeCommit Para obter instruções, consulte [Configuração para o CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up.html).

## Etapa 1: criar um CodeCommit repositório
<a name="codecommit-create-repository"></a>

Primeiro, você cria um repositório no CodeCommit. Seu pipeline obtém o código-fonte desse repositório quando for executado. Você também cria um repositório local onde mantém e atualiza o código antes de enviá-lo para o CodeCommit repositório.

**Para criar um CodeCommit repositório**



1. Abra o CodeCommit console em [https://console.aws.amazon.com/codecommit/](https://console.aws.amazon.com/codecommit/).

1. No seletor de região, escolha Região da AWS onde você deseja criar o repositório e o pipeline. Para obter mais informações, consulte [Regiões da AWS e endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html).

1. Na página **Repositories (Repositórios)**, selecione **Create repository (Criar repositório)**.

1. Na página **Create repository (Criar repositório)**, em **Repository name (Nome do repositório)**, insira um nome para o repositório (por exemplo **MyDemoRepo**).

1. Escolha **Criar**.

**nota**  
As etapas restantes deste tutorial são usadas **MyDemoRepo** para o nome do seu CodeCommit repositório. Se você escolher um nome diferente, certifique-se de usá-lo durante todo este tutorial.

**Como configurar um repositório local**

Nesta etapa, você configurará um repositório local para se conectar ao repositório remoto do CodeCommit.
**nota**  
Não é necessário configurar um repositório local. Você também pode usar o console do para fazer upload dos arquivos, conforme descrito em [Etapa 2: adicionar código de amostra ao seu CodeCommit repositório](#codecommit-add-code).

1. Com o novo repositório aberto no console, escolha **Clone URL (Clonar URL)** no canto superior direito da página e, depois, escolha **Clone SSH (Clonar SSH)**. O endereço para clonar o repositório Git é copiado na área de transferência.

1. No terminal ou na linha de comando, navegue até um diretório local onde você deseja que seu repositório local seja armazenado. Neste tutorial, usamos `/tmp`.

1. Execute o comando a seguir para clonar o repositório, substituindo o endereço SSH pelo que você copiou na etapa anterior. Esse comando cria um diretório chamado `MyDemoRepo`. Copie um aplicativo de exemplo nesse diretório.

   ```
   git clone ssh://git-codecommit.us-west-2.amazonaws.com/v1/repos/MyDemoRepo
   ```

## Etapa 2: adicionar código de amostra ao seu CodeCommit repositório
<a name="codecommit-add-code"></a>

Nesta etapa, você baixa o código de um aplicativo de amostra que foi criado para um CodeDeploy exemplo de demonstração e o adiciona ao seu CodeCommit repositório.



1. Depois, faça download de um exemplo e salve-o em uma pasta ou um diretório no computador local.

   1. Escolha uma das opções a seguir. Selecione `SampleApp_Linux.zip` se deseja seguir as etapas deste tutorial para instâncias do Linux.
      + Se você quiser implantar em instâncias Amazon Linux usando CodeDeploy, baixe o aplicativo de amostra aqui: [SampleApp\$1Linux.zip](samples/SampleApp_Linux.zip).
      + Se você quiser implantar em instâncias do Windows Server usando CodeDeploy, baixe o aplicativo de amostra aqui: [SampleApp\$1Windows.zip](samples/SampleApp_Windows.zip).

      O aplicativo de amostra contém os seguintes arquivos para implantação com CodeDeploy: 
      + `appspec.yml`— O arquivo de especificação do aplicativo (AppSpecarquivo) é um arquivo formatado em [YAML](http://www.yaml.org) usado por CodeDeploy para gerenciar uma implantação. Para obter mais informações sobre o AppSpec arquivo, consulte [Referência CodeDeploy AppSpec do arquivo](https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html) no *Guia AWS CodeDeploy do usuário*.
      + `index.html`: o arquivo de índice contém a página inicial da aplicação de exemplo implantada.
      + `LICENSE.txt`: o arquivo de licença contém informações de licença da aplicação de exemplo.
      + Arquivos para scripts: a aplicação de exemplo usa scripts para gravar arquivos de texto em um local na instância. Um arquivo é gravado para cada um dos vários eventos do ciclo de vida da CodeDeploy implantação da seguinte forma:
        + Pasta `scripts` (somente exemplo do Linux): a pasta contém os seguintes scripts de shell para instalar dependências e iniciar e interromper a aplicação de exemplo para a implantação automatizada: `install_dependencies`, `start_server` e `stop_server`.
        + (Somente exemplo do Windows) `before-install.bat`: um script em lote para o evento de ciclo de vida de implantação `BeforeInstall`, que será executado para remover os arquivos antigos gravados durante implantações anteriores deste exemplo e criar um local na instância onde os novos arquivos serão gravados.

   1. Faça download do arquivo compactado.

1. Descompacte os arquivos do [SampleApp\$1Linux.zip](samples/SampleApp_Linux.zip) no diretório local que você criou anteriormente (por exemplo, `/tmp/MyDemoRepo` ou`c:\temp\MyDemoRepo`).

   Certifique-se de alocar os arquivos diretamente em seu repositório local. Não inclua uma pasta `SampleApp_Linux`. Na máquina Linux, macOS ou Unix local, por exemplo, a hierarquia de arquivos e diretórios deve ser semelhante a:

   ```
   /tmp
      └-- MyDemoRepo
          │-- appspec.yml
          │-- index.html
          │-- LICENSE.txt
          └-- scripts
              │-- install_dependencies
              │-- start_server
              └-- stop_server
   ```

1. Para fazer upload dos arquivos para o repositório, use um dos métodos a seguir.

   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. Selecione **Choose file (Escolher arquivo)** e procure o arquivo. Para adicionar um arquivo em uma pasta, selecione **Criar arquivo** e, depois, insira o nome da pasta com o nome do arquivo, como `scripts/install_dependencies`. Cole o conteúdo do arquivo no novo 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 esta etapa para cada arquivo.

         O conteúdo do repositório deve ter a seguinte aparência:

         ```
                │-- appspec.yml
                │-- index.html
                │-- LICENSE.txt
                └-- scripts
                    │-- install_dependencies
                    │-- start_server
                    └-- stop_server
         ```

   1. Para usar os comandos do git para fazer upload dos arquivos: 

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

         ```
         (For Linux, macOS, or Unix) cd /tmp/MyDemoRepo
         (For Windows) cd c:\temp\MyDemoRepo
         ```

      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 "Add sample application files"
         ```

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

         ```
         git push
         ```

1. Os arquivos que você baixou e adicionou ao seu repositório local agora foram adicionados à `main` ramificação do seu CodeCommit `MyDemoRepo` repositório e estão prontos para serem incluídos em um pipeline.

## Etapa 3: Crie uma instância Linux do Amazon EC2 e instale o agente CodeDeploy
<a name="codecommit-create-deployment"></a>

Nesta etapa, você vai criar a instância do Amazon EC2 na qual implantará uma aplicação de exemplo. Como parte desse processo, crie uma função de instância que permita a instalação e o gerenciamento do CodeDeploy agente na instância. O CodeDeploy agente é um pacote de software que permite que uma instância seja usada em CodeDeploy implantações. Você também anexa políticas que permitem que a instância busque arquivos que o CodeDeploy agente usa para implantar seu aplicativo e permitir que a instância seja gerenciada pelo SSM.

**Como criar uma função de instância**

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 **EC2**. Em **Select your use case (Selecione seu caso de uso)**, escolha **EC2**. Escolha **Próximo: Permissões**.

1. Procure e selecione a política chamada **`AmazonEC2RoleforAWSCodeDeploy`**. 

1. Procure e selecione a política chamada **`AmazonSSMManagedInstanceCore`**. Escolha **Próximo: tags**.

1. Selecione **Próximo: revisar**. Forneça um nome para a função (por exemplo, **EC2InstanceRole**).
**nota**  
Anote o nome da função para a próxima etapa. Escolha essa função ao criar a instância.

   Selecione **Criar perfil**.

**Como iniciar uma instância**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Na navegação lateral, escolha **Instâncias** e selecione **Executar instâncias** na parte superior da página.

1. Em **Nome**, insira **MyCodePipelineDemo**. Isso atribui à instância uma tag **Chave** de **Name** e uma tag **Valor** de **MyCodePipelineDemo**. Posteriormente, você cria um CodeDeploy aplicativo que implanta o aplicativo de amostra nessa instância. CodeDeployseleciona instâncias a serem implantadas com base nas tags.

1. Em **Imagens do aplicativo e do sistema operacional (Amazon Machine Image)**, localize a opção **Amazon Linux** AMI com o AWS logotipo e verifique se ela está selecionada. (Essa AMI é descrita como AMI do Amazon Linux 2 (HVM) e é identificada como “Elegível para o nível gratuito”.)

1. Em **Tipo de instância**, selecione o tipo `t2.micro` elegível para o nível gratuito como configuração de hardware para a instância.

1. Na seção **Par de chaves (login)**, selecione um par de chaves ou crie um. 

   Também é possível selecionar **Prosseguir sem um par de chaves**.
**nota**  
Para os fins deste tutorial, é possível prosseguir sem um par de chaves. Para usar o SSH para se conectar às instâncias, crie ou use um par de chaves.

1. Em **Configurações de rede**, faça o seguinte:

   Em **Atribuir IP público automaticamente**, verifique se o status é **Habilitado**.

   Selecione o grupo de segurança criado, escolha **HTTP** e, em **Tipo de origem**, escolha **Meu IP**.

1. Expanda **Advanced details** (Detalhes avançados). Em **Perfil de instância do IAM**, selecione o perfil do IAM criado no procedimento anterior (por exemplo, **EC2InstanceRole**).

1. Em **Resumo**, em **Número de instâncias**, insira `1`.

1. Escolha **Iniciar instância**. 

1. É possível visualizar o status da ativação na página **Instâncias**. Ao executar uma instância, seu estado inicial é `pending`. Após o início da instância, seu estado muda para `running` e ela recebe um nome DNS público. (Se a coluna do **Public DNS (DNS público)** não for exibida, selecione o ícone **Show/Hide (Exibir/Ocultar)** e **Public DNS (DNS público)**.)

## Etapa 4: criar um aplicativo no CodeDeploy
<a name="codecommit-create-codedeploy-app"></a>

Em CodeDeploy, um [https://docs.aws.amazon.com/codedeploy/latest/userguide/applications.html](https://docs.aws.amazon.com/codedeploy/latest/userguide/applications.html) é um recurso que contém o aplicativo de software que você deseja implantar. Posteriormente, você usa esse aplicativo CodePipeline para automatizar as implantações do aplicativo de amostra na sua instância do Amazon EC2.

Primeiro, você cria uma função que permite CodeDeploy realizar implantações. Depois, crie um aplicativo do CodeDeploy .

**Para criar uma função CodeDeploy de serviço**

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 entidade confiável**, escolha **AWS service (Serviço da AWS)**. Em **Use case** (Caso de uso), escolha **CodeDeploy**. **CodeDeploy**Escolha entre as opções listadas. Escolha **Próximo**. A política gerenciada `AWSCodeDeployRole` já está anexada à função.

1. Escolha **Próximo**.

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

**Para criar um aplicativo no CodeDeploy**

1. Abra o CodeDeploy console em [https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy).

1. Se a página **Aplicações** não for exibida, no menu, selecione **Aplicações**.

1. Escolha **Criar aplicativo**.

1. Em **Nome do aplicativo**, insira **MyDemoApplication**. 

1. Em **Plataforma de computação**, selecione **EC2/On-Premises**.

1. Escolha **Criar aplicativo**.

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

Um [https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-groups.html](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-groups.html) é um recurso que define configurações relacionadas à implantação, como em quais instâncias implantar e com que rapidez implantá-las.

1. Na página que mostra o aplicativo, selecione **Create deployment group (Criar grupo de implantação)**.

1. Em **Nome do grupo de implantação**, insira **MyDemoDeploymentGroup**.

1. Em **Perfil de serviço**, selecione o perfil de serviço criado anteriormente (por exemplo, **`arn:aws:iam::account_ID:role/CodeDeployRole`**).

1. Em **Deployment type (Tipo de implantação)**, selecione **In-place (No local)**.

1. Em **Environment configuration (Configuração do ambiente)**, selecione **Amazon EC2 Instances (Instâncias do Amazon EC2)**. No campo, **Chave**, insira **Name**. No campo **Valor**, insira o nome usado para marcar a instância (por exemplo, **MyCodePipelineDemo**).

1. Em **Configuração do agente com AWS Systems Manager**, escolha **Agora e agende atualizações**. Isso vai instalar o agente na instância. A instância Linux já está configurada com o agente SSM e agora será atualizada com o CodeDeploy agente.

1. Em **Deployment configuration (Configuração de implantação)**, selecione `CodeDeployDefault.OneAtaTime`.

1. Em **Balanceador de carga**, verifique se **Habilitar balanceamento de carga** não está selecionado. Você não precisa configurar um load balancer ou escolher um grupo de destino para este exemplo.

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

## Etapa 5: Crie seu primeiro funil em CodePipeline
<a name="codecommit-create-pipeline"></a>

Agora, você está pronto para criar e executar seu primeiro pipeline. Nesta etapa, você cria um pipeline que é executado automaticamente quando o código é enviado ao seu CodeCommit repositório.

**Para criar um CodePipeline pipeline**

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

   Abra o CodePipeline console em [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

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 **MyFirstPipeline**.

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 **CodeCommit**. Em **Nome do repositório**, escolha o nome do CodeCommit repositório em que você criou. [Etapa 1: criar um CodeCommit repositório](#codecommit-create-repository) Em **Branch name (Nome da ramificação)**, escolha `main` e, depois, selecione **Next step (Próxima etapa)**.

   Depois de selecionar o nome do repositório e a ramificação, uma mensagem exibe a regra Amazon CloudWatch Events a ser criada para esse pipeline. 

   Em **Change detection options (Alterar opções de detecção)**, deixe os valores padrão. Isso permite CodePipeline usar o Amazon CloudWatch Events para detectar alterações em seu repositório de origem.

   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**.
**nota**  
Neste tutorial, você está implantando um código que não requer um serviço de compilação, portanto, ignore esta etapa. No entanto, se o código-fonte precisar ser compilado antes de ser implantado em instâncias, você poderá configurar [CodeBuild](https://aws.amazon.com/codebuild/) nesta etapa.

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**, em **Provedor de implantação**, escolha **CodeDeploy**. Em **Application name (Nome do aplicativo)**, escolha **MyDemoApplication**. Em **Deployment group (Grupo de implantação)**, escolha **MyDemoDeploymentGroup** e, depois, selecione **Next step (Próxima etapa)**.

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

1. O pipeline começa a ser executado depois de ser criado. Ele baixa o código do seu CodeCommit repositório e cria uma CodeDeploy implantação na sua instância do EC2. Você pode visualizar o progresso e as mensagens de sucesso e falha à medida que a CodePipeline amostra implanta a página da web na instância do Amazon EC2 na implantação. CodeDeploy   
![\[Uma visão de um pipeline começando a ser executado no CodePipeline console.\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/codepipeline-firstpipeline-codecommit-pol.png)

Parabéns\$1 Você acabou de criar um pipeline simples em CodePipeline. 

Depois, você verifica os resultados.

**Para verificar se o seu pipeline foi executado com êxito**

1. Visualize o progresso inicial do pipeline. O status de cada estágio muda de **No executions yet** (Ainda não executado) para **In Progress** (Em andamento) e, então, para **Succeeded** (Bem-sucedido) ou **Failed** (Falhou). O pipeline deve concluir a primeira execução dentro de alguns minutos.

1. Depois que **Succeeded** for exibido para o status do pipeline, na área de status do estágio **Implantação**, escolha **CodeDeploy**. Isso abre o CodeDeploy console. Se **Succeeded (Bem-sucedido)** não for exibido, consulte [Solução de problemas CodePipeline](troubleshooting.md).

1.  Na guia **Implantações**, selecione o ID de implantação. Na página da implantação, em **Eventos de ciclo de vida da implantação**, selecione o ID da instância. Isso abre o console do EC2.

1. Na guia **Description (Descrição)**, em **Public DNS (DNS público)**, copie o endereço (por exemplo, `ec2-192-0-2-1.us-west-2.compute.amazonaws.com`) e cole-o na barra de endereços de seu navegador da Web.

   A página da web é exibida para o aplicativo de amostra que você baixou e enviou para o seu CodeCommit repositório.

Para obter mais informações sobre os estágios, as ações e o funcionamento dos pipelines, consulte [CodePipeline conceitos ](concepts.md).

## Etapa 6: modificar o código no seu CodeCommit repositório
<a name="codecommit-push-code"></a>

O pipeline está configurado para ser executado sempre que forem feitas alterações de código no repositório do CodeCommit. Nesta etapa, você faz alterações no arquivo HTML que faz parte do CodeDeploy aplicativo de amostra no CodeCommit repositório. Quando essas alterações são enviadas, o pipeline é executado novamente, e as alterações feitas ficam visíveis no endereço da web acessado anteriormente.

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

   ```
   (For Linux, macOS, or Unix) cd /tmp/MyDemoRepo
   (For Windows) cd c:\temp\MyDemoRepo
   ```

1. Use um editor de texto para modificar o arquivo `index.html`:

   ```
   (For Linux or Unix)gedit index.html
   (For OS X)open –e index.html
   (For Windows)notepad index.html
   ```

1. Revise o conteúdo do arquivo `index.html` para alterar a cor do plano de fundo e parte do texto na página da web e depois salve o arquivo. 

   ```
   <!DOCTYPE html>
   <html>
   <head>
     <title>Updated Sample Deployment</title>
     <style>
       body {
         color: #000000;
         background-color: #CCFFCC;
         font-family: Arial, sans-serif;  
         font-size:14px;
       }
           
       h1 {
         font-size: 250%;
         font-weight: normal;
         margin-bottom: 0;
       }
       
       h2 {
         font-size: 175%;
         font-weight: normal;
         margin-bottom: 0;
       }
     </style>
   </head>
   <body>
     <div align="center"><h1>Updated Sample Deployment</h1></div>
     <div align="center"><h2>This application was updated using CodePipeline, CodeCommit, and CodeDeploy.</h2></div>
     <div align="center">
       <p>Learn more:</p> 
       <p><a href="https://docs.aws.amazon.com/codepipeline/latest/userguide/">CodePipeline User Guide</a></p>
       <p><a href="https://docs.aws.amazon.com/codecommit/latest/userguide/">CodeCommit User Guide</a></p>
       <p><a href="https://docs.aws.amazon.com/codedeploy/latest/userguide/">CodeDeploy User Guide</a></p>
     </div>
   </body>
   </html>
   ```

1. Confirme e envie suas alterações para seu CodeCommit repositório executando os seguintes comandos, um por vez:

   ```
   git commit -am "Updated sample application files"
   ```

   ```
   git push
   ```

**Como verificar se seu pipeline foi executado com êxito**

1. Visualize o progresso inicial do pipeline. O status de cada estágio muda de **No executions yet** (Ainda não executado) para **In Progress** (Em andamento) e, então, para **Succeeded** (Bem-sucedido) ou **Failed** (Falhou). A execução do pipeline deve ser concluída em alguns minutos.

1. Depois que **Succeeded (Bem-sucedido)** for exibido para o status da ação, atualize a página de demonstração acessada anteriormente no navegador.

   A página da web atualizada é exibida.

## Etapa 7: Limpar os recursos
<a name="codecommit-clean-up"></a>

É possível usar alguns dos recursos criados neste tutorial para outros tutoriais neste guia. Por exemplo, você pode reutilizar o CodeDeploy aplicativo e a implantação. No entanto, depois de finalizar este e outros tutoriais, você deverá excluir o pipeline e os recursos usados para não ser cobrado pelo uso contínuo desses recursos. Primeiro, exclua o pipeline, depois o CodeDeploy aplicativo e sua instância associada do Amazon EC2 e, finalmente, o CodeCommit repositório.

**Para limpar os recursos usados neste tutorial**

1. Para limpar seus CodePipeline recursos, siga as instruções em [Excluir um pipeline em AWS CodePipeline](pipelines-delete.md).

1. Para limpar seus CodeDeploy recursos, siga as instruções em [Clean Up Deployment Walkthrough](https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorials-simple-s3alkthrough.html#tutorials-simple-s3alkthrough-clean-up) Resources.

1. Para excluir o CodeCommit repositório, siga as instruções em [Excluir um CodeCommit repositório](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-delete-repository.html).

## Etapa 8: Outras fontes de leitura
<a name="codecommit-optional-tasks"></a>

Saiba mais sobre como CodePipeline funciona:
+ Para obter mais informações sobre os estágios, as ações e o funcionamento dos pipelines, consulte [CodePipeline conceitos ](concepts.md).
+ Para obter informações sobre as ações que você pode executar usando CodePipeline, consulte[Integrações com tipos de CodePipeline ação](integrations-action-type.md).
+ Experimente este tutorial mais avançado, [Tutorial: Criar um pipeline de quatro estágios](tutorials-four-stage-pipeline.md). Ele cria um pipeline de vários estágios incluindo uma etapa que cria o código antes de ser implantado.

# Tutorial: Criar um pipeline de quatro estágios
<a name="tutorials-four-stage-pipeline"></a>

Agora que criou o primeiro pipeline em [Tutorial: Criar um pipeline simples (bucket do S3)](tutorials-simple-s3.md) ou [Tutorial: criar um pipeline simples (CodeCommit repositório)](tutorials-simple-codecommit.md), você pode começar a criar pipelines mais complexos. Este tutorial orientará você na criação de um pipeline de quatro estágios que usa um GitHub repositório para sua fonte, um servidor de compilação Jenkins para criar o projeto e um CodeDeploy aplicativo para implantar o código criado em um servidor de teste. O diagrama a seguir mostra o pipeline inicial de três estágios.

![\[Um diagrama mostrando o estágio de origem com a ação de origem, um estágio de compilação com a ação do Jenkins e um estágio de implantação com a ação de implantação.\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/flow-codepipeline-codecommit-jenkins.png)


Após a criação do pipeline, você o editará para adicionar um estágio com uma ação de teste para testar o código, também usando Jenkins. 

Antes de criar esse pipeline, você deve configurar os recursos necessários. Por exemplo, se você quiser usar um GitHub repositório para seu código-fonte, deverá criar o repositório antes de adicioná-lo a um pipeline. Como parte da configuração, este tutorial orienta você a configurar o Jenkins em uma instância do EC2 para fins de demonstração. 

**Importante**  
Muitas das ações adicionadas ao pipeline nesse procedimento envolvem AWS recursos que você precisa criar antes de criar o pipeline. AWS os recursos para suas ações de origem sempre devem ser criados na mesma AWS região em que você cria seu pipeline. Por exemplo, se você criar seu pipeline na região Leste dos EUA (Ohio), seu CodeCommit repositório deverá estar na região Leste dos EUA (Ohio).   
Você pode adicionar ações entre regiões ao criar seu pipeline. AWS os recursos para ações entre regiões devem estar na mesma AWS região em que você planeja executar a ação. Para obter mais informações, consulte [Adicionar uma ação entre regiões em CodePipeline](actions-create-cross-region.md).

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

Antes de iniciar este tutorial, você já deve ter concluído os pré-requisitos gerais em [Começando com CodePipeline](getting-started-codepipeline.md).

**Topics**
+ [Etapa 1: Concluir os pré-requisitos](#tutorials-four-stage-pipeline-prerequisites)
+ [Etapa 2: criar um pipeline no CodePipeline](#tutorials-four-stage-pipeline-pipeline-create)
+ [Etapa 3: Adicionar outro estágio ao pipeline](#tutorials-four-stage-pipeline-add-stage)
+ [Etapa 4: Limpar os recursos](#tutorials-four-stage-pipeline-clean-up)

## Etapa 1: Concluir os pré-requisitos
<a name="tutorials-four-stage-pipeline-prerequisites"></a>

Para se integrar com o Jenkins, é AWS CodePipeline necessário instalar o CodePipeline plug-in para Jenkins em qualquer instância do Jenkins com a qual você queira usar. CodePipeline Você também deve configurar um usuário ou função do IAM dedicado para usar como permissões entre seu projeto Jenkins e. CodePipeline A maneira mais fácil de integrar o Jenkins CodePipeline é instalar o Jenkins em uma instância do EC2 que usa uma função de instância do IAM criada por você para a integração com o Jenkins. Para a conexão dos links no pipeline das ações do Jenkins ocorrer com êxito, é necessário definir as configurações de proxy e firewall no servidor ou na instância do EC2 para permitir conexões de entrada na porta usada pelo projeto do Jenkins. Verifique se você configurou o Jenkins para autenticar usuários e aplicar o controle de acesso antes de permitir conexões nessas portas (por exemplo, 443 e 8443 se você fixou Jenkins para usar somente conexões HTTPS, ou 80 e 8080 se você permite conexões HTTP). Para obter mais informações, consulte [Como fixar Jenkins](https://wiki.jenkins.io/display/JENKINS/Securing+Jenkins).

**nota**  
Este tutorial usa uma amostra de código e configura as etapas de criação que convertem a amostra de Haml em HTML. Você pode baixar o código de amostra de código aberto do GitHub repositório seguindo as etapas em. [Copiar ou clonar a amostra em um repositório GitHub](#tutorials-four-stage-pipeline-prerequisites-github) Você precisará da amostra inteira em seu GitHub repositório, não apenas do arquivo.zip.   
Este tutorial também pressupõe que:  
Você está familiarizado com a instalação e administração do Jenkins e com a criação de projetos do Jenkins.
Você instalou o Rake e o gem de Haml para Ruby no mesmo computador ou instância que hospeda o projeto do Jenkins.
Você definiu as variáveis do ambiente do sistema exigidas para que os comandos do Rake possam ser executados do terminal ou da linha de comando (por exemplo, em sistemas Windows, alterar a variável PATH para incluir o diretório em que o Rake está instalado).

**Topics**
+ [Copiar ou clonar a amostra em um repositório GitHub](#tutorials-four-stage-pipeline-prerequisites-github)
+ [Criar um perfil do IAM a ser usado na integração do Jenkins](#tutorials-four-stage-pipeline-prerequisites-jenkins-iam-role)
+ [Instale e configure o Jenkins e o CodePipeline plug-in para Jenkins](#tutorials-four-stage-pipeline-prerequisites-jenkins-configure)

### Copiar ou clonar a amostra em um repositório GitHub
<a name="tutorials-four-stage-pipeline-prerequisites-github"></a>

**Para clonar a amostra e enviá-la para um repositório GitHub**

1. Baixe o código de amostra do GitHub repositório ou clone os repositórios em seu computador local. Há dois pacotes de amostra: 
   + [Se você for implantar sua amostra em instâncias Amazon Linux, RHEL ou Ubuntu Server, escolha codepipeline-jenkins-aws-codedeploy \$1linux.zip.](https://github.com/awslabs/aws-codepipeline-jenkins-aws-codedeploy_linux) 
   + Se você for implantar sua amostra em instâncias do Windows Server, escolha [CodePipeline-Jenkins](https://github.com/awslabs/AWSCodePipeline-Jenkins-AWSCodeDeploy_windows) - .zip. AWSCodeDeploy\$1Windows

1. No repositório, selecione **Fork** para clonar a amostra do repositório em um repositório na sua conta do Github. Para obter mais informações, consulte a [documentação do GitHub](https://help.github.com/articles/create-a-repo/).

### Criar um perfil do IAM a ser usado na integração do Jenkins
<a name="tutorials-four-stage-pipeline-prerequisites-jenkins-iam-role"></a>

Como prática recomendada, considere lançar uma instância do EC2 para hospedar seu servidor Jenkins e usar uma função do IAM para conceder à instância as permissões necessárias para interagir. CodePipeline

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

1. No painel de navegação do console do IAM, selecione **Perfis** e, depois, **Criar perfil**.

1. Em **Select type of trusted entity** (Selecionar o tipo de entidade confiável), escolha **AWS service (Serviço da AWS)**. Em **Choose the service that will use this role (Escolha o serviço que usará essa função)**, escolha **EC2**. Em **Select your use case (Selecione seu caso de uso)**, escolha **EC2**. 

1. Escolha **Próximo: Permissões**. Na página **Attach permissions policies (Anexar políticas de permissões)**, selecione a política gerenciada `AWSCodePipelineCustomActionAccess` e escolha **Next: Tags (Próximo: tags)**. Escolha **Próximo: revisar**.

1. Na página **Review (Revisar)** em **Role name (Nome da função)**, insira o nome da função a ser criada especificamente para integração do Jenkins (por exemplo *JenkinsAccess*) e escolha **Create role (Criar função)**.

Ao criar a instância do EC2 em que você instalará o Jenkins, em **Step 3: Configure Instance Details (Etapa 3: configurar os detalhes da instância)**, selecione a função da instância (por exemplo, *JenkinsAccess*).

Para obter mais informações sobre os perfis de instância e o Amazon EC2, consulte [Funções do IAM para Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html), [Uso de uma função do IAM para conceder permissões a aplicações em execução em instâncias do Amazon EC2](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-usingrole-ec2instance.html) e [Criar uma função para delegar permissões a um AWS service (Serviço da AWS)](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-creatingrole-service.html).

### Instale e configure o Jenkins e o CodePipeline plug-in para Jenkins
<a name="tutorials-four-stage-pipeline-prerequisites-jenkins-configure"></a>

**Para instalar o Jenkins e o CodePipeline plug-in para Jenkins**

1. Crie uma instância do EC2 em que você instalará o Jenkins e, em **Step 3: Configure Instance Details (Etapa 3: configurar os detalhes da instância)**, selecione a função da instância que você criou (por exemplo *JenkinsAccess*). Para obter mais informações sobre a criação de instâncias do EC2, consulte [Launch an Amazon EC2 instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance_linux.html) no *Guia do usuário do Amazon EC2*. 
**nota**  
Se você já tem recursos do Jenkins que deseja utilizar, pode usá-los, mas deve criar um usuário especial do IAM, aplicar a política gerenciada `AWSCodePipelineCustomActionAccess` a esse usuário e, depois, configurar e usar as credenciais de acesso para esse usuário no recurso do Jenkins. Se deseja utilizar a IU Jenkins para fornecer as credenciais, configure o Jenkins para permitir apenas HTTPS. Para obter mais informações, consulte [Solução de problemas CodePipeline](troubleshooting.md).

1. Instale o Jenkins na instância do EC2. Para obter mais informações, consulte a documentação do Jenkins para [instalar o Jenkins](https://www.jenkins.io/doc/book/installing/linux/) e [iniciar e acessar o Jenkins](https://wiki.jenkins.io/JENKINS/Starting-and-Accessing-Jenkins.html), assim como [details of integration with Jenkins](integrations-action-type.md#JenkinsInt_2) em [Integrações de produtos e serviços com CodePipeline](integrations.md).

1. Inicie o Jenkins e, na página inicial, selecione **Gerenciar Jenkins**.

1. Na página **Gerenciar Jenkins**, selecione **Gerenciar plug-ins**.

1. Selecione a guia **Available (Disponível)** e, na caixa de pesquisa **Filter (Filtro)**, insira **AWS CodePipeline**. Escolha **CodePipeline Plugin para Jenkins** na lista e escolha **Baixar agora e instalar após reiniciar**.

1. Na página **Instalar plug-ins/atualizações**, selecione **Reiniciar Jenkins quando a instalação estiver concluída e nenhum trabalho estiver em execução**.

1. Selecione **Voltar para o painel**.

1. Na página principal, selecione **Novo item**.

1. Em **Nome do item**, insira um nome para o projeto Jenkins (por exemplo,*MyDemoProject*). Selecione **Projeto estilo livre** e depois **OK**.
**nota**  
Verifique se o nome do projeto atende aos requisitos do CodePipeline. Para obter mais informações, consulte [Cotas no AWS CodePipeline.](limits.md).

1. Na página de configuração do projeto, selecione a caixa de seleção **Executar construções simultâneas se necessário**. Em **Source Code Management (Gerenciamento de código-fonte)**, selecione **AWS CodePipeline**. Se você instalou o Jenkins em uma instância do EC2 e configurou o AWS CLI com o perfil do usuário do IAM que você criou para integração entre CodePipeline e o Jenkins, deixe todos os outros campos vazios.

1. Escolha **Avançado** e, em **Provedor**, insira um nome para o provedor da ação conforme ele aparecerá em CodePipeline (por exemplo,*MyJenkinsProviderName*). Certifique-se de que esse nome seja exclusivo e fácil de lembrar. Você o utilizará quando adicionar uma ação de construção para o pipeline mais adiante neste tutorial e novamente quando adicionar uma ação de teste.
**nota**  
Este nome de ação deve atender aos requisitos de nomenclatura para ações no CodePipeline. Para obter mais informações, consulte [Cotas no AWS CodePipeline.](limits.md).

1. Em **Construir triggers**, desmarque todas as caixas de seleção e depois selecione **Apurar SCM**. Em **Schedule (Programação)**, insira cinco asteriscos separados por espaços, conforme a seguir:

   ```
   * * * * *
   ```

   Isso faz pesquisas a CodePipeline cada minuto. 

1. Em **Construir**, selecione **Adicionar etapa da construção**. Selecione **Executar shell** (Amazon Linux, RHEL ou Ubuntu Server) **Executar comando em lote** (Windows Server) e, depois, digite o seguinte:

   ```
   rake
   ```
**nota**  
Verifique se o ambiente está configurado com as variáveis e as configurações necessárias para executar rake; caso contrário, a construção falhará.

1. Escolha **Adicionar ação pós-compilação** e, em seguida, escolha **AWS CodePipeline Publisher**. Selecione **Adicionar**, e em **Criar pontos de saída**, deixe o local em branco. Esta configuração é o padrão. Ela criará um arquivo compactado no final do processo de construção.

1. Selecione **Salvar** para salvar seu projeto Jenkins.

## Etapa 2: criar um pipeline no CodePipeline
<a name="tutorials-four-stage-pipeline-pipeline-create"></a>

Nesta parte do tutorial, você criará o pipeline usando o assistente **Create Pipeline (Criar pipeline)**. 

**Para criar um processo de liberação CodePipeline automatizado**

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. Se necessário, use o seletor de região para alterar a região para aquela em que os recursos do pipeline estão localizados. Por exemplo, se você criou recursos para o tutorial anterior em `us-east-2`, verifique se o seletor de região está definido como Leste dos EUA (Ohio).

   Para obter mais informações sobre as regiões e os endpoints disponíveis CodePipeline, consulte [AWS CodePipeline endpoints e](https://docs.aws.amazon.com/general/latest/gr/codepipeline.html) cotas.

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 a página de configurações do pipeline**, em **Nome do pipeline**, insira o nome do seu pipeline.

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. Na página **Etapa 3: Adicionar estágio de origem**, em **Provedor de origem**, escolha **GitHub**.

1. Em **Conexão**, escolha uma conexão existente ou crie uma nova. Para criar ou gerenciar uma conexão para sua ação GitHub de origem, consulte[GitHub conexões](connections-github.md).

1. Em **Etapa 4: adicionar estágio de compilação**, escolha **Adicionar Jenkins**. Em **Nome do provedor**, insira o nome da ação que você forneceu no CodePipeline Plugin para Jenkins (por exemplo*MyJenkinsProviderName*). Esse nome deve corresponder exatamente ao nome no CodePipeline Plugin para Jenkins. Em **Server URL (URL do servidor)**, digite o URL da instância do EC2 onde Jenkins está instalado. Em **Nome do projeto**, insira o nome do projeto que você criou no Jenkins, como*MyDemoProject*, e escolha **Avançar**.

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**, reutilize o CodeDeploy aplicativo e o grupo de implantação que você criou. [Tutorial: Criar um pipeline simples (bucket do S3)](tutorials-simple-s3.md) Em **Deploy provider (Fornecedor de implantação)**, escolha **CodeDeploy**. Em **Application name (Nome do aplicativo)**, insira **CodePipelineDemoApplication** ou selecione o botão de atualização e selecione o nome do aplicativo na lista. Em **Deployment group (Grupo de implantação)**, insira **CodePipelineDemoFleet** ou selecione-o na lista e selecione **Next (Próximo)**.
**nota**  
Você pode usar seus próprios CodeDeploy recursos ou criar novos, mas poderá incorrer em custos adicionais.

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

1. O pipeline inicia automaticamente e executa a amostra através do pipeline. Você pode visualizar mensagens de progresso, sucesso e falha à medida que o pipeline cria a amostra de Haml em HTML e a implanta em uma página da web em cada uma das instâncias do Amazon EC2 na implantação. CodeDeploy

## Etapa 3: Adicionar outro estágio ao pipeline
<a name="tutorials-four-stage-pipeline-add-stage"></a>

Agora, você adicionará um estágio de teste e uma ação de teste a esse estágio que use o teste do Jenkins incluído na amostra para determinar se a página da web tem algum conteúdo. Esse teste é apenas para fins de demonstração.

**nota**  
Se não quiser adicionar outro estágio ao pipeline, você poderá adicionar uma ação de teste ao estágio Preparação do pipeline, antes ou depois da ação de implantação.

### Adicionar um estágio de teste ao pipeline
<a name="tutorials-four-stage-pipeline-add-stage-console"></a>

**Topics**
+ [Procurar o endereço IP de uma instância](#tutorials-four-stage-pipeline-instance-ip-lookup)
+ [Criar um projeto do Jenkins para testar a implantação](#tutorials-four-stage-pipeline-create-jenkins-project)
+ [Criar um quarto estágio](#tutorials-four-stage-pipeline-create-fourth-stage)

#### Procurar o endereço IP de uma instância
<a name="tutorials-four-stage-pipeline-instance-ip-lookup"></a>

**Para verificar o endereço IP de uma instância onde você implantou seu código**

1. Após a exibição do status **Bem-sucedido** para o pipeline, na área do status para o estágio Staging, selecione **Detalhes**. 

1. Na seção **Detalhes da implantação**, em **ID da instância**, selecione a ID da instância de uma das instâncias implantadas com êxito. 

1. Copie o endereço IP da instância (por exemplo,*192.168.0.4*). Você usará esse endereço IP em seu teste Jenkins.

#### Criar um projeto do Jenkins para testar a implantação
<a name="tutorials-four-stage-pipeline-create-jenkins-project"></a>

**Para criar o projeto Jenkins**

1. Na instância onde você instalou o Jenkins, abra Jenkins e, na página principal, selecione **Novo item**.

1.  Em **Nome do item**, insira um nome para o projeto Jenkins (por exemplo,*MyTestProject*). Selecione **Projeto estilo livre** e depois **OK**.
**nota**  
Certifique-se de que o nome do seu projeto atenda aos CodePipeline requisitos. Para obter mais informações, consulte [Cotas no AWS CodePipeline.](limits.md).

1. Na página de configuração do projeto, selecione a caixa de seleção **Executar construções simultâneas se necessário**. Em **Source Code Management (Gerenciamento de código-fonte)**, selecione **AWS CodePipeline**. Se você instalou o Jenkins em uma instância do EC2 e configurou o AWS CLI com o perfil do usuário do IAM que você criou para integração entre CodePipeline e o Jenkins, deixe todos os outros campos vazios. 
**Importante**  
Se você estiver configurando um projeto Jenkins e ele não estiver instalado em uma instância do Amazon EC2 ou estiver instalado em uma instância do EC2 que esteja executando um sistema operacional Windows, preencha os campos conforme exigido pelas configurações de porta e host proxy e forneça as credenciais do usuário ou função do IAM que você configurou para integração entre Jenkins e. CodePipeline

1. Selecione **Avançado** e, em **Categoria**, selecione **Testar**. 

1. Em **Provedor**, insira o mesmo nome que você usou para o projeto de construção (por exemplo,*MyJenkinsProviderName*). Você usará esse nome quando adicionar a ação de teste ao seu pipeline mais adiante neste tutorial.
**nota**  
Esse nome deve atender aos requisitos de CodePipeline nomenclatura das ações. Para obter mais informações, consulte [Cotas no AWS CodePipeline.](limits.md).

1. Em **Construir triggers**, desmarque todas as caixas de seleção e depois selecione **Apurar SCM**. Em **Schedule (Programação)**, insira cinco asteriscos separados por espaços, conforme a seguir:

   ```
   * * * * *
   ```

   Isso faz pesquisas a CodePipeline cada minuto. 

1. Em **Construir**, selecione **Adicionar etapa da construção**. Se você estiver implantando em instâncias do Amazon Linux, do RHEL ou do Ubuntu Server, selecione **Executar shell**. Insira o seguinte, onde o endereço IP é o endereço da instância do EC2 que você copiou anteriormente:

   ```
   TEST_IP_ADDRESS=192.168.0.4 rake test
   ```

   Se você estiver implantando em instâncias do Windows Server, selecione **Executar comando em lote** e insira o seguinte, em que o endereço IP é o endereço da instância do EC2 que você copiou anteriormente:

   ```
   set TEST_IP_ADDRESS=192.168.0.4 rake test
   ```
**nota**  
O teste assume uma porta padrão de 80. Se você deseja especificar uma porta diferente, adicione uma instrução de porta de teste, conforme a seguir:   

   ```
   TEST_IP_ADDRESS=192.168.0.4 TEST_PORT=8000 rake test
   ```

1. Escolha **Adicionar ação pós-compilação** e, em seguida, escolha **AWS CodePipeline Publisher**. Não selecione **Adicionar**.

1. Selecione **Salvar** para salvar seu projeto Jenkins.

#### Criar um quarto estágio
<a name="tutorials-four-stage-pipeline-create-fourth-stage"></a>

**Para adicionar um estágio ao seu pipeline que inclui a ação de teste Jenkins**

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. Em **Name (Nome)**, selecione o nome do pipeline que você criou, MySecondPipeline. 

1. Na página de detalhes do pipeline, selecione **Editar**. 

1. Na página **Edit (Editar)**, selecione **\$1 Stage (Estágio)** para adicionar um estágio imediatamente após o estágio de compilação. 

1. No campo de nome para o novo estágio, insira um nome (por exemplo, **Testing**) e escolha **\$1 Add action group (\$1 Adicionar grupo de ações)**. 

1. Em **Nome da ação**, insira*MyJenkinsTest-Action*. Em **Provedor de teste**, escolha o nome do provedor que você especificou no Jenkins (por exemplo,*MyJenkinsProviderName*). Em **Nome do projeto**, insira o nome do projeto que você criou no Jenkins (por exemplo,*MyTestProject*). **Em **Artefatos de entrada**, escolha o artefato da compilação do Jenkins cujo nome padrão é e*BuildArtifact*, em seguida, escolha Concluído.**
**nota**  
Como a ação de teste do Jenkins é executada no aplicativo criado na etapa de compilação do Jenkins, use o artefato de compilação para o artefato de entrada na ação de teste.

   Para obter mais informações sobre artefatos de entrada e saída e a estrutura de pipelines, consulte [CodePipeline referência de estrutura de tubulação](reference-pipeline-structure.md).

1. Na página **Editar**, selecione **Salvar alterações do pipeline**. Na caixa de diálogo da opção **Salvar alterações do pipeline**, selecione **Salvar e continuar**.

1. Embora o novo estágio tenha sido adicionado ao seu pipeline, um status de **Ainda não executado** é exibido para o estágio, pois nenhuma alteração acionou outra execução do pipeline. Para executar a amostra por meio do pipeline revisado, na página de detalhes do pipeline, selecione **Lançar alteração**. 

   A visualização do pipeline exibe os estágios e ações em seu pipeline e o estado da revisão em execução através desses quatro estágios. O tempo necessário para que o pipeline seja executado por todos os estágios dependerá do tamanho dos artefatos, da complexidade de sua construção ações de teste, além de outros fatores. 

## Etapa 4: Limpar os recursos
<a name="tutorials-four-stage-pipeline-clean-up"></a>

Após concluir este tutorial, você deverá excluir o pipeline e os recursos usados para não ser cobrado pelo uso contínuo desses recursos. Se você não pretende continuar usando CodePipeline, exclua o pipeline, depois o CodeDeploy aplicativo e suas instâncias associadas do Amazon EC2 e, finalmente, o bucket do Amazon S3 usado para armazenar artefatos. Você também deve considerar a possibilidade de excluir outros recursos, como o GitHub repositório, caso não pretenda continuar usando-os.

**Para limpar os recursos usados neste tutorial**

1. Abra uma sessão de terminal em sua máquina Linux, macOS ou Unix local ou um prompt de comando em sua máquina Windows local e execute o comando **delete-pipeline** para excluir o pipeline que você criou. Em **MySecondPipeline**, insira o seguinte comando: 

   ```
   aws codepipeline delete-pipeline --name "MySecondPipeline"
   ```

   Esse comando não retorna nada.

1. Para limpar seus CodeDeploy recursos, siga as instruções em [Limpeza](https://docs.aws.amazon.com/codedeploy/latest/userguide/getting-started-walkthrough.html#getting-started-walkthrough-clean-up).

1. Para limpar os recursos de sua instância, exclua a instância do EC2 onde você instalou o Jenkins. Para obter mais informações, consulte [Limpeza da sua instância](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-clean-up-your-instance.html).

1. Se você não pretende criar mais pipelines ou usar CodePipeline novamente, exclua o bucket do Amazon S3 usado para armazenar artefatos para seu pipeline. Para excluir o bucket, siga as instruções em [Excluir um bucket](https://docs.aws.amazon.com/AmazonS3/latest/UG/DeletingaBucket.html).

1. Se você não pretende usar a outros recursos para esse pipeline novamente, considere excluí-los, seguindo as orientações para esse recurso específico. Por exemplo, se você quiser excluir o GitHub repositório, siga as instruções em [Excluindo um repositório no site](https://help.github.com/articles/deleting-a-repository/). GitHub 

# Tutorial: configurar uma regra de CloudWatch eventos para receber notificações por e-mail sobre mudanças no estado do pipeline
<a name="tutorials-cloudwatch-sns-notifications"></a>

Depois de configurar um pipeline AWS CodePipeline, você pode configurar uma regra de CloudWatch eventos para enviar notificações sempre que houver alterações no estado de execução de seus pipelines ou nos estágios ou ações em seus pipelines. Para obter mais informações sobre o uso de CloudWatch Eventos para configurar notificações para mudanças no estado do pipeline, consulte[Monitoramento de CodePipeline eventos](detect-state-changes-cloudwatch-events.md).

Neste tutorial, você configura uma notificação para enviar um e-mail quando o estado de um pipeline muda para FAILED. Este tutorial usa um método de transformador de entrada ao criar a regra de CloudWatch Eventos. Ele transforma os detalhes de esquema da mensagem para enviar a mensagem em texto legível por humanos.

**nota**  
Ao criar os recursos para este tutorial, como a notificação do Amazon SNS e a regra de CloudWatch eventos, certifique-se de que os recursos sejam criados na mesma AWS região do seu pipeline.

**Topics**
+ [Etapa 1: Configurar uma notificação por e-mail usando o Amazon SNS](#create-filter-for-target)
+ [Etapa 2: Criar uma regra e adicionar o tópico do SNS como destino](#create-notification-rule)
+ [Etapa 3: Limpar os recursos](#notifications-clean-up-resources)

## Etapa 1: Configurar uma notificação por e-mail usando o Amazon SNS
<a name="create-filter-for-target"></a>

O Amazon SNS coordena o uso de tópicos para enviar mensagens a endpoints ou clientes assinantes. Use o Amazon SNS para criar um tópico de notificação e assinar o tópico usando seu endereço de e-mail. O tópico do Amazon SNS será adicionado como destino à sua regra de CloudWatch Eventos. Para obter mais informações, consulte o [Manual do desenvolvedor do Amazon Simple Notification Service](https://docs.aws.amazon.com/sns/latest/dg/).

Crie ou identifique um tópico no Amazon SNS. CodePipeline usará CloudWatch Eventos para enviar notificações sobre esse tópico por meio do Amazon SNS. Para criar um tópico:

1. [Abra o console do Amazon SNS em https://console.aws.amazon.com /sns.](https://console.aws.amazon.com/sns)

1. Escolha **Criar tópico**. 

1. Na caixa de diálogo **Create new topic (Criar novo tópico)**, em **Topic name (Nome do tópico)**, digite um nome para o tópico (por exemplo, **PipelineNotificationTopic**).   
![\[Crie o tópico de notificação usando o Amazon SNS.\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/tutorial-SNS-topic.png)

1. Escolha **Criar tópico**.

   Para obter mais informações, consulte [Criar um tópico](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html) no *Guia do desenvolvedor do Amazon SNS*.

Faça a assinatura de um ou mais destinatários para o tópico para que recebam notificações por e-mail. Para fazer a assinatura de um destinatário para um tópico:

1. No console do Amazon SNS, na lista **Tópicos**, marque a caixa de seleção ao lado do novo tópico. Escolha **Actions, Subscribe to topic**.

1. Na caixa de diálogo **Create subscription**, verifique se é exibido um ARN em **Topic ARN**.

1. Em **Protocolo**, escolha **E-mail**.

1. Em **Endpoint**, digite o endereço de e-mail completo do destinatário.

1. Escolha **Criar inscrição**.

1. O Amazon SNS envia um e-mail de confirmação de assinatura ao destinatário. Para receber notificações de e-mail, o destinatário deve escolher o link **Confirm subscription** nesse e-mail. Assim que o destinatário clicar no link, se a assinatura tiver sido realizada com êxito, o Amazon SNS exibirá uma mensagem de confirmação no navegador web do destinatário.

   Para obter mais informações, consulte [Assinar um tópico](https://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html) no *Guia do desenvolvedor do Amazon SNS*.

## Etapa 2: Criar uma regra e adicionar o tópico do SNS como destino
<a name="create-notification-rule"></a>

Crie uma regra de notificação de CloudWatch eventos com CodePipeline a fonte do evento.

1. Abra o CloudWatch console em [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

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

1. Escolha **Criar regra**. Em **Event source (Origem do evento)**, escolha **AWS CodePipeline**. Em **Event Type**, escolha **Pipeline Execution State Change**.

1. Escolha **Specific state(s) (Estado[s] específico[s])** e **FAILED**.

1. Escolha **Edit** para abrir o editor de JSON no painel **Event Pattern Preview**. Adicione o parâmetro **pipeline** com o nome de seu pipeline, como mostrado no exemplo a seguir para um pipeline chamado "myPipeline".

   É possível copiar o padrão de evento aqui e colá-lo no console:

   ```
   {
     "source": [
       "aws.codepipeline"
     ],
     "detail-type": [
       "CodePipeline Pipeline Execution State Change"
     ],
     "detail": {
       "state": [
         "FAILED"
       ],
       "pipeline": [
         "myPipeline"
       ]
     }
   }
   ```

1. Em **Targets**, escolha **Add target**. 

1. Na lista de destinos, escolha **SNS topic**. Em **Topic**, insira o tópico que você criou.

1. Expanda **Configure input** e escolha **Input Transformer**. 

1. Na caixa **Input Path**, digite os pares de chave/valor a seguir.

   ```
   { "pipeline" : "$.detail.pipeline" }
   ```

   Na caixa **Input Template**, digite o seguinte: 

   ```
   "The Pipeline <pipeline> has failed."
   ```

1. Escolha **Configure details (Configurar detalhes)**.

1. Na página **Configure rule details**, digite um nome e, opcionalmente, uma descrição. Em **State**, deixe a caixa **Enabled** marcada.

1. Escolha **Criar regra**. 

1. Confirme que agora CodePipeline está enviando notificações de compilação. Por exemplo, verifique se agora os e-mails de notificação de compilação estão em sua caixa de entrada.

1. Para alterar o comportamento de uma regra, no CloudWatch console, escolha a regra e, em seguida, escolha **Ações**, **Editar**. Edite a regra e escolha **Configure details** e, em seguida, **Update rule**.

   Para parar de usar uma regra para enviar notificações de criação, no CloudWatch console, escolha a regra e, em seguida, escolha **Ações**, **Desativar**.

   Para excluir uma regra, no CloudWatch console, escolha a regra e, em seguida, escolha **Ações**, **Excluir**.

## Etapa 3: Limpar os recursos
<a name="notifications-clean-up-resources"></a>

Após concluir este tutorial, você deverá excluir o pipeline e os recursos usados para não ser cobrado pelo uso contínuo desses recursos. 

Para obter informações sobre como limpar a notificação do SNS e excluir a regra do Amazon CloudWatch Events, consulte [Limpar (cancelar a assinatura de um tópico do Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/CleanUp.html)) e consulte a Referência da `DeleteRule` API [ CloudWatch Amazon](https://docs.aws.amazon.com/AmazonCloudWatchEvents/latest/APIReference/) Events.

# Tutorial: crie um pipeline que crie e teste seu aplicativo Android com AWS Device Farm
<a name="tutorials-codebuild-devicefarm"></a>

Você pode usar AWS CodePipeline para configurar um fluxo de integração contínua no qual seu aplicativo é criado e testado sempre que uma confirmação é enviada. Este tutorial mostra como criar e configurar um pipeline para criar e testar seu aplicativo Android com o código-fonte em um GitHub repositório. O pipeline detecta a chegada de um novo GitHub commit e, em seguida, o usa [CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)para criar o aplicativo e o [Device Farm](https://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html) para testá-lo.

**Importante**  
Como parte da criação de um pipeline no console, um bucket de artefatos S3 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.

**Importante**  
Muitas das ações que você adiciona ao pipeline nesse procedimento envolvem AWS recursos que você precisa criar antes de criar o pipeline. AWS os recursos para suas ações de origem sempre devem ser criados na mesma AWS região em que você cria seu pipeline. Por exemplo, se você criar seu pipeline na região Leste dos EUA (Ohio), seu CodeCommit repositório deverá estar na região Leste dos EUA (Ohio).   
Você pode adicionar ações entre regiões ao criar seu pipeline. AWS os recursos para ações entre regiões devem estar na mesma AWS região em que você planeja executar a ação. Para obter mais informações, consulte [Adicionar uma ação entre regiões em CodePipeline](actions-create-cross-region.md).

Você pode experimentar isso usando seu aplicativo Android e as definições de teste existentes ou pode usar o [aplicativo de exemplo e as definições de teste fornecidas pelo Device Farm](https://github.com/aws-samples/aws-device-farm-sample-app-for-android).

**Antes de começar**

1. Entre no AWS Device Farm console e escolha **Criar um novo projeto**.

1. Selecione o projeto. No navegador, copie o URL do novo projeto. O URL contém o ID do projeto. 

1. Copie e retenha esse ID de projeto. Você pode usá-lo ao criar o pipeline no CodePipeline.

   Este é um exemplo de URL para um projeto. Para extrair o ID do projeto, copie o valor depois de `projects/`. Neste exemplo, o ID do produto é `eec4905f-98f8-40aa-9afc-4c1cfexample`.

   ```
   https://<region-URL>/devicefarm/home?region=us-west-2#/projects/eec4905f-98f8-40aa-9afc-4c1cfexample/runs
   ```

## Configure CodePipeline para usar seus testes do Device Farm
<a name="codepipeline-configure-tests"></a>

1. 

   Adicione e confirme um arquivo chamado [https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html)na raiz do código do seu aplicativo e envie-o para o seu repositório. CodeBuild usa esse arquivo para executar comandos e acessar os artefatos necessários para criar seu aplicativo.

   ```
   version: 0.2
   
   phases:
     build:
       commands:
         - chmod +x ./gradlew
         - ./gradlew assembleDebug
   artifacts:
     files:
        - './android/app/build/outputs/**/*.apk'
     discard-paths: yes
   ```

1. (Opcional) Se você [usa o Calabash ou o Appium para testar seu aplicativo](https://docs.aws.amazon.com/devicefarm/latest/developerguide/test-types-intro.html), adicione o arquivo de definição de teste ao seu repositório. Em uma etapa posterior, você pode configurar o Device Farm para usar as definições que executarão o pacote de teste. 

   Se você usar os testes integrados do Device Farm, poderá ignorar esta etapa.

1. Para criar seu pipeline e adicionar um estágio de origem, faça o seguinte:

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

   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 a página de configurações do pipeline**, em **Nome do pipeline**, insira o nome do seu pipeline.

   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 **Service role (Função de serviço)**, deixe **New service role (Nova função de serviço) ** selecionado e não altere **Role name (Nome da função)**. Você também pode optar por usar uma função de serviço existente se tiver criado uma.
**nota**  
Se você usa uma função CodePipeline de serviço criada antes de julho de 2018, precisa adicionar permissões para o Device Farm. Para fazer isso, abra o console do IAM, localize o perfil e, em seguida, adicione as seguintes permissões à política do perfil. Para obter mais informações, consulte [Adicionar permissões à função CodePipeline de serviço](how-to-custom-role.md#how-to-update-role-new-services).  

      ```
      {
           "Effect": "Allow",
           "Action": [
              "devicefarm:ListProjects",
              "devicefarm:ListDevicePools",
              "devicefarm:GetRun",
              "devicefarm:GetUpload",
              "devicefarm:CreateUpload",
              "devicefarm:ScheduleRun"
           ],
           "Resource": "*"
      }
      ```

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

   1. Na página **Etapa 3: Adicionar estágio de origem**, em **Provedor de origem**, escolha **GitHub (via GitHub aplicativo)**.

   1. Em **Conexão**, escolha uma conexão existente ou crie uma nova. Para criar ou gerenciar uma conexão para sua ação GitHub de origem, consulte[GitHub conexões](connections-github.md).

   1. Em **Repository (Repositório)**, selecione o repositório de origem.

   1. Em **Branch (Ramificação)**, selecione a ramificação que você deseja usar.

   1. Deixe os padrões restantes para a ação de origem. Escolha **Próximo**.

1. Em **Etapa 4: Adicionar etapa de compilação**, adicione um estágio de compilação:

   1. Em **Provedor de compilação**, escolha **Outros fornecedores de compilação** e **AWS CodeBuild**. Permita que **Region (Região)** seja definida para a região do pipeline.

   1. Escolha **Criar projeto**.

   1. Em **Nome do projeto**, insira um nome para esse projeto de compilação.

   1. Em **Environment image (Imagem do ambiente)**, escolha **Managed image (Imagem gerenciada)**. Para **Operating system**, selecione **Ubuntu**.

   1. Em **Runtime (Tempo de execução)**, selecione **Standard (Padrão)**. **Para **Imagem**, escolha: 5.0aws/codebuild/standard.**

      CodeBuild usa essa imagem do sistema operacional, que tem o Android Studio instalado, para criar seu aplicativo.

   1. Em **Função de serviço**, escolha sua função CodeBuild de serviço existente ou crie uma nova.

   1. Para **Build specifications (Especificações da compilação)**, escolha **Use a buildspec file (Usar um arquivo buildspec)**.

   1. Escolha **Continuar para CodePipeline**. Isso retorna ao CodePipeline console e cria um CodeBuild projeto que usa o `buildspec.yml` em seu repositório para configuração. O projeto de criação usa um perfil de serviço para gerenciar permissões de AWS service (Serviço da AWS) . Essa etapa pode levar alguns minutos.

   1. 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 página **Etapa 6: Adicionar estágio de implantação**, escolha **Ignorar estágio de implantação** e, em seguida, aceite a mensagem de aviso escolhendo **Ignorar** novamente. Escolha **Próximo**.

1. Na **Etapa 7: Revisão**, escolha **Criar funil**. Você deve ver um diagrama que mostra a origem e os estágios de compilação.

1. Adicione uma ação de teste do Device Farm ao pipeline:

   1. No canto superior direito, escolha **Edit (Editar)**.

   1. Na parte inferior do diagrama, escolha **\$1 Add stage (\$1 Adicionar estágio)**. Em **Nome do estágio**, insira um nome, como **Test**.

   1. Escolha **\$1 Add action group (Adicionar grupo de ação)**.

   1. Em **Nome da ação**, insira um nome. 

   1. Em **Provedor de ação**, selecione **AWS Device Farm**. Permita que **Region (Região)** seja definida para a região do pipeline.

   1. Em **Input artifacts (Artefatos de entrada)**, selecione o artefato de entrada que corresponde ao artefato de saída do estágio que vem antes do estágio de teste, como `BuildArtifact`. 

      No AWS CodePipeline console, você pode encontrar o nome do artefato de saída para cada estágio passando o mouse sobre o ícone de informações no diagrama do pipeline. Se seu pipeline testar seu aplicativo diretamente do estágio de **origem**, escolha **SourceArtifact**. Se o pipeline incluir um estágio de **construção**, escolha **BuildArtifact**.

   1. Em **ProjectId**, insira o ID do projeto do Device Farm. Use as etapas no início deste tutorial para recuperar o ID do projeto.

   1. Em **DevicePoolArn**, insira o ARN do pool de dispositivos. Para obter o pool de dispositivos disponível ARNs para o projeto, incluindo o ARN dos principais dispositivos, use a AWS CLI para inserir o seguinte comando: 

      ```
      aws devicefarm list-device-pools --arn arn:aws:devicefarm:us-west-2:account_ID:project:project_ID
      ```

   1. Em **AppType**, insira **Android**.

      Veja a seguir uma lista de valores válidos para **AppType**:
      + **iOS**
      + **Android**
      + **Web**

   1. Em **App (Aplicativo)**, insira o caminho do pacote do aplicativo compilado. O caminho é relativo à raiz do artefato de entrada do estágio de teste. Normalmente, esse caminho é semelhante a `app-release.apk`.

   1. Em **TestType**, insira seu tipo de teste e, em **Teste**, insira o caminho do arquivo de definição do teste. O caminho é relativo à raiz do artefato de entrada para o teste.

      Veja a seguir uma lista de valores válidos para **TestType**:
      + **APPIUM\$1JAVA\$1JUNIT**
      + **APPIUM\$1JAVA\$1TESTING**
      + **APPIUM\$1NODE**
      + **APPIUM\$1RUBY**
      + **APPIUM\$1PYTHON**
      + **APPIUM\$1WEB\$1JAVA\$1JUNIT**
      + **APPIUM\$1WEB\$1JAVA\$1TESTING**
      + **APPIUM\$1WEB\$1NODE**
      + **APPIUM\$1WEB\$1RUBY**
      + **APPIUM\$1WEB\$1PYTHON**
      + **BUILTIN\$1FUZZ**
      + **INSTRUMENTATION**
      + **XCTEST**
      + **XCTEST\$1UI**
**nota**  
Os nós de ambiente personalizados não são compatíveis.

   1. Nos campos restantes, forneça a configuração que seja apropriada para seu teste e tipo de aplicativo.

   1. (Opcional) Em **Advanced (Avançado)**, forneça informações de configuração para a execução do teste.

   1. Escolha **Salvar**.

   1. No estágio que está editando, escolha **Done (Concluído)**. No painel do AWS CodePipeline , escolha **Save (Salvar)** e selecione **Save (Salvar)** na mensagem de aviso.

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

# Tutorial: crie um pipeline que teste seu aplicativo iOS com AWS Device Farm
<a name="tutorials-codebuild-devicefarm-S3"></a>

 Você pode usar AWS CodePipeline para configurar facilmente um fluxo de integração contínua no qual seu aplicativo é testado sempre que o bucket de origem é alterado. Este tutorial mostra como criar e configurar um pipeline para testar seu aplicativo iOS criado a partir de um bucket do S3. O pipeline detecta a chegada de uma alteração salva por meio do Amazon CloudWatch Events e, em seguida, usa o [Device Farm](https://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html) para testar o aplicativo criado. 

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

**Importante**  
Muitas das ações que você adiciona ao pipeline nesse procedimento envolvem AWS recursos que você precisa criar antes de criar o pipeline. AWS os recursos para suas ações de origem sempre devem ser criados na mesma AWS região em que você cria seu pipeline. Por exemplo, se você criar seu pipeline na região Leste dos EUA (Ohio), seu CodeCommit repositório deverá estar na região Leste dos EUA (Ohio).   
Você pode adicionar ações entre regiões ao criar seu pipeline. AWS os recursos para ações entre regiões devem estar na mesma AWS região em que você planeja executar a ação. Para obter mais informações, consulte [Adicionar uma ação entre regiões em CodePipeline](actions-create-cross-region.md).

Você pode experimentar isso usando seu aplicativo iOS existente ou você pode usar o [aplicativo iOS de exemplo](samples/s3-ios-test-1.zip).

**Antes de começar**

1. Entre no AWS Device Farm console e escolha **Criar um novo projeto**.

1. Selecione o projeto. No navegador, copie o URL do novo projeto. O URL contém o ID do projeto.

1. Copie e retenha esse ID de projeto. Você pode usá-lo ao criar o pipeline no CodePipeline.

   Este é um exemplo de URL para um projeto. Para extrair o ID do projeto, copie o valor depois de `projects/`. Neste exemplo, o ID do produto é `eec4905f-98f8-40aa-9afc-4c1cfexample`.

   ```
   https://<region-URL>/devicefarm/home?region=us-west-2#/projects/eec4905f-98f8-40aa-9afc-4c1cfexample/runs
   ```

## Configure CodePipeline para usar seus testes do Device Farm (exemplo do Amazon S3)
<a name="codepipeline-configure-tests-S3"></a>

1. Crie ou use um bucket do S3 com o versionamento habilitado. Você pode seguir as instruções em [Etapa 1: criar um bucket de origem do S3 para a aplicação](tutorials-simple-s3.md#s3-create-s3-bucket) para criar um bucket do S3.

1. No console do Amazon S3 para o bucket, selecione **Carregar** e siga as instruções para fazer upload do arquivo .zip.

   Seu aplicativo de amostra deve ser compactado em um arquivo .zip.

1. Para criar seu pipeline e adicionar um estágio de origem, faça o seguinte:

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

   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 a página de configurações do pipeline**, em **Nome do pipeline**, insira o nome do seu pipeline.

   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 **Service role (Função de serviço)**, deixe **New service role (Nova função de serviço) ** selecionado e não altere **Role name (Nome da função)**. Você também pode optar por usar uma função de serviço existente se tiver criado uma.
**nota**  
Se você usa uma função CodePipeline de serviço criada antes de julho de 2018, você deve adicionar permissões para o Device Farm. Para fazer isso, abra o console do IAM, localize o perfil e, em seguida, adicione as seguintes permissões à política do perfil. Para obter mais informações, consulte [Adicionar permissões à função CodePipeline de serviço](how-to-custom-role.md#how-to-update-role-new-services).  

      ```
      {
           "Effect": "Allow",
           "Action": [
              "devicefarm:ListProjects",
              "devicefarm:ListDevicePools",
              "devicefarm:GetRun",
              "devicefarm:GetUpload",
              "devicefarm:CreateUpload",
              "devicefarm:ScheduleRun"
           ],
           "Resource": "*"
      }
      ```

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

   1. Na página **Etapa 3: Adicionar etapa de origem**, em **Provedor de origem**, escolha **Amazon S3**.

   1. Em **Local do Amazon S3**, insira o bucket, como `my-storage-bucket`, e a chave do objeto, como `s3-ios-test-1.zip`, para o arquivo .zip.

   1. Escolha **Próximo**.

1. Em **Etapa 4: Adicionar etapa de compilação**, crie um estágio de compilação de espaço reservado para o pipeline. Isso permite que você crie o pipeline no assistente. Depois de usar o assistente para criar seu pipeline de dois estágios, você não precisa mais desse estágio de compilação de espaço reservado. Depois que o pipeline é concluído, o segundo estágio é excluído e o novo estágio de teste é adicionado na etapa 5.

   

   1. Em **Build provider (Provedor de compilação)**, selecione **Add Jenkins (Adicionar Jenkins)**. Essa seleção de compilação é um espaço reservado. Ele não é usado.

   1. Em **Provider name (Nome do provedor)**, insira um nome. O nome é um espaço reservado. Ele não é usado.

   1. Em **Server URL (URL do servidor)**, insira o texto. O texto é um espaço reservado. Ele não é usado.

   1. Em **Project name (Nome do projeto)**, insira um nome. O nome é um espaço reservado. Ele não é usado.

   1. 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 página **Etapa 6: Adicionar estágio de implantação**, escolha **Ignorar estágio de implantação** e, em seguida, aceite a mensagem de aviso escolhendo **Ignorar** novamente.

   1. Na **Etapa 7: Revisão**, escolha **Criar funil**. Você deve ver um diagrama que mostra a origem e os estágios de compilação.  
![\[\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/codepipeline-view-pipeline-S3.png)

1. Adicione uma ação de teste do Device Farm ao pipeline da seguinte maneira:

   1. No canto superior direito, escolha **Edit (Editar)**. 

   1. Selecione **Edit stage (Editar estágio)**. Escolha **Excluir**. Isso exclui o estágio de espaço reservado agora que ele não é mais necessário para a criação do pipeline.

   1. Na parte inferior do diagrama, escolha **\$1 Add stage (\$1 Adicionar estágio)**.

   1. Em Stage name (Nome do estágio), insira um nome para o estágio, como Teste, e escolha **Add stage (Adicionar estágio)**.

   1. Escolha **\$1 Add action group (Adicionar grupo de ação)**.

   1. Em **Nome da ação**, insira um nome, como DeviceFarmTest.

   1. Em **Provedor de ação**, selecione **AWS Device Farm**. Permita que **Region (Região)** seja definida para a região do pipeline.

   1. Em **Input artifacts (Artefatos de entrada)**, selecione o artefato de entrada que corresponde ao artefato de saída do estágio que vem antes do estágio de teste, como `SourceArtifact`. 

      No AWS CodePipeline console, você pode encontrar o nome do artefato de saída para cada estágio passando o mouse sobre o ícone de informações no diagrama do pipeline. Se seu pipeline testar seu aplicativo diretamente do estágio de **origem**, escolha **SourceArtifact**. Se o pipeline incluir um estágio de **construção**, escolha **BuildArtifact**.

   1. Em **ProjectId**, escolha o ID do projeto do Device Farm. Use as etapas no início deste tutorial para recuperar o ID do projeto.

   1. Em **DevicePoolArn**, insira o ARN do pool de dispositivos. Para obter o pool de dispositivos disponível ARNs para o projeto, incluindo o ARN dos principais dispositivos, use a AWS CLI para inserir o seguinte comando: 

      ```
      aws devicefarm list-device-pools --arn arn:aws:devicefarm:us-west-2:account_ID:project:project_ID
      ```

   1. Em **AppType**, insira **iOS**.

      Veja a seguir uma lista de valores válidos para **AppType**:
      + **iOS**
      + **Android**
      + **Web**

   1. Em **App (Aplicativo)**, insira o caminho do pacote do aplicativo compilado. O caminho é relativo à raiz do artefato de entrada do estágio de teste. Normalmente, esse caminho é semelhante a `ios-test.ipa`.

   1. Em **TestType**, insira seu tipo de teste e, em **Teste**, insira o caminho do arquivo de definição do teste. O caminho é relativo à raiz do artefato de entrada para o teste.

      Se estiver usando um dos testes integrados do Device Farm, insira o tipo de teste configurado no projeto do Device Farm, como BUILTIN\$1FUZZ. Em **FuzzEventCount**, insira um tempo em milissegundos, como 6000. Em **FuzzEventThrottle**, insira um tempo em milissegundos, como 50.

      Se não estiver usando um dos testes integrados do Device Farm, insira o tipo de teste e, em **Teste**, insira o caminho do arquivo de definição do teste. O caminho é relativo à raiz do artefato de entrada para o teste. 

      Veja a seguir uma lista de valores válidos para **TestType**:
      + **APPIUM\$1JAVA\$1JUNIT**
      + **APPIUM\$1JAVA\$1TESTING**
      + **APPIUM\$1NODE**
      + **APPIUM\$1RUBY**
      + **APPIUM\$1PYTHON**
      + **APPIUM\$1WEB\$1JAVA\$1JUNIT**
      + **APPIUM\$1WEB\$1JAVA\$1TESTING**
      + **APPIUM\$1WEB\$1NODE**
      + **APPIUM\$1WEB\$1RUBY**
      + **APPIUM\$1WEB\$1PYTHON**
      + **BUILTIN\$1FUZZ**
      + **INSTRUMENTATION**
      + **XCTEST**
      + **XCTEST\$1UI**
**nota**  
Os nós de ambiente personalizados não são compatíveis.

   1. Nos campos restantes, forneça a configuração que seja apropriada para seu teste e tipo de aplicativo.

   1. (Opcional) Em **Advanced (Avançado)**, forneça informações de configuração para a execução do teste.

   1. Escolha **Salvar**.

   1. No estágio que está editando, escolha **Done (Concluído)**. No painel do AWS CodePipeline , escolha **Save (Salvar)** e selecione **Save (Salvar)** na mensagem de aviso.

   1. Para enviar as alterações e iniciar uma execução de pipeline, selecione **Release change (Liberar alteração)** e **Release (Liberar)**.

# Tutorial: Criar um pipeline que realiza a implantação no Service Catalog
<a name="tutorials-S3-servicecatalog"></a>

O Service Catalog permite criar e provisionar produtos com base em AWS CloudFormation modelos. 

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

Este tutorial mostra como criar e configurar um pipeline para implantar seu modelo de produto no Service Catalog e entregar as alterações que você fez no seu repositório de origem (já criado no GitHub CodeCommit, ou no Amazon S3).

**nota**  
Quando o Amazon S3 é o provedor de origem do pipeline, você deve fazer upload de todos os arquivos de origem compactados em seu bucket como um único arquivo .zip. Caso contrário, a ação da origem falhará.

Primeiro, crie um produto no Service Catalog e depois crie um pipeline no AWS CodePipeline. Este tutorial fornece duas opções para definir a configuração de implantação:
+ Crie um produto no Service Catalog e faça upload de um arquivo de modelo no repositório de origem. Forneça a versão do produto e a configuração de implantação no CodePipeline console (sem um arquivo de configuração separado). Consulte [Opção 1: Implantar no Service Catalog sem um arquivo de configuração](#tutorials-S3-servicecatalog-ex1-configure).
**nota**  
O arquivo de modelo pode ser criado no formato JSON ou YAML.
+ Crie um produto no Service Catalog e faça upload de um arquivo de modelo no repositório de origem. Forneça a versão do produto e a configuração de implantação em um arquivo de configuração separado. Consulte [Opção 2: Implantar no Service Catalog com um arquivo de configuração](#tutorials-S3-servicecatalog-ex2-configure).

## Opção 1: Implantar no Service Catalog sem um arquivo de configuração
<a name="tutorials-S3-servicecatalog-ex1-configure"></a>

Neste exemplo, você carrega o arquivo de AWS CloudFormation modelo de amostra para um bucket do S3 e, em seguida, cria seu produto no Service Catalog. Em seguida, você cria seu pipeline e especifica a configuração de implantação no CodePipeline console.

### Etapa 1: Fazer upload do arquivo do modelo de exemplo no repositório de origem
<a name="tutorials-S3-servicecatalog-configure"></a>

1. Abra um editor de texto. Crie um modelo de exemplo colando o seguinte no arquivo. Salve o arquivo como `S3_template.json`.

   ```
   {
     "AWSTemplateFormatVersion": "2010-09-09",
     "Description": "CloudFormation Sample Template S3_Bucket: Sample template showing how to create a privately accessible S3 bucket. **WARNING** This template creates an S3 bucket. You will be billed for the resources used if you create a stack from this template.",
     "Resources": {
       "S3Bucket": {
         "Type": "AWS::S3::Bucket",
         "Properties": {}
       }
     },
     "Outputs": {
       "BucketName": {
         "Value": {
           "Ref": "S3Bucket"
         },
         "Description": "Name of Amazon S3 bucket to hold website content"
       }
     }
   }
   ```

   Esse modelo permite AWS CloudFormation criar um bucket S3 que pode ser usado pelo Service Catalog.

1. Carregue o arquivo `S3_template.json` no repositório do AWS CodeCommit .

### Etapa 2: Criar um produto no Service Catalog
<a name="tutorials-S3-servicecatalog-product"></a>

1. Como administrador de TI, faça login no console do Service Catalog, vá para a página **Produtos** e, depois, selecione **Fazer upload de novo produto**.

1. Na página **Upload new product (Carregar novo produto)**, conclua o seguinte:

   1. Em **Product name (Nome do produto)**, insira o nome que você deseja usar para o seu novo produto.

   1. Em **Description (Descrição)**, insira a descrição do catálogo de produtos. Essa descrição é mostrada na lista de produtos para ajudar o usuário a escolher o produto correto. 

   1. Em **Provided by (Oferecido por)**, digite o nome de seu departamento ou do administrador de TI.

   1. Escolha **Próximo**.

1. (Opcional) Em **Enter support details (Inserir detalhes do suporte)**, insira as informações de contato para suporte ao produto e selecione **Next (Próximo)**.

1. Em **Version details (Detalhes da versão)**, conclua o seguinte:

   1. Selecione **Carregar um arquivo de modelo**. Procure o arquivo `S3_template.json` e carregue-o.

   1. Em **Version title (Título da versão)**, insira o nome da versão do produto (por exemplo, **devops S3 v2**).

   1. Em **Description (Descrição)**, insira os detalhes que distinguem essa versão em relação às outras.

   1. Escolha **Próximo**.

1. Na página **Review (Revisar)**, verifique se as informações estão corretas e escolha **Create (Criar)**. 

1. Na página **Products (Produtos)**, no navegador, copie o URL do seu novo produto. Ela contém o ID do produto. Copie e retenha esse ID de produto. Você pode usá-lo ao criar o pipeline no CodePipeline.

   Veja a seguir o URL para um produto chamado `my-product`. Para extrair o ID do produto, copie o valor entre o sinal de igual (`=`) e o E comercial (`&`). Neste exemplo, o ID do produto é `prod-example123456`.

   ```
   https://<region-URL>/servicecatalog/home?region=<region>#/admin-products?productCreated=prod-example123456&createdProductTitle=my-product
   ```
**nota**  
Copie o URL para o produto antes de sair da página. Depois de sair dessa página, você deve usar a CLI para obter o ID do produto.

   Após alguns segundos, o produto será exibido na página **Produtos**. Talvez seja necessário atualizar o navegador para ver o produto na lista.

### Etapa 3: Criar o pipeline
<a name="tutorials-S3-servicecatalog-pipeline"></a>

1. Para nomear o pipeline e selecionar os parâmetros para o pipeline, faça o seguinte:

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

   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 um nome para o pipeline.

   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. Para adicionar um estágio de origem na página **Etapa 3: Adicionar etapa de origem**, faça o seguinte:

   1. Em **Source provider (Provedor de código-fonte)**, selecione **AWS CodeCommit**.

   1. Em **Repository name (Nome do repositório)** e **Branch name (Nome da ramificação)**, insira o nome do repositório e a ramificação que deseja usar para sua ação de origem.

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

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. Em **Etapa 6: Adicionar etapa de implantação**, conclua o seguinte:

   1. Em **Deploy provider (Fornecedor de implantação)**, escolha **AWS Service Catalog**.

   1. Para a configuração de implantação, escolha **Enter deployment configuration (Inserir configuração de implantação)**.

   1. Em **ID do produto**, cole o ID do produto que você copiou no console do Service Catalog.

   1. Em **Template file path (Caminho do arquivo do modelo)**, insira o caminho relativo em que o arquivo do modelo é armazenado.

   1. Em **Tipo de produto**, escolha **modelo do CloudFormation **.

   1. Em **Nome da versão do produto**, insira o nome da versão do produto que você especificou no Service Catalog. Se você deseja que a alteração do modelo seja implantada em uma nova versão do produto, insira um nome de versão do produto que não tenha sido usado em uma versão anterior do mesmo produto.

   1. Em **Input artifact (Artefato de entrada)**, selecione o artefato de entrada de origem.

   1. Escolha **Próximo**.

1. Em **Etapa 7: Revisão**, examine as configurações do pipeline e, em seguida, escolha **Criar**.

1. Depois que o pipeline for executado com êxito, no estágio de implantação, selecione **Details (Detalhes)**. O produto será aberto no Service Catalog.  
![\[\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/deploy-servicecatalog-pipeline.png)

1. Nas informações do produto, escolha o nome da versão para abrir o modelo do produto. Visualize a implantação do modelo.

### Etapa 4: Enviar uma alteração e verificar o produto no Service Catalog
<a name="tutorials-S3-servicecatalog-change"></a>

1. Visualize seu funil no CodePipeline console e, no estágio de origem, escolha **Detalhes**. Seu AWS CodeCommit repositório de origem é aberto no console. Selecione **Edit (Editar)** e faça uma alteração no arquivo (por exemplo, na descrição). 

   ```
   "Description": "Name of Amazon S3 bucket to hold and version website content"
   ```

1. Confirme e envie a alteração. O pipeline será iniciado depois que você enviar a alteração. Quando a execução do pipeline for concluída, no estágio de implantação, selecione **Detalhes** para abrir seu produto no Service Catalog.

1. Nas informações do produto, escolha o nome da nova versão para abrir o modelo do produto. Visualize a alteração do modelo implantada.

## Opção 2: Implantar no Service Catalog com um arquivo de configuração
<a name="tutorials-S3-servicecatalog-ex2-configure"></a>

Neste exemplo, você carrega o arquivo de AWS CloudFormation modelo de amostra para um bucket do S3 e, em seguida, cria seu produto no Service Catalog. Você também pode carregar um arquivo de configuração separado que especifica a configuração de implantação. Em seguida, crie o pipeline e especifique o local do seu arquivo de configuração.

### Etapa 1: Fazer upload do arquivo do modelo de exemplo no repositório de origem
<a name="tutorials-S3-servicecatalog-upload2"></a>

1. Abra um editor de texto. Crie um modelo de exemplo colando o seguinte no arquivo. Salve o arquivo como `S3_template.json`.

   ```
   {
     "AWSTemplateFormatVersion": "2010-09-09",
     "Description": "CloudFormation Sample Template S3_Bucket: Sample template showing how to create a privately accessible S3 bucket. **WARNING** This template creates an S3 bucket. You will be billed for the resources used if you create a stack from this template.",
     "Resources": {
       "S3Bucket": {
         "Type": "AWS::S3::Bucket",
         "Properties": {}
       }
     },
     "Outputs": {
       "BucketName": {
         "Value": {
           "Ref": "S3Bucket"
         },
         "Description": "Name of Amazon S3 bucket to hold website content"
       }
     }
   }
   ```

   Esse modelo permite AWS CloudFormation criar um bucket S3 que pode ser usado pelo Service Catalog.

1. Carregue o arquivo `S3_template.json` no repositório do AWS CodeCommit .

### Etapa 2: Criar o arquivo de configuração da implantação do produto
<a name="tutorials-S3-servicecatalog-configure2"></a>

1. Abra um editor de texto. Crie o arquivo de configuração para o seu produto. O arquivo de configuração é usado para definir seus parâmetros/preferências de implantação do Service Catalog. Use esse arquivo ao criar o pipeline.

   Este exemplo fornece um `ProductVersionName` de "devops S3 v2" e um `ProductVersionDescription` de `MyProductVersionDescription`. Se você deseja que a alteração do modelo seja implantada em uma nova versão do produto, basta inserir um nome de versão do produto que não tenha sido usado em uma versão anterior do mesmo produto.

    Salve o arquivo como `sample_config.json`.

   ```
   {
       "SchemaVersion": "1.0",
       "ProductVersionName": "devops S3 v2",
       "ProductVersionDescription": "MyProductVersionDescription",
       "ProductType": "CLOUD_FORMATION_TEMPLATE",
       "Properties": {
           "TemplateFilePath": "/S3_template.json"
       }
   }
   ```

   Esse arquivo criará as informações da versão do produto para você a cada vez que o pipeline for executado.

1. Carregue o arquivo `sample_config.json` no repositório do AWS CodeCommit . Certifique-se de que você carregue esse arquivo no repositório de origem.

### Etapa 3: Criar um produto no Service Catalog
<a name="tutorials-S3-servicecatalog-product2"></a>

1. Como administrador de TI, faça login no console do Service Catalog, vá para a página **Produtos** e, depois, selecione **Fazer upload de novo produto**.

1. Na página **Upload new product (Carregar novo produto)**, conclua o seguinte:

   1. Em **Product name (Nome do produto)**, insira o nome que você deseja usar para o seu novo produto.

   1. Em **Description (Descrição)**, insira a descrição do catálogo de produtos. Essa descrição é mostrada na lista de produtos para ajudar o usuário a escolher o produto correto. 

   1. Em **Provided by (Oferecido por)**, digite o nome de seu departamento ou do administrador de TI.

   1. Escolha **Próximo**.

1. (Opcional) Em **Enter support details (Inserir detalhes do suporte)**, insira as informações de contato para suporte ao produto e, em seguida, selecione **Next (Próximo)**.

1. Em **Version details (Detalhes da versão)**, conclua o seguinte:

   1. Selecione **Carregar um arquivo de modelo**. Procure o arquivo `S3_template.json` e carregue-o.

   1. Em **Version title (Título da versão)**, insira o nome da versão do produto (por exemplo, "devops S3 v2").

   1. Em **Description (Descrição)**, insira os detalhes que distinguem essa versão em relação às outras.

   1. Escolha **Próximo**.

1. Na página **Revisão**, verifique se as informações estão corretas e, em seguida, selecione **Confirmar e carregar**. 

1. Na página **Products (Produtos)**, no navegador, copie o URL do seu novo produto. Ela contém o ID do produto. Copie e retenha esse ID de produto. Use-o ao criar o pipeline no CodePipeline.

   Veja a seguir o URL para um produto chamado `my-product`. Para extrair o ID do produto, copie o valor entre o sinal de igual (`=`) e o E comercial (`&`). Neste exemplo, o ID do produto é `prod-example123456`. 

   ```
   https://<region-URL>/servicecatalog/home?region=<region>#/admin-products?productCreated=prod-example123456&createdProductTitle=my-product
   ```
**nota**  
Copie o URL para o produto antes de sair da página. Depois de sair dessa página, você deve usar a CLI para obter o ID do produto.

   Após alguns segundos, o produto será exibido na página **Produtos**. Talvez seja necessário atualizar o navegador para ver o produto na lista.

### Etapa 4: Criar o pipeline
<a name="tutorials-S3-servicecatalog-pipeline2"></a>

1. Para nomear o pipeline e selecionar os parâmetros para o pipeline, faça o seguinte:

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

   1. Escolha **Conceitos básicos**. Selecione **Create pipeline (Criar pipeline)** e insira um nome para seu pipeline.

   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. Para adicionar um estágio de origem, faça o seguinte:

   1. Em **Source provider (Provedor de código-fonte)**, selecione **AWS CodeCommit**.

   1. Em **Repository name (Nome do repositório)** e **Branch name (Nome da ramificação)**, insira o nome do repositório e a ramificação que deseja usar para sua ação de origem.

   1. Escolha **Próximo**.

1. Em **Add build stage (Adicionar estágio de compilação)**, selecione **Skip build stage (Ignorar estágio de compilação)** e aceite a mensagem de aviso ao clicar novamente em **Skip (Ignorar)**.

1. Em **Add deploy stage (Adicionar estágio de implantação)**, conclua o seguinte:

   1. Em **Deploy provider (Fornecedor de implantação)**, escolha **AWS Service Catalog**.

   1. Selecione **Use configuration file (Usar arquivo de configuração)**.

   1. Em **ID do produto**, cole o ID do produto que você copiou no console do Service Catalog.

   1. No arquivo de **Configuration file path (Caminho do arquivo de configuração)**, insira o caminho do arquivo de configuração em seu repositório.

   1. Escolha **Próximo**.

1. Em **Review (Revisão)**, revise as configurações do pipeline e, em seguida, selecione **Create (Criar)**.

1. Depois que o pipeline for executado com êxito, no estágio de implantação, selecione **Detalhes** para abrir seu produto no Service Catalog.  
![\[\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/deploy-servicecatalog-pipeline.png)

1. Nas informações do produto, escolha o nome da versão para abrir o modelo do produto. Visualize a implantação do modelo.

### Etapa 5: Enviar uma alteração e verificar o produto no Service Catalog
<a name="tutorials-S3-servicecatalog-change2"></a>

1. Visualize seu funil no CodePipeline console e, no estágio de origem, escolha **Detalhes**. Seu AWS CodeCommit repositório de origem é aberto no console. Selecione **Edit (Editar)** e, em seguida, faça uma alteração no arquivo (por exemplo, na descrição).

   ```
   "Description": "Name of Amazon S3 bucket to hold and version website content"
   ```

1. Confirme e envie a alteração. O pipeline será iniciado depois que você enviar a alteração. Quando a execução do pipeline for concluída, no estágio de implantação, selecione **Detalhes** para abrir seu produto no Service Catalog.

1. Nas informações do produto, escolha o nome da nova versão para abrir o modelo do produto. Visualize a alteração do modelo implantada.

# Tutorial: Crie um pipeline com AWS CloudFormation
<a name="tutorials-cloudformation"></a>

Os exemplos fornecem exemplos de modelos que permitem que você crie um pipeline que implanta seu aplicativo em suas instâncias sempre que o código-fonte for alterado. AWS CloudFormation O modelo de exemplo cria um pipeline que pode ser visualizado no AWS CodePipeline. O pipeline detecta a chegada de uma alteração salva por meio do Amazon CloudWatch Events.

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

**Topics**
+ [Exemplo 1: Crie um AWS CodeCommit pipeline com AWS CloudFormation](tutorials-cloudformation-codecommit.md)
+ [Exemplo 2: Crie um pipeline do Amazon S3 com AWS CloudFormation](tutorials-cloudformation-s3.md)

# Exemplo 1: Crie um AWS CodeCommit pipeline com AWS CloudFormation
<a name="tutorials-cloudformation-codecommit"></a>

Este passo a passo mostra como usar o AWS CloudFormation console para criar uma infraestrutura que inclui um pipeline conectado a um repositório de CodeCommit origem. Neste tutorial, você usa o arquivo de modelo de amostra fornecido para criar sua pilha de recursos, que inclui seu armazenamento de artefatos, pipeline e recursos de detecção de alterações, como sua regra Amazon Events. CloudWatch Depois de criar sua pilha de recursos AWS CloudFormation, você pode ver seu pipeline no AWS CodePipeline console. O pipeline é um pipeline de dois estágios com um estágio de CodeCommit origem e um estágio de CodeDeploy implantação.

**Pré-requisitos:**

Você deve ter criado os seguintes recursos para usar com o modelo AWS CloudFormation de amostra:
+ Você deve ter criado um repositório de origem. Você pode usar o AWS CodeCommit repositório em [Tutorial: criar um pipeline simples (CodeCommit repositório)](tutorials-simple-codecommit.md) que você criou.
+ Você deve ter criado um CodeDeploy aplicativo e um grupo de implantação. Você pode usar os recursos do CodeDeploy que você criou em [Tutorial: criar um pipeline simples (CodeCommit repositório)](tutorials-simple-codecommit.md).
+ [Escolha um desses links para baixar o arquivo de AWS CloudFormation modelo de amostra para criar um pipeline: [YAML \$1 JSON](samples/codepipeline-codecommit-events-yaml.zip)](samples/codepipeline-codecommit-events-json.zip)

  Descompacte o arquivo e coloque-o em seu computador local.
+ Baixe o [SampleApparquivo de amostra do aplicativo \$1Linux.zip](samples/SampleApp_Linux.zip).



**Crie seu funil em AWS CloudFormation**

1. Descompacte os arquivos do [SampleApp\$1Linux.zip](samples/SampleApp_Linux.zip) e faça o upload dos arquivos para o seu AWS CodeCommit repositório. Você deve carregar os arquivos descompactados no diretório raiz do seu repositório. Você pode seguir as instruções em [Etapa 2: adicionar código de amostra ao seu CodeCommit repositório](tutorials-simple-codecommit.md#codecommit-add-code) para enviar os arquivos para o repositório.

1. Abra o AWS CloudFormation console e escolha **Create Stack**. Escolha **With new resources (standard)** (Com novos recursos [padrão]).

1. Em **Especificar modelo**, escolha **Fazer upload de um modelo**. Selecione **Escolher arquivo** e escolha o arquivo de modelo no seu computador local. Escolha **Próximo**.

1. Em **Stack name (Nome da pilha)**, insira um nome para o pipeline. Os parâmetros especificados pelo modelo de exemplo são exibidos. Insira os seguintes parâmetros: 

   1. Em **ApplicationName**, insira o nome do seu CodeDeploy aplicativo.

   1. Em **BetaFleet**, insira o nome do seu grupo CodeDeploy de implantação.

   1. Em **BranchName**, insira a ramificação do repositório que você deseja usar.

   1. Em **RepositoryName**, insira o nome do seu repositório CodeCommit de origem.

1. Escolha **Próximo**. Aceite os padrões na página a seguir e selecione **Next (Próximo)**.

1. Em **Capacidades**, selecione **Eu reconheço que AWS CloudFormation pode criar recursos do IAM** e, em seguida, escolha **Criar pilha**.

1. Após a conclusão da criação da pilha, visualize a lista de eventos para verificar se há erros.

   **Solução de problemas**

   O usuário do IAM que está criando o pipeline em AWS CloudFormation pode precisar de permissões adicionais para criar recursos para o pipeline. As seguintes permissões são necessárias na política para permitir AWS CloudFormation a criação dos recursos necessários da Amazon CloudWatch Events para o CodeCommit pipeline:

   ```
   {
        "Effect": "Allow",
        "Action": [
           "events:PutRule",
           "events:PutEvents",
           "events:PutTargets",
           "events:DeleteRule",
           "events:RemoveTargets",
           "events:DescribeRule"
        ],
        "Resource": "resource_ARN"
   }
   ```

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

   Em **Pipelines**, selecione o pipeline e clique em **View (Visualizar)**. O diagrama mostra os estágios de implantação e a origem do pipeline.
**nota**  
Para visualizar o pipeline criado, localize a coluna **ID lógico** na guia **Recursos** da sua pilha no CloudFormation. Anote o nome na coluna **ID físico** do pipeline. Em CodePipeline, você pode visualizar o pipeline com a mesma ID física (nome do pipeline) na região em que criou sua pilha.

1. No seu repositório de origem, confirme e envie uma alteração. Seus recursos de detecção de alterações capturam a alteração, e o pipeline é iniciado.

# Exemplo 2: Crie um pipeline do Amazon S3 com AWS CloudFormation
<a name="tutorials-cloudformation-s3"></a>

Este passo a passo mostra como usar o AWS CloudFormation console para criar uma infraestrutura que inclui um pipeline conectado a um bucket de origem do Amazon S3. Neste tutorial, você usa o arquivo de modelo de amostra fornecido para criar sua pilha de recursos, que inclui seu bucket de origem, armazenamento de artefatos, pipeline e recursos de detecção de alterações, como a regra e a trilha do Amazon CloudWatch Events. CloudTrail Depois de criar sua pilha de recursos AWS CloudFormation, você pode ver seu pipeline no AWS CodePipeline console. O pipeline é um pipeline de dois estágios com um estágio de origem do Amazon S3 e CodeDeploy um estágio de implantação.

**Pré-requisitos:**

Você deve ter os seguintes recursos para usar com o modelo AWS CloudFormation de amostra:
+ Você deve ter criado as instâncias do Amazon EC2, onde instalou o CodeDeploy agente nas instâncias. Você deve ter criado um CodeDeploy aplicativo e um grupo de implantação. Use o Amazon EC2 e CodeDeploy os recursos que você criou. [Tutorial: criar um pipeline simples (CodeCommit repositório)](tutorials-simple-codecommit.md)
+ Escolha os links a seguir para baixar os arquivos de AWS CloudFormation modelo de amostra para criar um pipeline com uma fonte do Amazon S3: 
  + Faça download do modelo de exemplo para o seu pipeline: [YAML](samples/codepipeline-s3-events-yaml.zip) \$1 [JSON](samples/codepipeline-s3-events-json.zip)
  + [Baixe o modelo de amostra para seu CloudTrail bucket e trilha: [YAML \$1 JSON](samples/codepipeline-s3-cloudtrail-yaml.zip)](samples/codepipeline-s3-cloudtrail-json.zip)
  + Descompacte os arquivos e coloque-os em seu computador local.
+ Baixe o aplicativo de amostra em [SampleApp\$1Linux.zip](samples/SampleApp_Linux.zip).

  Salve o arquivo .zip em seu computador local. Você carregará o arquivo .zip após a criação da pilha.

**Crie seu funil em AWS CloudFormation**

1. Abra o AWS CloudFormation console e escolha **Create Stack**. Escolha **With new resources (standard)** (Com novos recursos [padrão]).

1. Em **Escolher um modelo**, escolha **Fazer upload de um modelo**. Selecione **Escolher arquivo** e escolha o arquivo de modelo no seu computador local. Escolha **Próximo**.

1. Em **Stack name (Nome da pilha)**, insira um nome para o pipeline. Os parâmetros especificados pelo modelo de exemplo são exibidos. Insira os seguintes parâmetros: 

   1. Em **ApplicationName**, insira o nome do seu CodeDeploy aplicativo. É possível substituir o nome padrão do `DemoApplication`.

   1. Em **BetaFleet**, insira o nome do seu grupo CodeDeploy de implantação. É possível substituir o nome padrão do `DemoFleet`.

   1. Entrar **SourceObjectKey**, entrar`SampleApp_Linux.zip`. Você carrega esse arquivo para o bucket depois que o modelo cria o bucket e o pipeline.

1. Escolha **Próximo**. Aceite os padrões na página a seguir e selecione **Next (Próximo)**.

1. Em **Capacidades**, selecione **Eu reconheço que AWS CloudFormation pode criar recursos do IAM** e, em seguida, escolha **Criar pilha**.

1. Após a conclusão da criação da pilha, visualize a lista de eventos para verificar se há erros.

   **Solução de problemas**

   O usuário do IAM que está criando o pipeline AWS CloudFormation pode precisar de permissões adicionais para criar recursos para o pipeline. As seguintes permissões são necessárias na política para permitir AWS CloudFormation a criação dos recursos necessários do Amazon CloudWatch Events para o pipeline do Amazon S3:

   ```
   {
        "Effect": "Allow",
        "Action": [
           "events:PutRule",
           "events:PutEvents",
           "events:PutTargets",
           "events:DeleteRule",
           "events:RemoveTargets",
           "events:DescribeRule"
        ],
        "Resource": "resource_ARN"
   }
   ```

1. Em CloudFormation, na guia **Recursos** da sua pilha, visualize os recursos que foram criados para sua pilha. 
**nota**  
Para visualizar o pipeline criado, localize a coluna **ID lógico** na guia **Recursos** da sua pilha no CloudFormation. Anote o nome na coluna **ID físico** do pipeline. Em CodePipeline, você pode visualizar o pipeline com a mesma ID física (nome do pipeline) na região em que criou sua pilha.

   Escolha o bucket do S3 com um rótulo `sourcebucket` no nome, como `s3-cfn-codepipeline-sourcebucket-y04EXAMPLE.`. Não escolha o bucket de artefato do pipeline.

   O bucket de origem está vazio porque o recurso foi criado recentemente pelo CloudFormation. Abra o console do Amazon S3 e localize seu bucket do `sourcebucket`. Escolha **Upload (Fazer upload)** e siga as instruções para carregar seu arquivo.zip `SampleApp_Linux.zip`.
**nota**  
Quando o Amazon S3 é o provedor de origem do pipeline, você deve fazer upload de todos os arquivos de origem compactados em seu bucket como um único arquivo .zip. Caso contrário, a ação da origem falhará.

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

   Em **Pipelines**, selecione o pipeline e clique em **View (Visualizar)**. O diagrama mostra os estágios de implantação e a origem do pipeline.

1. Conclua as etapas dos procedimentos a seguir para criar seus recursos do AWS CloudTrail .

**Crie seus AWS CloudTrail recursos em AWS CloudFormation**

1. Abra o AWS CloudFormation console e escolha **Create Stack**.

1. Em **Choose a template (Selecionar um modelo)**, selecione **Upload a template to Amazon S3 (Carregar um modelo no Amazon S3)**. Escolha **Procurar e, em** seguida, selecione o arquivo de modelo para os AWS CloudTrail recursos do seu computador local. Escolha **Próximo**.

1. Em **Stack name (Nome da pilha)**, informe um nome para sua pilha de recursos. Os parâmetros especificados pelo modelo de exemplo são exibidos. Insira os seguintes parâmetros: 

   1. Em **SourceObjectKey**, aceite o padrão para o arquivo zip do aplicativo de amostra.

1. Escolha **Próximo**. Aceite os padrões na página a seguir e selecione **Next (Próximo)**.

1. Em **Capacidades**, selecione **Eu reconheço que AWS CloudFormation pode criar recursos do IAM** e, em seguida, escolha **Criar**.

1. Após a conclusão da criação da pilha, visualize a lista de eventos para verificar se há erros.

   As seguintes permissões são necessárias na política para permitir AWS CloudFormation a criação dos CloudTrail recursos necessários para o pipeline do Amazon S3:

   ```
   {
        "Effect": "Allow",
        "Action": [
           "cloudtrail:CreateTrail",
           "cloudtrail:DeleteTrail",
           "cloudtrail:StartLogging",
           "cloudtrail:StopLogging",
           "cloudtrail:PutEventSelectors"
        ],
        "Resource": "resource_ARN"
   }
   ```

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

   Em **Pipelines**, selecione o pipeline e clique em **View (Visualizar)**. O diagrama mostra os estágios de implantação e a origem do pipeline.

1. No seu bucket de origem, confirme e envie uma alteração. Seus recursos de detecção de alterações capturam a alteração e o pipeline é iniciado.

# Tutorial: criar um pipeline que usa variáveis das ações de AWS CloudFormation implantação
<a name="tutorials-cloudformation-action"></a>

Neste tutorial, você usa o AWS CodePipeline console para criar um pipeline com uma ação de implantação. Quando o pipeline é executado, o modelo cria uma pilha e também cria um arquivo `outputs`. As saídas geradas pelo modelo de pilha são as variáveis geradas pela AWS CloudFormation ação em. CodePipeline

Na ação em que é criada a pilha a partir do modelo, um namespace variável é designado. As variáveis produzidas pelo arquivo `outputs` podem então ser consumidas por ações subsequentes. Neste exemplo, você cria um conjunto de alterações com base na `StackName` variável produzida pela AWS CloudFormation ação. Após uma aprovação manual, execute o conjunto de alterações e, depois, crie uma ação de pilha de exclusão que exclui a pilha com base na variável `StackName`.

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

**Topics**
+ [Pré-requisitos: criar uma função de AWS CloudFormation serviço e um repositório CodeCommit](#tutorials-cloudformation-action-prereq)
+ [Etapa 1: baixar, editar e carregar o AWS CloudFormation modelo de amostra](#tutorials-cloudformation-action-upload)
+ [Etapa 2: Criar o pipeline](#tutorials-cloudformation-action-pipeline)
+ [Etapa 3: Adicionar uma ação CloudFormation de implantação para criar o conjunto de alterações](#tutorials-cloudformation-action-changeset)
+ [Etapa 4: Adicionar uma ação de aprovação manual](#tutorials-cloudformation-action-approval)
+ [Etapa 5: Adicionar uma ação CloudFormation de implantação para executar o conjunto de alterações](#tutorials-cloudformation-action-deployment)
+ [Etapa 6: Adicionar uma ação CloudFormation de implantação para excluir a pilha](#tutorials-cloudformation-action-delete)

## Pré-requisitos: criar uma função de AWS CloudFormation serviço e um repositório CodeCommit
<a name="tutorials-cloudformation-action-prereq"></a>

Você já deve ter o seguinte:
+ 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.
+ Neste exemplo é criada uma pilha do Amazon DocumentDB a partir de um modelo. Você deve usar AWS Identity and Access Management (IAM) para criar uma função AWS CloudFormation de serviço com as seguintes permissões para o Amazon DocumentDB.

  ```
  "rds:DescribeDBClusters",
  "rds:CreateDBCluster",
  "rds:DeleteDBCluster",
  "rds:CreateDBInstance"
  ```

## Etapa 1: baixar, editar e carregar o AWS CloudFormation modelo de amostra
<a name="tutorials-cloudformation-action-upload"></a>

Faça o download do arquivo AWS CloudFormation de modelo de amostra e faça o upload para o seu CodeCommit repositório.

1. Navegue até o modelo de amostra da região. Por exemplo, use a tabela em [https://docs.aws.amazon.com/documentdb/latest/developerguide/quick_start_cfn.html#quick_start_cfn-launch_stack](https://docs.aws.amazon.com/documentdb/latest/developerguide/quick_start_cfn.html#quick_start_cfn-launch_stack) para escolher a região e baixar o modelo. Baixe o modelo de um cluster do Amazon DocumentDB. O nome do arquivo é `documentdb_full_stack.yaml`.

1. Descompacte o arquivo `documentdb_full_stack.yaml` e abra-o em um editor de texto. Faça as alterações a seguir.

   1. Para este exemplo, adicione o parâmetro `Purpose:` a seguir à seção `Parameters` no modelo.

      ```
        Purpose:
          Type: String
          Default: testing
          AllowedValues:
            - testing
            - production
          Description: The purpose of this instance.
      ```

   1. Para este exemplo, adicione a saída `StackName` a seguir à seção `Outputs:` no modelo.

      ```
        StackName:
          Value: !Ref AWS::StackName
      ```

1. Faça o upload do arquivo de modelo para o seu AWS CodeCommit repositório. É necessário fazer upload do arquivo de modelo descompactado e editado para o diretório raiz do repositório. 

   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. Selecione **Choose file (Escolher arquivo)** e procure 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)**.

   Seu arquivo deve ser parecido com isto no nível raiz do repositório:

   ```
   documentdb_full_stack.yaml
   ```

## Etapa 2: Criar o pipeline
<a name="tutorials-cloudformation-action-pipeline"></a>

Nesta seção, você criará um pipeline com as seguintes ações:
+ Um estágio de origem com uma CodeCommit ação em que o artefato de origem é seu arquivo de modelo.
+ Um estágio de implantação com uma ação CloudFormation de implantação.

Cada ação nos estágios de origem e implantação criada pelo assistente recebe um namespace variável, `SourceVariables` e `DeployVariables`, respectivamente. Como as ações têm um namespace atribuído, as variáveis configuradas neste exemplo estão disponíveis para ações downstream. Para obter mais informações, consulte [Referência de variáveis](reference-variables.md).

**Criar um pipeline 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 **MyCFNDeployPipeline**.

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 **Perfil de serviço**, faça um dos seguintes procedimentos:
   + Escolha **Nova função de serviço** para permitir CodePipeline a criação de uma função de serviço no IAM.
   + Escolha **Existing service role (Função de serviço existente)**. Em **Role name (Nome da função)**, selecione a função de serviço na lista.

1. Em **Artifact store (Armazenamento de artefatos)**: 

   1. Selecione **Local padrão** para usar o armazenamento de artefatos padrão, como o bucket de artefatos do Amazon S3 designado como padrão, para o pipeline na região selecionada para o pipeline.

   1. Selecione **Local personalizado** se você já tiver um armazenamento de artefatos, como um bucket de artefatos do Amazon S3 na mesma região do pipeline.
**nota**  
Este não é o bucket de origem para seu código-fonte. Este é o armazenamento de artefatos para o pipeline. Um armazenamento de artefatos separado, como um bucket do S3, é necessário para cada pipeline. Ao criar ou editar um pipeline, você deve ter um bucket de artefatos na região do pipeline e um bucket de artefatos por AWS região em que você está executando uma ação.  
Para obter mais informações, consulte [Artefatos de entrada e saída](welcome-introducing-artifacts.md) e [CodePipeline referência de estrutura de tubulação](reference-pipeline-structure.md).

   Escolha **Próximo**.

1. Na **Etapa 3: Adicionar estágio de origem**: 

   1. Em **Source provider (Provedor de código-fonte)**, selecione **AWS CodeCommit**.

   1. Em **Nome do repositório**, escolha o nome do CodeCommit repositório que você criou. [Etapa 1: criar um CodeCommit repositório](tutorials-simple-codecommit.md#codecommit-create-repository)

   1. Em **Nome do ramo**, selecione o nome do ramo que contém a última atualização do código.

   Depois de selecionar o nome do repositório e a filial, a regra Amazon CloudWatch Events a ser criada para esse pipeline é exibida. 

   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 **Nome da ação**, escolha **Implantar**. Em **Deploy provider (Fornecedor de implantação)**, escolha **CloudFormation**.

   1. No **Modo de ação**, escolha **Criar ou atualizar uma pilha**.

   1. Em **Nome da pilha**, insira um nome para a pilha. Esse é o nome da pilha que será criada pelo modelo.

   1. Em **Nome do arquivo de saída**, insira um nome para o arquivo de saída, como **outputs**. Esse é o nome do arquivo que será criado pela ação após a criação da pilha.

   1. Expanda **Advanced**. Em **Substituições de parâmetros**, insira suas substituições de modelo como pares de chave/valor. Por exemplo, este modelo requer as substituições a seguir.

      ```
      {
      "DBClusterName": "MyDBCluster",
      "DBInstanceName": "MyDBInstance",
      "MasterUser": "UserName",
      "MasterPassword": "Password",
      "DBInstanceClass": "db.r4.large",
      "Purpose": "testing"}
      ```

      Se você não inserir substituições, o modelo criará uma pilha com valores padrão.

   1. Escolha **Próximo**.

   1. Na **Etapa 7: Revisão**, escolha **Criar funil**. Você deve ver um diagrama que mostra os estágios do pipeline. Deixe que o pipeline seja executado. O pipeline de dois estágios está completo e pronto para os estágios adicionais a serem incluídos.

## Etapa 3: Adicionar uma ação CloudFormation de implantação para criar o conjunto de alterações
<a name="tutorials-cloudformation-action-changeset"></a>

Crie uma próxima ação em seu funil que permitirá CloudFormation criar o conjunto de alterações antes da ação de aprovação manual.



1. Abra o CodePipeline console em [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

   Em **Pipelines**, selecione o pipeline e clique em **View (Visualizar)**. O diagrama mostra os estágios de implantação e a origem do pipeline.

1. Escolha editar o pipeline ou continue exibindo o pipeline no modo **Editar**.

1. Opte por editar o estágio de **implantação**.

1. Adicione uma ação de implantação que criará um conjunto de alterações para a pilha criada na ação anterior. Você deve adicionar essa ação após a ação existente no estágio.

   1. Em **Nome da ação**, insira **Change\$1Set**. Em **Provedor de ação**, selecione **AWS CloudFormation **.

   1. Em **Artefato de entrada**, escolha **SourceArtifact**.

   1. Em **Action mode (Modo de ação)**, escolha **Create or replace a change set (Criar ou substitui um conjunto de alterações)**.

   1. Em **Nome da pilha**, insira a sintaxe da variável como mostrado. Esse é o nome da pilha para a qual o conjunto de alterações foi criado, em que o namespace padrão `DeployVariables` é atribuído à ação.

      ```
      #{DeployVariables.StackName}
      ```

   1. Em **Alterar nome do conjunto**, insira o nome do conjunto de alterações.

      ```
      my-changeset
      ```

   1. Em **Substituições de parâmetros**, altere o parâmetro `Purpose` de `testing` para `production`.

      ```
      {
      "DBClusterName": "MyDBCluster",
      "DBInstanceName": "MyDBInstance",
      "MasterUser": "UserName",
      "MasterPassword": "Password",
      "DBInstanceClass": "db.r4.large",
      "Purpose": "production"}
      ```

   1. Escolha **Concluído** para salvar a ação.

## Etapa 4: Adicionar uma ação de aprovação manual
<a name="tutorials-cloudformation-action-approval"></a>

Crie uma ação de aprovação manual no pipeline.



1. Escolha editar o pipeline ou continue exibindo o pipeline no modo **Editar**.

1. Opte por editar o estágio de **implantação**.

1. Adicione uma ação de aprovação manual após a ação de implantação que cria o conjunto de alterações. Essa ação permite que você verifique o conjunto de alterações de recursos criado CloudFormation antes que o pipeline execute o conjunto de alterações.

## Etapa 5: Adicionar uma ação CloudFormation de implantação para executar o conjunto de alterações
<a name="tutorials-cloudformation-action-deployment"></a>

Crie uma próxima ação em seu pipeline que permita CloudFormation executar o conjunto de alterações após a ação de aprovação manual.



1. Abra o CodePipeline console em [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

   Em **Pipelines**, selecione o pipeline e clique em **View (Visualizar)**. O diagrama mostra os estágios de implantação e a origem do pipeline.

1. Escolha editar o pipeline ou continue exibindo o pipeline no modo **Editar**.

1. Opte por editar o estágio de **implantação**.

1. Adicione uma ação de implantação que executará o conjunto de alterações aprovado na ação manual anterior:

   1. Em **Nome da ação**, insira **Execute\$1Change\$1Set**. Em **Provedor de ação**, selecione **AWS CloudFormation**.

   1. Em **Artefato de entrada**, escolha **SourceArtifact**.

   1. Em **Action mode (Modo de ação)**, escolha **Execute a change set (Executar um conjunto de alterações)**.

   1. Em **Nome da pilha**, insira a sintaxe da variável como mostrado. Esse é o nome da pilha para a qual o conjunto de alterações é criado.

      ```
      #{DeployVariables.StackName}
      ```

   1. Em **Nome do conjunto de alterações**, insira o nome do conjunto de alterações criado na ação anterior.

      ```
      my-changeset
      ```

   1. Escolha **Concluído** para salvar a ação.

   1. Continue a execução do pipeline.

## Etapa 6: Adicionar uma ação CloudFormation de implantação para excluir a pilha
<a name="tutorials-cloudformation-action-delete"></a>

Crie uma ação final em seu pipeline que permita CloudFormation obter o nome da pilha da variável no arquivo de saídas e excluir a pilha.



1. Abra o CodePipeline console em [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

   Em **Pipelines**, selecione o pipeline e clique em **View (Visualizar)**. O diagrama mostra os estágios de implantação e a origem do pipeline.

1. Escolha editar o pipeline.

1. Opte por editar o estágio de **implantação**.

1. Adicione uma ação de implantação que excluirá a pilha:

   1. Em **Nome da ação**, escolha **DeleteStack**. Em **Deploy provider (Fornecedor de implantação)**, escolha **CloudFormation**.

   1. Em **Modo de ação**, escolha **Excluir uma pilha**.

   1. Em **Nome da pilha**, insira a sintaxe da variável como mostrado. Esse é o nome da pilha que será excluída pela ação.

   1. Escolha **Concluído** para salvar a ação.

   1. Escolha **Salvar** para salvar o pipeline.

   O pipeline é executado quando ele é salvo.

# Tutorial: Implantação padrão do Amazon ECS com CodePipeline
<a name="ecs-cd-pipeline"></a>

Este tutorial ajuda você a criar um pipeline de implantação (CD) completo e end-to-end contínuo com o Amazon ECS com CodePipeline.

**Importante**  
Como parte da criação de um pipeline no console, um bucket de artefatos S3 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 padrão do Amazon ECS para CodePipeline. Para obter um tutorial que usa o Amazon ECS para a ação de implantação CodeDeploy azul/verde em CodePipeline, consulte. [Tutorial: Crie um pipeline com uma fonte e ECS-to-CodeDeploy implantação do Amazon ECR](tutorials-ecs-ecr-codedeploy.md)

**nota**  
Este tutorial é para a ação de implantação padrão do Amazon ECS CodePipeline com uma ação de origem. Para ver um tutorial que usa a ação de ECSstandard implantação da Amazon junto com a ação de ECRBuild AndPublish criação CodePipeline para enviar sua imagem, consulte[Tutorial: Crie e envie uma imagem do Docker para o Amazon ECR com CodePipeline (tipo V2)](tutorials-ecr-build-publish.md).

## Pré-requisitos
<a name="ecs-cd-prereqs"></a>

Para você usar este tutorial para criar seu pipeline de CD, alguns recursos precisam estar em operação. Veja aqui estão os itens que você precisa para começar: 

**nota**  
Todos esses recursos devem ser criados na mesma AWS região.
+ Um repositório de controle de origem (este tutorial usa CodeCommit) com seu Dockerfile e a fonte do aplicativo. Para obter mais informações, consulte [Criar um CodeCommit repositório](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-create-repository.html) no *Guia do AWS CodeCommit usuário*.
+ Um repositório de imagens de Docker (este tutorial usa o Amazon ECR) que contém uma imagem criada com o Dockerfile e a origem da aplicação. Para obter mais informações, consulte [Criação de um repositório](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) e [Envio de uma imagem por push](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html) no *Guia do usuário do Amazon Elastic Container Registry*.
+ Uma definição de tarefa do Amazon ECS que faz referência à imagem do Docker hospedada em seu repositório de imagens. Para obter mais informações, consulte [Como criar uma definição de tarefa](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-task-definition.html) no *Guia do desenvolvedor do Amazon Elastic Container Service*.
**Importante**  
A ação de implantação padrão do Amazon ECS para CodePipeline cria sua própria revisão da definição da tarefa com base na revisão usada pelo serviço Amazon ECS. Se você criar novas revisões para a definição de tarefa sem atualizar o serviço Amazon ECS, a ação de implantação ignorará essas revisões.

  Veja a seguir um exemplo de definição de tarefa usado neste tutorial. O valor que você usa em `name` e `family` será usado na próxima etapa do seu arquivo de especificação de compilação.

  ```
  {
    "ipcMode": null,
    "executionRoleArn": "role_ARN",
    "containerDefinitions": [
      {
        "dnsSearchDomains": null,
        "environmentFiles": null,
        "logConfiguration": {
          "logDriver": "awslogs",
          "secretOptions": null,
          "options": {
            "awslogs-group": "/ecs/hello-world",
            "awslogs-region": "us-west-2",
            "awslogs-stream-prefix": "ecs"
          }
        },
        "entryPoint": null,
        "portMappings": [
          {
            "hostPort": 80,
            "protocol": "tcp",
            "containerPort": 80
          }
        ],
        "command": null,
        "linuxParameters": null,
        "cpu": 0,
        "environment": [],
        "resourceRequirements": null,
        "ulimits": null,
        "dnsServers": null,
        "mountPoints": [],
        "workingDirectory": null,
        "secrets": null,
        "dockerSecurityOptions": null,
        "memory": null,
        "memoryReservation": 128,
        "volumesFrom": [],
        "stopTimeout": null,
        "image": "image_name",
        "startTimeout": null,
        "firelensConfiguration": null,
        "dependsOn": null,
        "disableNetworking": null,
        "interactive": null,
        "healthCheck": null,
        "essential": true,
        "links": null,
        "hostname": null,
        "extraHosts": null,
        "pseudoTerminal": null,
        "user": null,
        "readonlyRootFilesystem": null,
        "dockerLabels": null,
        "systemControls": null,
        "privileged": null,
        "name": "hello-world"
      }
    ],
    "placementConstraints": [],
    "memory": "2048",
    "taskRoleArn": null,
    "compatibilities": [
      "EC2",
      "FARGATE"
    ],
    "taskDefinitionArn": "ARN",
    "family": "hello-world",
    "requiresAttributes": [],
    "pidMode": null,
    "requiresCompatibilities": [
      "FARGATE"
    ],
    "networkMode": "awsvpc",
    "cpu": "1024",
    "revision": 1,
    "status": "ACTIVE",
    "inferenceAccelerators": null,
    "proxyConfiguration": null,
    "volumes": []
  }
  ```
+ Um cluster do Amazon ECS que executa um serviço que usa a definição de tarefa mencionada anteriormente. Para obter mais informações, consulte [Criação de um cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html) e [Criação de um serviço](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-service-console-v2.html) no *Guia do desenvolvedor do Amazon Elastic Container Service*.

Assim que você atender a esses pré-requisitos, poderá continuar com o tutorial e criar seu pipeline de CD.

## Etapa 1: Adicionar um arquivo de especificação de compilação ao repositório de origem
<a name="cd-buildspec"></a>

Este tutorial é usado CodeBuild para criar sua imagem do Docker e enviar a imagem para o Amazon ECR. Adicione um arquivo `buildspec.yml` ao repositório de código-fonte para informar ao CodeBuild como fazer isso. O exemplo de especificação de compilação abaixo faz o seguinte:
+ Estágio pré-compilação:
  + Faça login no Amazon ECR.
  + Defina a URI de repositório de sua imagem ECR e adicione uma tag de imagem com os primeiros sete caracteres do ID de confirmação do Git da origem.
+ Estágio de compilação:
  + Crie a imagem de docker e marque-a como `latest` e com o ID de confirmação do Git.
+ Estágio pós-compilação:
  + Envie por push a imagem para o repositório do ECR com ambas as tags.
  + Grave um arquivo denominado `imagedefinitions.json` na raiz da compilação que contém o nome de contêiner, a imagem e tag do serviço do Amazon ECS. O estágio de implantação do pipeline de CD usa essas informações para criar uma nova revisão da definição de tarefa do serviço e, em seguida, atualiza o serviço para usar a nova definição de tarefa. O arquivo `imagedefinitions.json` é necessário para o operador de trabalho do ECS.

Cole este texto de exemplo para criar seu arquivo `buildspec.yml` e substitua os valores para definição da imagem e da tarefa. Este texto usa o exemplo de ID de conta 111122223333.

```
version: 0.2

phases:
  pre_build:
    commands:
      - echo Logging in to Amazon ECR...
      - aws --version
      - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-west-2.amazonaws.com
      - REPOSITORY_URI=012345678910.dkr.ecr.us-west-2.amazonaws.com/hello-world
      - COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
      - IMAGE_TAG=${COMMIT_HASH:=latest}
  build:
    commands:
      - echo Build started on `date`
      - echo Building the Docker image...
      - docker build -t $REPOSITORY_URI:latest .
      - docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG
  post_build:
    commands:
      - echo Build completed on `date`
      - echo Pushing the Docker images...
      - docker push $REPOSITORY_URI:latest
      - docker push $REPOSITORY_URI:$IMAGE_TAG
      - echo Writing image definitions file...
      - printf '[{"name":"hello-world","imageUri":"%s"}]' $REPOSITORY_URI:$IMAGE_TAG > imagedefinitions.json
artifacts:
    files: imagedefinitions.json
```

A especificação de compilação foi escrita para o exemplo de definição de tarefa fornecido em [Pré-requisitos](#ecs-cd-prereqs), usado pelo serviço do Amazon ECS para este tutorial. O valor `REPOSITORY_URI` corresponde ao repositório `image` (sem nenhuma tag de imagem) e o valor `hello-world` próximo do final do arquivo corresponde ao nome do contêiner na definição de tarefa do serviço. 

**Para adicionar um arquivo `buildspec.yml` ao repositório de origem**

1. Abra um editor de texto e, em seguida, copie e cole a especificação de compilação acima em um novo arquivo.

1. Substitua o valor `REPOSITORY_URI` (`012345678910.dkr.ecr.us-west-2.amazonaws.com/hello-world`) pelo URI do repositório do Amazon ECR (sem nenhuma tag de imagem) da imagem do Docker. Substitua `hello-world` pelo nome do contêiner na definição de tarefa do serviço que se refere à imagem de docker.

1. Confirme e envie o arquivo `buildspec.yml` para o repositório de origem.

   1. Adicione o arquivo.

      ```
      git add .
      ```

   1. Confirme a alteração.

      ```
      git commit -m "Adding build specification."
      ```

   1. Envie a confirmação.

      ```
      git push
      ```

## Etapa 2: Criar uma pipeline de implantação contínua
<a name="pipeline-wizard"></a>

Use o CodePipeline assistente para criar seus estágios de pipeline e conectar seu repositório de origem ao seu serviço ECS.

**Para criar o pipeline**

1. Abra o CodePipeline console em [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

1. Na página **Bem-vindo,** escolha **Criar pipeline**. 

   Se for a primeira vez que você usa CodePipeline, uma página introdutória será exibida em vez de **Bem-vindo**. Escolha **Get Started Now (Começar agora)**.

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 configurações de pipeline**, em **Nome do pipeline**, digite o nome do pipeline. Para este tutorial, o nome do pipeline é **hello-world**.

1. Em **Tipo de pipeline**, mantenha a seleção padrão em **V2**. Os tipos de pipeline diferem em características e preços. Para obter mais informações, consulte [Tipos de pipeline](pipeline-types.md). Escolha **Próximo**.

1. Na página **Etapa 3: Adicionar estágio de origem**, em **Provedor de origem**, escolha ** AWS CodeCommit**.

   1. Em **Repository name (Nome do repositório)**, escolha o nome do repositório do CodeCommit para usar como o local de origem do pipeline.

   1. Em **Branch name (Nome da ramificação)**, escolha a ramificação a ser usada e selecione **Next (Próximo)**.

1. Na página **Etapa 4: Adicionar estágio de construção**, em **Provedor de compilação **AWS CodeBuild****, escolha e, em seguida, escolha **Criar projeto**.

   1. Em **Project name**, escolha um nome exclusivo para seu projeto de compilação. Para este tutorial, o nome do projeto é **hello-world**.

   1. Em **Imagem do ambiente**, escolha **Imagem gerenciada**.

   1. Em **Sistema operacional**, escolha **Amazon Linux 2**.

   1. Em **Runtime(s)**, selecione **Padrão**.

   1. Em **Imagem**, escolha **`aws/codebuild/amazonlinux2-x86_64-standard:3.0`**.

   1. Em **Image version (Versão da imagem)** e **Environment type (Tipo de ambiente)**, use os valores padrão.

   1. Selecione **Enable this flag if you want to build Docker images or want your builds to get elevated privileges (Ativar este sinalizador se quiser criar imagens do Docker ou desejar que suas compilações obtenham privilégios elevados)**.

   1. Desmarque os **CloudWatch registros**. Talvez seja necessário expandir **Avançado**.

   1. Escolha **Continuar para CodePipeline**.

   1. Escolha **Próximo**.
**nota**  
O assistente cria uma função de CodeBuild serviço para seu projeto de compilação, chamada **codebuild- *build-project-name* -service-role**. Observe esse nome de perfil ao adicionar as permissões do Amazon ECR a ele posteriormente.

1. Na página **Etapa 5: Adicionar estágio de implantação**, em **Provedor de implantação**, escolha **Amazon ECS.**

   1. Em **Nome do cluster**, escolha o cluster do Amazon ECS no qual o serviço está em execução. Para este tutorial, o cluster é **default**.

   1. Em **Service name (Nome do serviço)**, escolha o serviço a ser atualizado e selecione **Next (Próximo)**. Para este tutorial, o nome do serviço é **hello-world**.

1. Na página **Step 6: Review**, revise a configuração do pipeline e escolha **Create pipeline** para criá-lo.
**nota**  
Agora que o pipeline foi criado, ele tentará passar pelos diferentes estágios de pipeline. No entanto, a CodeBuild função padrão criada pelo assistente não tem permissões para executar todos os comandos contidos no `buildspec.yml` arquivo, portanto, o estágio de criação falha. A próxima seção adiciona as permissões para o estágio de compilação.

## Etapa 3: Adicionar permissões do Amazon ECR à função CodeBuild
<a name="code-build-perms"></a>

O CodePipeline assistente criou uma função do IAM para o projeto de construção, chamada CodeBuild **codebuild- *build-project-name* -service-role**. Para este tutorial, o nome é **codebuild-hello-world-service-role**. Como o arquivo `buildspec.yml` faz chamadas para operações de API do Amazon ECR, o perfil deve ter uma política que conceda permissões para a realização dessas chamadas ao Amazon ECR. O procedimento a seguir ajuda você a anexar as permissões adequadas à função.

**Para adicionar permissões do Amazon ECR à função CodeBuild**

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

1. No painel de navegação à esquerda, selecione **Perfis**.

1. Na caixa de pesquisa, digite **codebuild-** e escolha a função que foi criada pelo CodePipeline assistente. Neste tutorial, o nome da função é **codebuild-hello-world-service-role**.

1. Na página **Summary (Resumo)**, escolha **Attach policies (Associar políticas)**.

1. Selecione a caixa à esquerda da EC2 ContainerRegistryPowerUser política da **Amazon** e escolha **Anexar política**.

## Etapa 4: Testar o pipeline
<a name="commit-change"></a>

Seu pipeline deve ter tudo para executar uma implantação AWS contínua end-to-end nativa. Agora, teste a funcionalidade enviando uma alteração de código ao repositório de origem.

**Para testar o pipeline**

1. Faça uma alteração no código no repositório de origem configurado, confirme e envie a alteração.

1. Abra o CodePipeline console em [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

1. Escolha o pipeline na lista.

1. Observe a evolução do pipeline pelos respectivos estágios. O pipeline será concluído e o serviço do Amazon ECS executará a imagem do Docker criada a partir da alteração do código.

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

# Tutorial: Criar um pipeline que implanta uma skill do Amazon Alexa
<a name="tutorials-alexa-skills-kit"></a>

Nesse tutorial, você configura um pipeline que fornece continuamente sua skill da Alexa usando o Alexa Skills Kit como o provedor de implantação em seu estágio de implantação. O pipeline concluído detecta alterações em sua skill quando você faz uma alteração nos arquivos de origem em seu repositório de origem. O pipeline usa o Alexa Skills Kit para implantar no estágio de desenvolvimento de skills da Alexa.

**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 atributo não está disponível na região Ásia-Pacífico (Hong Kong) ou Europa (Milão). Para usar outras ações de implantação disponíveis nessa região, consulte [Implantar integrações de ações](integrations-action-type.md#integrations-deploy).

Para criar sua habilidade personalizada como uma função Lambda, consulte [Hospedar uma habilidade personalizada como uma função Lambda AWS](https://developer.amazon.com/docs/custom-skills/host-a-custom-skill-as-an-aws-lambda-function.html). Você também pode criar um pipeline que usa arquivos de origem do Lambda e um CodeBuild projeto para implantar alterações no Lambda para sua habilidade.

## Pré-requisitos
<a name="tutorials-alexa-skills-kit-prereq"></a>

Você já deve ter o seguinte:
+ 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.
+ Uma conta de desenvolvedor da Amazon. Essa é a conta que possui suas skills na Alexa. Você pode criar uma conta gratuitamente no [Alexa Skills Kit](https://developer.amazon.com/alexa-skills-kit). 
+ Uma skill da Alexa. Você pode criar um exemplo de skill usando o tutorial [Obter código de exemplo da skill personalizada](https://developer.amazon.com/docs/custom-skills/use-the-alexa-skills-kit-samples.html).
+ Instale a CLI do ASK e configure-a usando `ask init` com as credenciais da AWS . Consulte [Instalar e inicializar a CLI do ASK](https://developer.amazon.com/docs/smapi/quick-start-alexa-skills-kit-command-line-interface.html#install-initialize).

## Etapa 1: Criar um perfil de segurança do LWA dos serviços de desenvolvedor da Alexa
<a name="tutorials-alexa-skills-kit-profile"></a>

Nessa seção, crie um perfil de segurança para usar com o Login with Amazon (LWA). Se você já tiver um perfil, ignore esta etapa.
+ Use as etapas em [generate-lwa-tokens](https://developer.amazon.com/docs/smapi/ask-cli-command-reference.html#generate-lwa-tokens) para criar um perfil de segurança.
+ Depois de criar o perfil, anote o **Client ID (ID do cliente)** e o **Client Secret (Segredo do cliente)**.
+ Certifique-se de inserir a **devolução permitida URLs** conforme fornecido nas instruções. Eles URLs permitem que o comando ASK CLI redirecione as solicitações de token de atualização.

## Etapa 2: Crie arquivos de origem de habilidades da Alexa e envie para seu repositório CodeCommit
<a name="tutorials-alexa-skills-kit-push"></a>

Nessa seção, você cria e envia seus arquivos de origem de skills da Alexa para o repositório que o pipeline usa para o estágio de origem. Para a skill que você criou no console do desenvolvedor da Amazon, você produz e envia o seguinte: 
+ Um arquivo `skill.json`.
+ Uma pasta `interactionModel/custom`.
**nota**  
Essa estrutura de diretório está em conformidade com os requisitos de formato do pacote de skills do Alexa Skills Kit, conforme descrito em [Formato do pacote de skills](https://developer.amazon.com/docs/smapi/skill-package-api-reference.html#skill-package-format). Se a estrutura do diretório não usar o formato correto do pacote de skills, as alterações não serão implantadas com êxito no console do Alexa Skills Kit.

**Como criar arquivos de origem para sua skill**

1. Recupere o ID da skill do console do desenvolvedor do Alexa Skills Kit. Use este comando:

   ```
   ask api list-skills
   ```

   Localize a skill por nome e copie o ID associado no campo `skillId`.

1. Gere um arquivo `skill.json` que contém os detalhes da skill. Use este comando:

   ```
   ask api get-skill -s skill-ID > skill.json
   ```

1. (Opcional) Crie uma pasta `interactionModel/custom`.

   Use esse comando para gerar o arquivo de modelo de interação dentro da pasta. Para localidade, esse tutorial usa en-US como a localidade no nome do arquivo.

   ```
   ask api get-model --skill-id skill-ID --locale locale >
       ./interactionModel/custom/locale.json
   ```

**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 AWS CodePipeline. Os arquivos devem ter a seguinte aparência em seu diretório local:

   ```
   skill.json
   /interactionModel
     /custom
       |en-US.json
   ```

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

   1. Para usar a linha de comando Git a partir de um repositório clonado no computador local:

      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 Alexa skill 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: Usar os comandos da CLI do ASK para criar um token de atualização
<a name="tutorials-alexa-skills-kit-token"></a>

CodePipeline usa um token de atualização com base no ID do cliente e no segredo da sua conta de desenvolvedor da Amazon para autorizar ações que ele executa em seu nome. Nessa seção, você usa a CLI do ASK para criar o token. Você pode usar essas credenciais quando usar o assistente **Create Pipeline (Criar pipeline)**.

**Para criar um token de atualização com as credenciais da conta de desenvolvedor da Amazon**

1. Use o seguinte comando: 

   ```
   ask util generate-lwa-tokens
   ```

1. Quando solicitado, insira o ID de cliente e o segredo, conforme mostrado neste exemplo: 

   ```
   ? Please type in the client ID: 
   amzn1.application-client.example112233445566
   ? Please type in the client secret:
   example112233445566
   ```

1. A página de login do navegador será exibida. Faça login com as credenciais da conta de desenvolvedor da Amazon.

1. Volte para a tela de linha de comando. O token de acesso e o token de atualização serão gerados na saída. Copie o token de atualização retornado na saída.

## Etapa 4: Criar o pipeline
<a name="tutorials-alexa-skills-kit-pipeline"></a>

Nesta seção, você criará um pipeline com as seguintes ações:
+ Um estágio de origem com uma CodeCommit ação em que os artefatos de origem são os arquivos de habilidades da Alexa que dão suporte à sua habilidade.
+ Um estágio de implantação com uma ação de implantação do Alexa Skills Kit.

**Criar um pipeline 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. Escolha a AWS região em que você deseja criar o projeto e seus recursos. O tempo de execução da skill da Alexa está disponível somente nas seguintes regiões:
   + Ásia-Pacífico (Tóquio)
   + Europa (Irlanda)
   + Leste dos EUA (N. da Virgínia)
   + Oeste dos EUA (Oregon)

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 **MyAlexaPipeline**.

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 **Nome do repositório**, escolha o nome do CodeCommit repositório em que você criou. [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.

   Depois de selecionar o nome do repositório e a ramificação, uma mensagem mostra a regra Amazon CloudWatch Events a ser criada para esse pipeline. 

   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 (Provedor de implantação)**, escolha **Alexa Skills Kit**. 

   1. Em **Alexa skill ID (ID da skill da Alexa)**, insira o ID da skill atribuído à sua skill no console do desenvolvedor do Alexa Skills Kit.

   1. Em **Client ID (ID do cliente)**, insira o ID do aplicativo que você registrou.

   1. Em **Client secret (Segredo do cliente)**, insira o segredo que você escolheu quando se registrou.

   1. Em **Refresh token (Token de atualização)**, insira o token que você gerou na etapa 3.  
![\[Etapa 6: Implantar página para uma ação do Alexa Skills Kit\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/alexa-deploy.png)

   1. Escolha **Próximo**.

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

## Etapa 5: Realizar uma alteração em qualquer arquivo de origem e verificar a implantação
<a name="tutorials-alexa-skills-kit-update"></a>

Inclua uma alteração em sua skill e envie-a ao repositório. Deste modo, a execução de seu pipeline é acionada. Verifique se sua skill está atualizada no [console do desenvolvedor do Alexa Skills Kit](https://developer.amazon.com/alexa/console/ask).

# Tutorial: Criar um pipeline que usa o Amazon S3 como um provedor de implantação
<a name="tutorials-s3deploy"></a>

Nesse tutorial, você configurará um pipeline que fornece continuamente arquivos usando o Amazon S3 como o provedor de ação de implantação no estágio de implantação. O pipeline concluído detecta alterações quando você faz uma alteração nos arquivos de origem em seu repositório de origem. O pipeline usa o Amazon S3 para implantar os arquivos no bucket. Sempre que você modifica ou adiciona os arquivos do site no local de origem, a implantação cria o site com os arquivos mais recentes. 

**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**  
Mesmo que você exclua arquivos do repositório de origem, a ação de implantação do S3 não exclui objetos do S3 correspondentes aos arquivos excluídos.

Esse tutorial fornece duas opções:
+ Crie um pipeline que implante um site estático no bucket público do S3. Este exemplo cria um pipeline com uma ação de AWS CodeCommit origem e uma ação de implantação do Amazon S3. Consulte [Opção 1: Implantar arquivos estáticos de sites no Amazon S3](#tutorials-s3deploy-acc).
+ Crie um pipeline que compile o TypeScript código de amostra JavaScript e implante o artefato de CodeBuild saída em seu bucket do S3 para arquivamento. Este exemplo cria um pipeline com uma ação de origem do Amazon S3, uma ação de CodeBuild construção e uma ação de implantação do Amazon S3. Consulte [Opção 2: Implantar arquivos de arquivamento compilados no Amazon S3 a partir de um bucket de origem do S3](#tutorials-s3deploy-s3source).

**Importante**  
Muitas das ações que você adiciona ao pipeline nesse procedimento envolvem AWS recursos que você precisa criar antes de criar o pipeline. AWS os recursos para suas ações de origem sempre devem ser criados na mesma AWS região em que você cria seu pipeline. Por exemplo, se você criar seu pipeline na região Leste dos EUA (Ohio), seu CodeCommit repositório deverá estar na região Leste dos EUA (Ohio).   
Você pode adicionar ações entre regiões ao criar seu pipeline. AWS os recursos para ações entre regiões devem estar na mesma AWS região em que você planeja executar a ação. Para obter mais informações, consulte [Adicionar uma ação entre regiões em CodePipeline](actions-create-cross-region.md).

## Opção 1: Implantar arquivos estáticos de sites no Amazon S3
<a name="tutorials-s3deploy-acc"></a>

Neste exemplo, você baixa o arquivo de modelo de site estático de amostra, carrega os arquivos no seu AWS CodeCommit repositório, cria seu bucket e o configura para hospedagem. Em seguida, você usa o AWS CodePipeline console para criar seu pipeline e especificar uma configuração de implantação do Amazon S3.

### Pré-requisitos
<a name="tutorials-s3deploy-acc-prereq"></a>

Você já deve ter o seguinte:
+ 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.
+ Os arquivos de origem para o site estático. Use este link para fazer download de um [exemplo de site estático](samples/sample-website.zip). O download do sample-website.zip apresenta os seguintes arquivos: 
  + Um arquivo `index.html`;
  + Um arquivo `main.css`
  + Um arquivo `graphic.jpg`
+ Um bucket do S3 configurado para hospedagem de site. Consulte [Hospedagem de um site estático no Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html). Crie o bucket na mesma região do pipeline.
**nota**  
Para hospedar um site, seu bucket deve ter acesso público de leitura, o que dá acesso de leitura a todos. Com exceção da hospedagem de sites, é necessário manter as configurações de acesso padrão que bloqueiam o acesso público aos buckets do S3.

### Etapa 1: Envie os arquivos de origem para o seu CodeCommit repositório
<a name="tutorials-s3deploy-acc-push"></a>

Nessa seção, envie seus arquivos de origem para o repositório que o pipeline usa para o estágio de origem.

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

1. Extraia os exemplos de arquivos obtidos por download. Não faça upload do arquivo ZIP para o 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:

   ```
   index.html
   main.css
   graphic.jpg
   ```

1. Você pode usar o Git ou o CodeCommit console para carregar seus arquivos:

   1. Para usar a linha de comando Git a partir de um repositório clonado no computador local:

      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 static website 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. Selecione **Choose file (Escolher arquivo)** e procure 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 2: Criar o pipeline
<a name="tutorials-s3deploy-acc-pipeline"></a>

Nesta seção, você criará um pipeline com as seguintes ações:
+ Um estágio de origem com uma CodeCommit ação em que os artefatos de origem são os arquivos do seu site.
+ Um estágio de implantação com uma ação de implantação do Amazon S3.

**Criar um pipeline 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 **MyS3DeployPipeline**.

1. Em **Tipo de pipeline**, escolha **V2**. Para obter mais informações, consulte [Tipos de pipeline](pipeline-types.md). Escolha **Próximo**.

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. A não ser que você tenha criado outro ramo, apenas `main` esta disponível. 

   Depois de selecionar o nome do repositório e a filial, a regra Amazon CloudWatch Events a ser criada para esse pipeline é exibida. 

   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 (Provedor de implantação)**, escolha **Amazon S3**. 

   1. Em **Bucket**, insira o nome do seu bucket público.

   1. Selecione **Extract file before deploy (Extrair arquivo antes de implantar)**.
**nota**  
A implantação falhará se você não selecionar **Extrair arquivo antes da implantação**. Isso ocorre porque a AWS CodeCommit ação em seu pipeline compacta os artefatos de origem e seu arquivo é um arquivo ZIP.

      Quando **Extract file before deploy (Extrair arquivo antes de implantar)** for selecionado, o **Deployment path (Caminho de implantação)** será exibido. Insira no nome do caminho que você deseja usar. Isso cria uma estrutura de pastas no Amazon S3 para a qual os arquivos são extraídos. Para esse tutorial, deixe esse campo em branco.  
![\[Etapa 6: Adicionar página de estágio de implantação para uma ação de implantação do S3 com uma fonte AWS CodeCommit\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/tutorial-s3deploy-stage-codecommit.png)

   1. (Opcional) Em **Canned ACL (ACL pré-configurada)**, você pode aplicar um conjunto de concessões predefinidas, conhecido como [ACL pré-configurada](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl), aos artefatos carregados. 

   1. (Opcional) Em **Cache control (Controle de cache)**, insira os parâmetros de armazenamento em cache. Você pode definir isso para controlar o comportamento do armazenamento em cache para solicitações/respostas. Para obter os valores válidos, consulte o campo de cabeçalho [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) para operações HTTP.

   1. Escolha **Próximo**.

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

1. Depois que o pipeline for executado com êxito, abra o console do Amazon S3 e verifique se os arquivos aparecem no bucket público, conforme mostrado:

   ```
   index.html
   main.css
   graphic.jpg
   ```

1. Acesse o endpoint para testar o site. O endpoint segue este formato: `http://bucket-name.s3-website-region.amazonaws.com/`.

   Exemplo do endpoint: `http://my-bucket.s3-website-us-west-2.amazonaws.com/`. 

   A página da web a seguir é exibida.

### Etapa 3: Realizar uma alteração em qualquer arquivo de origem e verificar a implantação
<a name="tutorials-s3deploy-acc-update"></a>

Inclua uma alteração nos arquivos de origem e envie-a ao repositório. Deste modo, a execução de seu pipeline é acionada. Verifique se o site está atualizado.

## Opção 2: Implantar arquivos de arquivamento compilados no Amazon S3 a partir de um bucket de origem do S3
<a name="tutorials-s3deploy-s3source"></a>

Nessa opção, os comandos de compilação em seu estágio de compilação compilam o TypeScript código em JavaScript código e implantam a saída no bucket de destino do S3 em uma pasta separada com carimbo de data e hora. Primeiro, você cria o TypeScript código e um arquivo buildspec.yml. Depois de combinar os arquivos de origem em um arquivo ZIP, você carrega o arquivo ZIP de origem no bucket de origem do S3 e usa um CodeBuild estágio para implantar um arquivo ZIP do aplicativo criado no bucket de destino do S3. O código compilado é mantido como um arquivo no bucket de destino.

### Pré-requisitos
<a name="tutorials-s3deploy-s3source-prereq"></a>

Você já deve ter o seguinte:
+ Um bucket de origem do S3. Você pode usar o bucket que criou em [Tutorial: Criar um pipeline simples (bucket do S3)](tutorials-simple-s3.md).
+ Um bucket de destino do S3. Consulte [Hospedagem de um site estático no Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html). Certifique-se de criar seu bucket da Região da AWS mesma forma que o pipeline que você deseja criar.
**nota**  
Este exemplo demonstra a implantação de arquivos em um bucket privado. Não ative o bucket de destino para hospedagem de sites nem anexe políticas que tornem o bucket público.

### Etapa 1: Criar e fazer upload de arquivos de origem para o bucket de origem do S3
<a name="tutorials-s3deploy-s3source-upload"></a>

Nessa seção, você cria e faz upload dos arquivos de origem para o bucket que o pipeline usa para seu estágio de origem. Essa seção fornece instruções para criar os seguintes arquivos de origem:
+ Um `buildspec.yml` arquivo usado para CodeBuild criar projetos.
+ Um arquivo `index.ts`. 

**criar um arquivo buildspec.yml**
+ Crie um arquivo denominado `buildspec.yml` com os conteúdos a seguir. Esses comandos de compilação instalam TypeScript e usam o TypeScript compilador para reescrever o código no `index.ts` código. JavaScript

  ```
  version: 0.2
  
  phases:
    install:
      commands:
        - npm install -g typescript
    build:
      commands:
        - tsc index.ts
  artifacts:
    files:
      - index.js
  ```

**Criar um arquivo index.ts**
+ Crie um arquivo denominado `index.ts` com os conteúdos a seguir.

  ```
  interface Greeting {
      message: string;
  }
  
  class HelloGreeting implements Greeting {
      message = "Hello!";
  }
  
  function greet(greeting: Greeting) {
      console.log(greeting.message);
  }
  
  let greeting = new HelloGreeting();
  
  greet(greeting);
  ```

**Como fazer upload de arquivos para o bucket de origem do S3**

1. Os arquivos devem ter a seguinte aparência em seu diretório local:

   ```
   buildspec.yml
   index.ts
   ```

   Compacte os arquivos e nomeie o arquivo `source.zip`.

1. No console do Amazon S3, para o bucket de origem, selecione **Carregar**. Escolha **Add files (Adicionar arquivos)** e procure o arquivo ZIP que você criou.

1.  Escolha **Carregar**. Esses arquivos são o artefato de origem gerado pelo assistente **Create Pipeline (Criar pipeline)** para a ação de implantação no CodePipeline. O arquivo deve ter a seguinte aparência no bucket:

   ```
   source.zip
   ```

### Etapa 2: Criar o pipeline
<a name="tutorials-s3deploy-s3source-pipeline"></a>

Nesta seção, você criará um pipeline com as seguintes ações:
+ Um estágio de origem com uma ação do Amazon S3 em que os artefatos de origem são os arquivos da aplicação para download.
+ Um estágio de implantação com uma ação de implantação do Amazon S3.

**Criar um pipeline 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 **MyS3DeployPipeline**.

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 **Amazon S3**. Em **Bucket**, escolha o nome do bucket de origem. Na **chave de objeto do S3**, insira o nome do arquivo ZIP de origem. Certifique-se de incluir a extensão de arquivo .zip.

   Escolha **Próximo**.

1. Em **Etapa 4: adicionar estágio de compilação**:

   1. Em **Build provider (Provedor de compilação)**, escolha **CodeBuild**.

   1. Selecione **Create build project (Criar projeto de compilação)**. Na página **Create project (Criar projeto)**:

   1. Em **Nome do projeto**, insira um nome para esse projeto de compilação.

   1. Em **Environment (Ambiente)**, escolha **Managed image (Imagem gerenciada)**. Para **Operating system**, selecione **Ubuntu**.

   1. Em **Runtime (Tempo de execução)**, selecione **Standard (Padrão)**. **Para a **versão Runtime**, escolha:1.0aws/codebuild/standard.**

   1. Na **Image version (Versão da imagem)**, escolha **Always use the latest image for this runtime version (Sempre usar a imagem mais recente para esta versão de tempo de execução)**.

   1. Em **Função de serviço**, escolha sua função de CodeBuild serviço ou crie uma.

   1. Para **Build specifications (Especificações da compilação)**, escolha **Use a buildspec file (Usar um arquivo buildspec)**.

   1. Escolha **Continuar para CodePipeline**. Uma mensagem será exibida se o projeto foi criado com sucesso.

   1. Escolha **Próximo**.

1. Em **Etapa 5: Adicionar etapa de implantação**:

   1. Em **Deploy provider (Provedor de implantação)**, escolha **Amazon S3**. 

   1. Em **Bucket**, insira o nome do bucket de destino do S3.

   1. Certifique-se de que **Extract file before deploy (Extrair arquivo antes de implantar)** esteja desmarcada.

      Quando **Extract file before deploy (Extrair arquivo antes de implantar)** estiver desmarcado, a **S3 object key (chave de objeto do S3)** será exibida. Insira no nome do caminho que você deseja usar: `js-application/{datetime}.zip`.

      Isso cria uma pasta `js-application` no Amazon S3 para a qual os arquivos são extraídos. Nessa pasta, a variável `{datetime}` cria um timestamp em cada arquivo de saída quando o pipeline é executado.  
![\[A página Etapa 5: implantar de uma ação de implantação do Amazon S3 com uma origem do Amazon S3\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/tutorial-s3deploy-stage-s3source.png)

   1. (Opcional) Em **Canned ACL (ACL pré-configurada)**, você pode aplicar um conjunto de concessões predefinidas, conhecido como [ACL pré-configurada](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl), aos artefatos carregados. 

   1. (Opcional) Em **Cache control (Controle de cache)**, insira os parâmetros de armazenamento em cache. Você pode definir isso para controlar o comportamento do armazenamento em cache para solicitações/respostas. Para obter os valores válidos, consulte o campo de cabeçalho [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) para operações HTTP.

   1. Escolha **Próximo**.

1. Em **Etapa 6: Revisar**, revise as informações e, então selecione **Criar pipeline**.

1. Depois que o pipeline for executado com êxito, visualize o bucket no console do Amazon S3. Verifique se o arquivo ZIP implantado é exibido no seu bucket de destino na pasta `js-application`. O JavaScript arquivo contido no arquivo ZIP deve ser`index.js`. O arquivo `index.js` contém a seguinte saída:

   ```
   var HelloGreeting = /** @class */ (function () {
       function HelloGreeting() {
           this.message = "Hello!";
       }
       return HelloGreeting;
   }());
   function greet(greeting) {
       console.log(greeting.message);
   }
   var greeting = new HelloGreeting();
   greet(greeting);
   ```

### Etapa 3: Realizar uma alteração em qualquer arquivo de origem e verificar a implantação
<a name="tutorials-s3deploy-s3source-update"></a>

Faça uma alteração nos seus arquivos de origem e faça upload deles para o bucket de origem. Deste modo, a execução de seu pipeline é acionada. Visualize seu bucket de destino e verifique se os arquivos de saída implantados estão disponíveis na pasta `js-application`, conforme mostrado:

![\[Download do exemplo de ZIP\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/tutorial-s3deploy-pipeline-appzip.png)


# Tutorial: Crie um pipeline que publique seu aplicativo sem servidor no AWS Serverless Application Repository
<a name="tutorials-serverlessrepo-auto-publish"></a>

Você pode usar AWS CodePipeline para entregar continuamente seu aplicativo AWS SAM sem servidor ao. AWS Serverless Application Repository

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

Este tutorial mostra como criar e configurar um pipeline para criar seu aplicativo sem servidor hospedado GitHub e publicá-lo automaticamente. AWS Serverless Application Repository O pipeline é usado GitHub como provedor de origem e CodeBuild como provedor de compilação. Para publicar seu aplicativo sem servidor no AWS Serverless Application Repository, você implanta um [aplicativo](https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:077246666028:applications~aws-serverless-codepipeline-serverlessrepo-publish ) (do AWS Serverless Application Repository) e associa a função Lambda criada por esse aplicativo como um provedor de ação Invoke em seu pipeline. Em seguida, você pode fornecer continuamente atualizações de aplicativos para o AWS Serverless Application Repository, sem escrever nenhum código.

**Importante**  
Muitas das ações que você adiciona ao pipeline nesse procedimento envolvem AWS recursos que você precisa criar antes de criar o pipeline. AWS os recursos para suas ações de origem sempre devem ser criados na mesma AWS região em que você cria seu pipeline. Por exemplo, se você criar seu pipeline na região Leste dos EUA (Ohio), seu CodeCommit repositório deverá estar na região Leste dos EUA (Ohio).   
Você pode adicionar ações entre regiões ao criar seu pipeline. AWS os recursos para ações entre regiões devem estar na mesma AWS região em que você planeja executar a ação. Para obter mais informações, consulte [Adicionar uma ação entre regiões em CodePipeline](actions-create-cross-region.md).

## Antes de começar
<a name="tutorials-serverlessrepo-auto-publish-prereq"></a>

Neste tutorial, assumimos o seguinte. 
+ Você está familiarizado com o [AWS Serverless Application Model (AWS SAM)](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/) e o [AWS Serverless Application Repository](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/).
+ Você tem um aplicativo sem servidor hospedado no GitHub qual você publicou no AWS Serverless Application Repository usando a CLI AWS SAM . Para publicar um aplicativo de exemplo no AWS Serverless Application Repository, consulte [Início rápido: publicação de aplicativos](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/serverlessrepo-quick-start.html) no *Guia do AWS Serverless Application Repository desenvolvedor*. Para publicar seu próprio aplicativo no AWS Serverless Application Repository, consulte [Publicação de aplicativos usando a AWS SAM CLI no Guia](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template-publishing-applications.html) do *AWS Serverless Application Model desenvolvedor*.

## Etapa 1: Criar um arquivo buildspec.yml
<a name="serverlessrepo-auto-publish-create-buildspec"></a>

Crie um `buildspec.yml` arquivo com o conteúdo a seguir e adicione-o ao repositório do GitHub seu aplicativo sem servidor. *template.yml*Substitua pelo AWS SAM modelo do seu aplicativo e *bucketname* pelo bucket do S3 em que o aplicativo empacotado está armazenado.

```
version: 0.2
phases:
  install:
    runtime-versions:
        python: 3.8
  build:
    commands:
      - sam package --template-file template.yml --s3-bucket bucketname --output-template-file packaged-template.yml
artifacts:
  files:
    - packaged-template.yml
```

## Etapa 2: Criar e configurar o pipeline
<a name="serverlessrepo-auto-publish-create-pipeline"></a>

Siga estas etapas para criar seu pipeline no Região da AWS local em que você deseja publicar seu aplicativo sem servidor.

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

1. Se necessário, mude para o Região da AWS local em que você deseja publicar seu aplicativo sem servidor.

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. Selecione **Criar pipeline**. Em **Etapa 2: escolher a página de configurações do pipeline**, em **Nome do pipeline**, insira o nome do seu pipeline.

1. Em **Tipo de pipeline**, escolha **V2**. Para obter mais informações, consulte [Tipos de pipeline](pipeline-types.md). Escolha **Próximo**.

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. Na página **Etapa 3: Adicionar estágio de origem**, em **Provedor de origem**, escolha **GitHub**.

1. Em **Conexão**, escolha uma conexão existente ou crie uma nova. Para criar ou gerenciar uma conexão para sua ação GitHub de origem, consulte[GitHub conexões](connections-github.md).

1. Em **Repositório**, escolha seu repositório GitHub de origem.

1. Em **Filial**, escolha sua GitHub filial.

1. Deixe os padrões restantes para a ação de origem. Escolha **Próximo**.

1. Na página **Etapa 4: Adicionar etapa de compilação**, adicione um estágio de compilação:

   1. Em **Build provider (Provedor de compilação)**, escolha **AWS CodeBuild**. Em **Region (Região)**, use a região do pipeline.

   1. Escolha **Criar projeto**.

   1. Em **Nome do projeto**, insira um nome para esse projeto de compilação.

   1. Em **Environment image (Imagem do ambiente)**, escolha **Managed image (Imagem gerenciada)**. Para **Operating system**, selecione **Ubuntu**.

   1. Em **Runtime (Tempo de execução)** e **Runtime version (Versão do tempo de execução)**, escolha o tempo de execução e a versão necessários para o seu aplicativo sem servidor.

   1. Em **Service role (Função de serviço)**, selecione **New service role (Nova função de serviço)**.

   1. Para **Build specifications (Especificações da compilação)**, escolha **Use a buildspec file (Usar um arquivo buildspec)**.

   1. Escolha **Continuar para CodePipeline**. Isso abre o CodePipeline console e cria um CodeBuild projeto que usa o `buildspec.yml` em seu repositório para configuração. O projeto de criação usa um perfil de serviço para gerenciar permissões de AWS service (Serviço da AWS) . Essa etapa pode levar alguns minutos.

   1. 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 página **Etapa 6: Adicionar estágio de implantação**, escolha **Ignorar estágio de implantação** e, em seguida, aceite a mensagem de aviso escolhendo **Ignorar** novamente. Escolha **Próximo**.

1. Na **Etapa 7: Revisão**, escolha **Criar funil**. Você deve ver um diagrama que mostra os estágios.

1. Conceda à função CodeBuild de serviço permissão para acessar o bucket do S3 em que seu aplicativo empacotado está armazenado.

   1. No estágio **Build (Compilação)** de seu novo pipeline, escolha **CodeBuild**.

   1. Selecione a guia **Build details (Detalhes de compilação)**.

   1. Em **Ambiente**, escolha a função CodeBuild de serviço para abrir o console do IAM.

   1. Expanda a seleção para `CodeBuildBasePolicy` e escolha **Edit policy (Editar política)**.

   1. Escolha **JSON**.

   1. Adicione uma nova declaração de política com o seguinte conteúdo. A instrução permite CodeBuild colocar objetos no bucket do S3 onde seu aplicativo empacotado está armazenado. *bucketname*Substitua pelo nome do seu bucket do S3.

      ```
              {
                  "Effect": "Allow",
                  "Resource": [
                      "arn:aws:s3:::bucketname/*"
                  ],
                  "Action": [
                      "s3:PutObject"
                  ]
              }
      ```

   1. Selecione **Revisar política**.

   1. Escolha **Salvar alterações**.

## Etapa 3: Implantar o aplicativo de publicação
<a name="serverlessrepo-auto-publish-deploy-app"></a>

Siga estas etapas para implantar o aplicativo que contém a função do Lambda que realiza a publicação no AWS Serverless Application Repository. Este aplicativo é **aws-serverless-codepipeline-serverlessrepo-publish**.

**nota**  
Você deve implantar o aplicativo da Região da AWS mesma forma que seu pipeline.

1. Vá até a página do [aplicativo](https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:077246666028:applications~aws-serverless-codepipeline-serverlessrepo-publish ) e escolha **Deploy (Implantar)**.

1. Selecione **I acknowledge that this app creates custom IAM roles (Eu reconheço que este aplicativo cria funções personalizadas do IAM)**. 

1. Escolha **Implantar**.

1. Escolha **View CloudFormation Stack** para abrir o CloudFormation console.

1. Expanda a seção **Resources (Recursos)**. Veja **ServerlessRepoPublish**, o que é do tipo **AWS::Lambda::Function**. Anote o ID físico desse recurso para a próxima etapa. Esse ID físico será usado ao criar a nova ação de publicação no CodePipeline.

## Etapa 4: Criar a ação de publicação
<a name="serverlessrepo-auto-publish-create-action"></a>

Siga essas etapas para criar a ação de publicação em seu pipeline.

1. Abra o CodePipeline console em [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

1. Na seção de navegação à esquerda, escolha o pipeline que deseja editar.

1. Escolha **Editar**.

1. Após o último estágio do pipeline atual, escolha **\$1 Add stage (\$1 Adicionar estágio)**. Em **Stage name (Nome do estágio)** insira um nome, como **Publish**, e escolha **Add stage (Adicionar estágio)**.

1. No novo estágio, escolha **\$1 Add action group (\$1 Adicionar grupo de ação)**.

1. Insira um nome de ação. Em **Action provider (Provedor de ação)**, em **Invoke (Invocação)**, escolha **AWS Lambda**.

1. Em **Artefatos de entrada**, escolha **BuildArtifact**.

1. Em **Nome da função**, escolha o ID físico da função do Lambda anotado na etapa anterior.

1. Escolha **Save (Salvar)** para a ação.

1. Escolha **Done (Concluído)** para o estágio.

1. No canto superior direito, escolha **Save (Salvar)**.

1. Para verificar seu pipeline, faça uma alteração em seu aplicativo em GitHub. Por exemplo, altere a descrição do aplicativo na `Metadata` seção do seu arquivo de AWS SAM modelo. Confirme a alteração e envie-a para sua GitHub filial. Deste modo, a execução de seu pipeline é acionada. Quando o pipeline estiver concluído, verifique se o aplicativo foi atualizado com a alteração no [AWS Serverless Application Repository](https://console.aws.amazon.com/serverlessrepo/home).

# Tutorial: implantações da função Lambda com CodePipeline
<a name="tutorials-lambda-deploy"></a>

Este tutorial ajuda você a criar uma ação de implantação CodePipeline que implanta seu código na função que você configurou no Lambda. Você criará uma função do Lambda de amostra na qual vai criar um alias e uma versão, adicionar a função do Lambda compactada ao local de origem e executar a ação do Lambda no pipeline.

**nota**  
Como parte da criação de um pipeline no console, um bucket de artefatos S3 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**  
A ação de implantação `Lambda` está disponível somente para pipelines do tipo V2.

## Pré-requisitos
<a name="tutorials-lambda-deploy-prereqs"></a>

Para você usar este tutorial para criar seu pipeline de CD, alguns recursos precisam estar em operação. Veja aqui estão os itens que você precisa para começar:

**nota**  
Todos esses recursos devem ser criados na mesma AWS região.
+ Um repositório de controle de origem, como GitHub, ou um bucket S3 de origem (este tutorial usa o S3), onde você armazenará um `.zip` arquivo criado para sua função Lambda.
+ Você deve usar uma função CodePipeline de serviço existente que tenha sido atualizada com as permissões para essa ação. Para atualizar o perfil de serviço, consulte [Permissões de política do perfil de serviço para a ação de implantação do Lambda](action-reference-LambdaDeploy.md#action-reference-LambdaDeploy-permissions-action).

Assim que você atender a esses pré-requisitos, poderá continuar com o tutorial e criar seu pipeline de CD.

## Etapa 1: Criar a função do Lambda de amostra
<a name="tutorials-lambda-deploy-instances"></a>

Nesta etapa, você cria a função do Lambda na qual implantará.

**Como criar sua função do Lambda**

1. Acesse o console do Lambda e siga as etapas no tutorial a seguir para criar uma função do Lambda de amostra: link.

1. Na navegação superior, escolha **Criar** e selecione **Iniciar do zero** na parte superior da página.

1. Em **Nome**, insira **MyLambdaFunction**. 

1. Publique uma nova versão. Esta será a versão para a qual o alias direcionará.

   1. Selecione a função.

   1. Escolha o menu suspenso **Ações**.

   1. Escolha **Publicar nova versão**.

   1. (Opcional) Adicione à descrição em **Descrição**.

   1. Selecione **Publish**.

1. Crie um alias para a função, como `aliasV1`.

1. Verifique se o alias está direcionando para a versão que você recém criou (como 1).
**nota**  
Se escolher \$1LATEST, você não conseguirá usar os recursos de mudança de tráfego porque o Lambda não oferece suporte a \$1LATEST para um alias que direcione para mais de 1 versão.

## Etapa 2: Carregar o arquivo de função no repositório
<a name="tutorials-lambda-deploy-file"></a>

Baixe a função a e salve como um arquivo zip. Carregue o arquivo compactado no bucket do S3 usando as etapas a seguir.

**Para adicionar um arquivo `.zip` ao repositório de origem**

1. Abra o bucket do S3.

1. Escolha **Carregar**.

1. Carregue o arquivo zip que contém o arquivo `sample_lambda_source.zip` no bucket de origem.

   Anote o caminho.

   ```
   object key
   ```

## Etapa 3: Criação do pipeline
<a name="tutorials-lambda-deploy-pipeline"></a>

Use o CodePipeline assistente para criar seus estágios de funil e conectar seu repositório de origem.

**Para criar o pipeline**

1. Abra o CodePipeline console em [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

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 **MyPipeline**.

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 **Usar função de serviço existente** e, em seguida, escolha a função de CodePipeline serviço que foi atualizada com as permissões necessárias para essa ação. Para configurar sua função CodePipeline de serviço para essa ação, consulte[Permissões de política do perfil de serviço para a ação de implantação do Lambda](action-reference-LambdaDeploy.md#action-reference-LambdaDeploy-permissions-action).

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

1. Na página **Etapa 3: Adicionar etapa de origem**, adicione uma etapa de origem:

   1. Em **Source provider (Provedor de origem)**, selecione **Amazon S3**.

   1. Em **Chave de objeto**, adicione o nome do arquivo .zip, inclusive a extensão do arquivo, como `sample_lambda_source.zip`.

      

   Escolha **Próximo**.

1. Na página **Etapa 4: Adicionar etapa de compilação**, escolha **Ignorar**.

1. Na página **Etapa 5: Adicionar etapa de teste**, escolha **Ignorar**.

1. Na página **Etapa 6: Adicionar etapa de implantação**, escolha **Lambda**.  
![\[\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/lambdadeploy-edit-screen.png)

   1. Adicione o nome e o alias da função. 

   1. Escolha a estratégia de implantação.

   1. Escolha **Próximo**.

1. Na página **Etapa 7: Revisão**, revise a configuração do pipeline e escolha **Create pipeline** para criar o pipeline.  
![\[\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/lambdadeploy-pipeline-screen.png)

## Etapa 4: Testar o pipeline
<a name="tutorials-lambda-deploy-test"></a>

Seu pipeline deve ter tudo para executar uma implantação AWS contínua end-to-end nativa. Agora, teste a funcionalidade enviando uma alteração de código ao repositório de origem.

**Para testar o pipeline**

1. Faça uma alteração no código no repositório de origem configurado, confirme e envie a alteração.

1. Abra o CodePipeline console em [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

1. Escolha o pipeline na lista.

1. Observe a evolução do pipeline pelos respectivos estágios. O pipeline deve ser concluído, e a ação é implantada na função do Lambda.

## Saiba mais
<a name="tutorials-lambda-deploy-learn"></a>

A ação de implantação do Lambda permite dois métodos de implantação. Um método é a mudança de tráfego sozinho, sem um artefato de entrada da ação de origem. O outro método é atualizar o código da função usando um artefato de entrada da ação de origem e, em seguida, publicar uma nova versão com base no código atualizado. Para o segundo método, se o alias for fornecido, CodePipeline também fará a mudança de tráfego. Este tutorial da ação de implantação do Lambda demonstra como atualizar a função usando um artefato de origem.

Para saber mais sobre a ação, consulte a página de referência da ação em [Referência da ação de implantação do AWS Lambda](action-reference-LambdaDeploy.md).

# Tutorial: Usar variáveis com ações de invocação do Lambda
<a name="tutorials-lambda-variables"></a>

Uma ação de invocação do Lambda pode usar variáveis de outra ação como parte de sua entrada e retornar novas variáveis juntamente com sua saída. Para obter informações sobre variáveis para ações em CodePipeline, consulte[Referência de variáveis](reference-variables.md).

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

No final deste tutorial, você terá:
+ Uma ação de invocação do Lambda que:
  + Consome a `CommitId` variável de uma ação de CodeCommit origem
  + Produz três novas variáveis: `dateTime`, `testRunId` e `region`
+ Uma ação de aprovação manual que consome as novas variáveis da ação de invocação do Lambda para fornecer um URL de teste e um ID de execução de teste
+ Um pipeline atualizado com as novas ações

**Topics**
+ [Pré-requisitos](#lambda-variables-prereqs)
+ [Etapa 1: criar uma função do Lambda](#lambda-variables-function)
+ [Etapa 2: Adicionar uma ação de invocação do Lambda e uma ação de aprovação manual ao pipeline](#lambda-variables-pipeline)

## Pré-requisitos
<a name="lambda-variables-prereqs"></a>

Antes de começar, você deve ter o seguinte: 
+ Você pode criar ou usar o pipeline com a CodeCommit fonte em[Tutorial: criar um pipeline simples (CodeCommit repositório)](tutorials-simple-codecommit.md).
+ Edite seu pipeline existente para que a ação CodeCommit de origem tenha um namespace. Atribua o namespace `SourceVariables` à ação.

## Etapa 1: criar uma função do Lambda
<a name="lambda-variables-function"></a>

Use as etapas a seguir para criar uma função do Lambda e uma função de execução do Lambda. Adicione a ação do Lambda ao pipeline após criar a função do Lambda.

**Para criar uma função do Lambda e um perfil de execução**

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

1. Escolha a opção **Criar função**. Deixe **Author from scratch (Criar do zero)** selecionado.

1. Em **Function Name (Nome da função)**, insira o nome da função, como **myInvokeFunction**. Em **Runtime (Tempo de Execução)**, deixe a opção padrão marcada.

1. Expanda **Choose or create an execution role (Escolher ou criar uma função de execução)**. Escolha **Create a new role with basic Lambda permissions (Criar uma nova função com permissões básicas do Lambda)**.

1. Escolha a opção **Criar função**.

1. Para usar uma variável de outra ação, ela precisará ser passada para `UserParameters` na configuração de ação de invocação do Lambda. A ação em nosso pipeline será configurada mais adiante no tutorial, mas será adicionado o código assumindo que a variável será transmitida.

   Para produzir novas variáveis, defina uma propriedade chamada `outputVariables` na entrada como `putJobSuccessResult`. Não é possível produzir variáveis como parte de um `putJobFailureResult`.

   ```
    const putJobSuccess = async (message) => {
           const params = {
               jobId: jobId,
               outputVariables: {
                   testRunId: Math.floor(Math.random() * 1000).toString(),
                   dateTime: Date(Date.now()).toString(),
                   region: lambdaRegion
               }
           };
   ```

   Na nova função, na guia **Código**, cole o seguinte código de exemplo em `index.mjs`.

   ```
   import { CodePipeline } from '@aws-sdk/client-codepipeline';
   
   export const handler = async (event, context) => {
       const codepipeline = new CodePipeline({});
       
       // Retrieve the Job ID from the Lambda action
       const jobId = event["CodePipeline.job"].id;
       
       // Retrieve UserParameters
       const params = event["CodePipeline.job"].data.actionConfiguration.configuration.UserParameters;
       
       // The region from where the lambda function is being executed
       const lambdaRegion = process.env.AWS_REGION;
       
       // Notify CodePipeline of a successful job
       const putJobSuccess = async (message) => {
           const params = {
               jobId: jobId,
               outputVariables: {
                   testRunId: Math.floor(Math.random() * 1000).toString(),
                   dateTime: Date(Date.now()).toString(),
                   region: lambdaRegion
               }
           };
           
           try {
               await codepipeline.putJobSuccessResult(params);
               return message;
           } catch (err) {
               throw err;
           }
       };
       
       // Notify CodePipeline of a failed job
       const putJobFailure = async (message) => {
           const params = {
               jobId: jobId,
               failureDetails: {
                   message: JSON.stringify(message),
                   type: 'JobFailed',
                   externalExecutionId: context.invokeid
               }
           };
           
           try {
               await codepipeline.putJobFailureResult(params);
               throw message;
           } catch (err) {
               throw err;
           }
       };
       
       try {
           console.log("Testing commit - " + params);
           
           // Your tests here
           
           // Succeed the job
           return await putJobSuccess("Tests passed.");
       } catch (ex) {
           // If any of the assertions failed then fail the job
           return await putJobFailure(ex);
       }
   };
   ```

1. Permitir que a função salve automaticamente.

1. Copie o nome do recurso da Amazon (ARN) contido no campo **Função ARN** na parte superior da tela.

1. Como última etapa, abra o console AWS Identity and Access Management (IAM) em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/). Modifique a função de execução do Lambda para adicionar a seguinte política:. [AWSCodePipelineCustomActionAccess](https://console.aws.amazon.com/iam/home?region=us-west-2#/policies/arn%3Aaws%3Aiam%3A%3Aaws%3Apolicy%2FAWSCodePipelineCustomActionAccess) Para ver as etapas para criar uma função de execução do Lambda ou modificar a política de função, consulte [Etapa 2: Criar a função do Lambda](actions-invoke-lambda-function.md#actions-invoke-lambda-function-create-function). 

## Etapa 2: Adicionar uma ação de invocação do Lambda e uma ação de aprovação manual ao pipeline
<a name="lambda-variables-pipeline"></a>

Nesta etapa, você adiciona uma ação de invocação do Lambda ao pipeline. Você adiciona a ação como parte de um estágio chamado **Test (Teste)**. O tipo de ação é uma ação de chamada. Em seguida, você adiciona uma ação de aprovação manual após a ação de chamada.

**Para adicionar uma ação do Lambda e uma ação de aprovação manual ao pipeline**

1. Abra o CodePipeline console em [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

   Os nomes de todos os pipelines associados à sua AWS conta são exibidos. Escolha o pipeline onde deseja adicionar a ação.

1. Adicione uma ação de teste do Lambda ao pipeline.

   1. Para editar o pipeline, escolha **Edit (Editar)**. Adicione um estágio após a ação de origem no pipeline existente. Insira um nome para o estágio, como **Test**.

   1. No novo estágio, escolha **Adicionar grupo de ação** para adicionar uma ação. Em **Action Name (Nome da ação)**, insira o nome da ação de chamada, como **Test\$1Commit**.

   1. Em **Provedor de ação**, selecione **AWS Lambda**.

   1. Em **Input artifacts (Artefatos de entrada)**, escolha o nome do artefato de saída da ação de origem, como `SourceArtifact`.

   1. Em **FunctionName**, adicione o ARN da função Lambda que você criou.

   1. Em **Variable namespace (Namespace de variável)**, adicione o nome do namespace, como **TestVariables**.

   1. Em **Artefatos de saída**, adicione o nome do artefato de saída, como **LambdaArtifact**.

   1. Selecione **Concluído**.

1. Adicionar a ação de aprovação manual ao pipeline.

   1. Com o pipeline ainda no modo de edição, adicione um estágio após a ação de chamada. Insira um nome para o estágio, como **Approval**.

   1. No novo estágio, escolha o ícone para adicionar uma ação. Em **Action name (Nome da ação)**, insira o nome da ação de aprovação, como **Change\$1Approval**.

   1. Em **Action provider (Provedor de ação)**, escolha **Manual approval (Aprovação manual)**.

   1. No **URL for review (URL para revisão)**, construa o URL adicionando a sintaxe da variável para a variável `region` e a variável `CommitId`. Certifique-se de usar os namespaces atribuídos às ações que fornecem as variáveis de saída. 

      Neste exemplo, o URL com a sintaxe variável de uma CodeCommit ação tem o `SourceVariables` namespace padrão. A variável de saída da Região do Lambda tem o namespace `TestVariables`. O URL se parece ao seguinte:

      ```
      https://#{TestVariables.region}.console.aws.amazon.com/codesuite/codecommit/repositories/MyDemoRepo/commit/#{SourceVariables.CommitId}
      ```

      Em **Comments (Comentários)**, construa o texto da mensagem de aprovação adicionando a sintaxe da variável para a variável `testRunId`. Para este exemplo, o URL com a sintaxe variável para a variável de saída do Lambda `testRunId` tem o namespace `TestVariables`. Insira a mensagem a seguir.

      ```
      Make sure to review the code before approving this action. Test Run ID: #{TestVariables.testRunId}
      ```

1. Escolha **Done (Concluído)** para fechar a tela de edição da ação e **Done (Concluído)** para fechar a tela de edição para o estágio. Para salvar o pipeline, escolha **Done (Concluído)**. O pipeline concluído contém agora uma estrutura com estágios de origem, teste, aprovação e implantação.

   Escolha **Relase Change (Alteração de versão)**, para executar a alteração mais recente através da estrutura do pipeline.

1. Quando o pipeline atingir o estágio de aprovação manual, selecione **Review (Revisar)**. As variáveis resolvidas aparecem como o URL para o ID de confirmação. O aprovador pode escolher o URL para exibir a confirmação.

1. Depois que o pipeline for executado com êxito, você também poderá visualizar os valores das variáveis na página do histórico de execução da ação.

# Tutorial: use uma ação de AWS Step Functions invocação em um pipeline
<a name="tutorials-step-functions"></a>

Você pode usar AWS Step Functions para criar e configurar máquinas de estado. Este tutorial mostra como adicionar uma ação de invocação a um pipeline que ativa execuções de máquina de estado do pipeline. 

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

Neste tutorial, você executará as seguintes tarefas:
+ Crie uma máquina de estado padrão em AWS Step Functions.
+ Insira o JSON de entrada da máquina de estado diretamente. Você também pode fazer upload do arquivo de entrada de máquina de estado para um bucket do Amazon Simple Storage Service (Amazon S3).
+ Atualize o pipeline adicionando a ação da máquina de estado.

**Topics**
+ [Pré-requisito: criar ou escolher um pipeline simples](#tutorials-step-functions-prereq)
+ [Etapa 1: Criar a máquina de estado de exemplo](#tutorials-step-functions-sample)
+ [Etapa 2: Adicionar uma ação de invocação do Step Functions ao pipeline](#tutorials-step-functions-pipeline)

## Pré-requisito: criar ou escolher um pipeline simples
<a name="tutorials-step-functions-prereq"></a>

Neste tutorial, você adicionará uma ação de invocação a um pipeline existente. Você pode usar o pipeline criado em [Tutorial: Criar um pipeline simples (bucket do S3)](tutorials-simple-s3.md) ou [Tutorial: criar um pipeline simples (CodeCommit repositório)](tutorials-simple-codecommit.md).

Use um pipeline existente com uma ação de origem e pelo menos uma estrutura de duas etapas, mas não use artefatos de origem para este exemplo.

**nota**  
Talvez seja necessário atualizar a função de serviço usada pelo pipeline com permissões adicionais necessárias para executar essa ação. Para fazer isso, abra o console AWS Identity and Access Management (IAM), encontre a função e adicione as permissões à política da função. Para obter mais informações, consulte [Adicionar permissões à função CodePipeline de serviço](how-to-custom-role.md#how-to-update-role-new-services).

## Etapa 1: Criar a máquina de estado de exemplo
<a name="tutorials-step-functions-sample"></a>

No console do Step Functions, crie uma máquina de estado usando o modelo de exemplo `HelloWorld`. Para obter instruções, consulte [Criar uma máquina de estado](https://docs.aws.amazon.com/step-functions/latest/dg/getting-started.html#create-state-machine) no *Guia do desenvolvedor do AWS Step Functions *.

## Etapa 2: Adicionar uma ação de invocação do Step Functions ao pipeline
<a name="tutorials-step-functions-pipeline"></a>

Adicione uma ação de invocação do Step Functions ao pipeline da seguinte maneira:

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

   Os nomes de todos os pipelines associados à sua AWS conta são exibidos.

1. Em **Nome**, selecione o nome do pipeline que você deseja editar. Isso abrirá um visão detalhada do pipeline, incluindo o estado de cada uma das ações em cada estágio do pipeline.

1. Na página de detalhes do pipeline, selecione **Editar**.

1. Na segunda etapa do pipeline simples, escolha **Editar etapa**. Escolha **Excluir**. Isso exclui a segunda etapa agora que você não precisa mais dela.

1. Na parte inferior do diagrama, escolha **\$1 Add stage (\$1 Adicionar estágio)**.

1. Em **Nome da etapa**, insira um nome para a etapa, como **Invoke**, e escolha **Adicionar etapa**.

1. Escolha **\$1 Add action group (Adicionar grupo de ação)**.

1. Em **Nome da ação**, insira um nome, como **Invoke**.

1. Em **Provedor de ação**, selecione **AWS Step Functions**. Permita que **Region (Região)** seja definida para a região do pipeline.

1. Em **Artefatos de entrada**, selecione `SourceArtifact`.

1. No **ARN da máquina de estado**, escolha o Nome de recurso da Amazon (ARN) para a máquina de estado criada anteriormente.

1. (Opcional) Em **Prefixo de nome de execução**, insira um prefixo a ser adicionado ao ID de execução da máquina de estado.

1. Em **Tipo de entrada**, escolha **Literal**.

1. Em **Entrada**, insira o JSON de entrada que é esperado pela máquina de estado de exemplo `HelloWorld`.
**nota**  
A entrada para a execução da máquina de estado é diferente do termo usado CodePipeline para descrever artefatos de entrada para ações.

   Neste exemplo, insira o seguinte JSON:

   ```
   {"IsHelloWorldExample": true}
   ```

1. Selecione **Concluído**.

1. Na etapa que está sendo editada, escolha **Concluído**. No painel do AWS CodePipeline , escolha **Save (Salvar)** e selecione **Save (Salvar)** na mensagem de aviso.

1. Para enviar as alterações e iniciar uma execução de pipeline, selecione **Release change (Liberar alteração)** e **Release (Liberar)**.

1. No pipeline concluído, escolha **AWS Step Functions** na ação de invocação. No AWS Step Functions console, visualize seu ID de execução da máquina de estado. O ID mostra o nome da máquina de estado `HelloWorld` e o ID de execução da máquina de estado com o prefixo `my-prefix`.

   ```
   arn:aws:states:us-west-2:account-ID:execution:HelloWorld:my-prefix-0d9a0900-3609-4ebc-925e-83d9618fcca1
   ```

# Tutorial: Crie um pipeline que use AWS AppConfig como provedor de implantação
<a name="tutorials-AppConfig"></a>

Neste tutorial, você configura um pipeline que entrega continuamente arquivos de configuração usando AWS AppConfig como provedor de ação de implantação em seu estágio de implantação.

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

**Topics**
+ [Pré-requisitos](#tutorials-AppConfig-prereq)
+ [Etapa 1: Crie seus AWS AppConfig recursos](#tutorials-AppConfig-application)
+ [Etapa 2\$1: Fazer upload de arquivos para o bucket de origem do S3](#tutorials-AppConfig-bucket)
+ [Etapa 3: Criar o pipeline](#tutorials-AppConfig-pipeline)
+ [Etapa 4: Realizar uma alteração em qualquer arquivo de origem e verificar a implantação](#tutorials-AppConfig-verify)

## Pré-requisitos
<a name="tutorials-AppConfig-prereq"></a>

Antes de começar, é necessário concluir as seguintes etapas:
+ Este exemplo usa uma origem do S3 para o pipeline. Crie ou use um bucket do Amazon S3 com o versionamento habilitado. Você pode seguir as instruções em [Etapa 1: criar um bucket de origem do S3 para a aplicação](tutorials-simple-s3.md#s3-create-s3-bucket) para criar um bucket do S3.

## Etapa 1: Crie seus AWS AppConfig recursos
<a name="tutorials-AppConfig-application"></a>

Nesta seção, você criará os seguintes recursos:
+ Um *aplicativo* em AWS AppConfig é uma unidade lógica de código que fornece recursos para seus clientes.
+ Um *ambiente* em AWS AppConfig é um grupo lógico de AppConfig destinos de implantação, como aplicativos em um ambiente beta ou de produção.
+ Um *perfil de configuração* é um conjunto de configurações que influenciam o comportamento do aplicativo. O perfil de configuração AWS AppConfig permite acessar sua configuração em seu local armazenado.
+ (Opcional) Uma *estratégia de implantação* AWS AppConfig define o comportamento de uma implantação de configuração, como a porcentagem de clientes que devem receber a nova configuração implantada a qualquer momento durante a implantação.

**Como criar uma aplicação, um ambiente, um perfil de configuração e uma estratégia de implantação**

1. Faça login no Console de gerenciamento da AWS.

1. Use as etapas nos tópicos a seguir para criar seus recursos em AWS AppConfig.
   + [Criar um aplicativo](https://docs.aws.amazon.com/systems-manager/latest/userguide/appconfig-creating-application.html).
   + [Crie um ambiente](https://docs.aws.amazon.com/systems-manager/latest/userguide/appconfig-creating-environment.html).
   + [Crie um perfil AWS CodePipeline de configuração](https://docs.aws.amazon.com/systems-manager/latest/userguide/appconfig-creating-configuration-and-profile.html).
   + (Opcional) [Escolha uma estratégia de implantação predefinida ou crie sua própria](https://docs.aws.amazon.com/systems-manager/latest/userguide/appconfig-creating-deployment-strategy.html).

## Etapa 2\$1: Fazer upload de arquivos para o bucket de origem do S3
<a name="tutorials-AppConfig-bucket"></a>

Nesta seção, crie um ou mais arquivos de configuração. Em seguida, compacte e envie seus arquivos de origem para o bucket que o pipeline usa na etapa de origem.

**Para criar arquivos de configuração**

1. Crie um arquivo `configuration.json` para cada configuração em cada região. O conteúdo inclui o seguinte:

   ```
   Hello World!
   ```

1. Use as etapas a seguir para compactar e fazer upload dos arquivos de configuração.

**Para compactar e fazer upload de arquivos de origem**

1. Crie um arquivo .zip com os arquivos e nomeie-o como `configuration-files.zip`. Por exemplo, o arquivo .zip pode usar a seguinte estrutura:

   ```
   .
   └── appconfig-configurations
       └── MyConfigurations
           ├── us-east-1
           │   └── configuration.json
           └── us-west-2
               └── configuration.json
   ```

1. No console do Amazon S3 para o bucket, selecione **Carregar** e siga as instruções para fazer upload do arquivo .zip.

## Etapa 3: Criar o pipeline
<a name="tutorials-AppConfig-pipeline"></a>

Nesta seção, você criará um pipeline com as seguintes ações:
+ Uma etapa de origem com uma ação do Amazon S3 em que os artefatos de origem são os arquivos da sua configuração.
+ Um estágio de implantação com uma ação AppConfig de implantação.

**Criar um pipeline 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 **MyAppConfigPipeline**.

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 **Amazon S3**. Em **Bucket**, escolha o nome do bucket de origem do S3. 

   Em **chave de objeto do S3**, insira o nome do arquivo .zip: `configuration-files.zip`.

   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**, escolha **AWS AppConfig**. 

   1. Em **Aplicativo**, escolha o nome do aplicativo em que você criou AWS AppConfig. O campo mostra o ID do seu aplicativo.

   1. Em **Ambiente**, escolha o nome do ambiente em que você criou AWS AppConfig. O campo mostra o ID do ambiente.

   1. Em **Perfil de configuração**, escolha o nome do perfil de configuração que você criou AWS AppConfig. O campo mostra o ID do perfil de configuração.

   1. Em **Estratégia de implantação**, selecione o nome da estratégia de implantação. Isso pode ser uma estratégia de implantação que você criou AppConfig ou uma que você escolheu entre as estratégias de implantação predefinidas. AppConfig O campo mostra o ID da estratégia de implantação.

   1. Em **Caminho de configuração do artefato de entrada**, insira o caminho do arquivo. O caminho de configuração do artefato de entrada deve corresponder à estrutura de diretórios no arquivo .zip do bucket do S3. Neste exemplo, insira o seguinte caminho de arquivo: `appconfig-configurations/MyConfigurations/us-west-2/configuration.json`. 

   1. Escolha **Próximo**.

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

## Etapa 4: Realizar uma alteração em qualquer arquivo de origem e verificar a implantação
<a name="tutorials-AppConfig-verify"></a>

Faça uma alteração nos seus arquivos de origem e faça upload da alteração efetuada no bucket de origem. Deste modo, a execução de seu pipeline é acionada. Verifique se a configuração está disponível visualizando a versão.

# Tutorial: use o clone completo com uma fonte de GitHub pipeline
<a name="tutorials-github-gitclone"></a>

Você pode escolher a opção de clonagem completa para sua ação GitHub de origem em CodePipeline. Use essa opção para executar CodeBuild comandos para metadados do Git na ação de criação do pipeline.

**nota**  
A opção de clonagem completa descrita aqui se refere à especificação de se CodePipeline deve clonar os metadados do repositório, que só podem ser usados por comandos. CodeBuild Para usar um [token de acesso GitHub do usuário](https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app) para uso com CodeBuild projetos, siga as etapas aqui para instalar o AWS Conector para GitHub aplicativo e deixe o campo Instalação do aplicativo vazio. CodeConnections usará o token de acesso do usuário para a conexão.



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

Neste tutorial, você criará um pipeline que se conecta ao seu GitHub repositório, usa a opção de clonagem completa para os dados de origem e executa uma CodeBuild compilação que clona seu repositório e executa comandos Git para o repositório.

**nota**  
Esse recurso não está disponível nas regiões Ásia-Pacífico (Hong Kong), África (Cidade do Cabo), Oriente Médio (Bahrein), Europa (Zurique) ou AWS GovCloud (Oeste dos EUA). Para fazer referência a outras ações disponíveis, consulte [Integrações de produtos e serviços com CodePipeline](integrations.md). Para considerações sobre essa ação na região Europa (Milão), consulte a nota em [CodeStarSourceConnection para Bitbucket Cloud GitHub, GitHub Enterprise Server, GitLab .com e ações GitLab autogerenciadas](action-reference-CodestarConnectionSource.md).

**Topics**
+ [Pré-requisitos](#tutorials-github-gitclone-prereq)
+ [Etapa 1: Criar um arquivo README](#tutorials-github-gitclone-file)
+ [Etapa 2: Criar seu pipeline e criar o projeto](#tutorials-github-gitclone-pipeline)
+ [Etapa 3: atualizar a política CodeBuild de função de serviço para usar conexões](#tutorials-github-gitclone-rolepolicy)
+ [Etapa 4: Visualizar os comandos do repositório na saída da compilação](#tutorials-github-gitclone-view)

## Pré-requisitos
<a name="tutorials-github-gitclone-prereq"></a>

Antes de começar, é necessário fazer o seguinte:
+ Crie um GitHub repositório com sua GitHub conta.
+ Tenha suas GitHub credenciais prontas. Quando você usa o Console de gerenciamento da AWS para configurar uma conexão, você é solicitado a entrar com suas GitHub credenciais. 

## Etapa 1: Criar um arquivo README
<a name="tutorials-github-gitclone-file"></a>

Depois de criar seu GitHub repositório, use essas etapas para adicionar um arquivo README.

1. Faça login no seu GitHub repositório e escolha seu repositório.

1. Para criar um novo arquivo, escolha **Adicionar arquivo > Criar novo arquivo**. Forneça o nome ao arquivo `README.md`. e adicione o texto a seguir.

   ```
   This is a GitHub repository!
   ```

1. Escolha **Commit changes (Confirmar alterações)**.

   Certifique-se de que o arquivo `README.md` esteja no nível raiz do repositório.

## Etapa 2: Criar seu pipeline e criar o projeto
<a name="tutorials-github-gitclone-pipeline"></a>

Nesta seção, você criará um pipeline com as seguintes ações:
+ Um estágio de origem com uma conexão com seu GitHub repositório e ação.
+ Um estágio de construção com uma ação de AWS CodeBuild construção.

**Criar um pipeline com o assistente**

1. Faça login no CodePipeline console em [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

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 **MyGitHubPipeline**.

1. Em **Tipo de pipeline**, selecione **V1** para os fins deste tutorial. Também é possível selecionar **V2**; no entanto, observe que os tipos de pipeline diferem em características e preços. Para obter mais informações, consulte [Tipos de pipeline](pipeline-types.md).

1. Em **Service role (Função do serviço)**, selecione **New service role (Nova função de serviço)**.
**nota**  
Se você optar por usar sua função de CodePipeline serviço existente, certifique-se de ter adicionado a permissão do `codestar-connections:UseConnection` IAM à sua política de função de serviço. Para obter instruções sobre a função de CodePipeline serviço, consulte [Adicionar permissões à função CodePipeline de serviço](https://docs.aws.amazon.com/codepipeline/latest/userguide/security-iam.html#how-to-update-role-new-services).

1. Em **Configurações avançadas** mantenha os padrões. Em **Artifact store** (Armazenamento de artefatos), selecione **Default location** (Local padrão) para usar o armazenamento de artefatos padrão, como o bucket de artefatos do Amazon S3 designado como padrão, para o pipeline na região que você selecionou.
**nota**  
Este não é o bucket de origem para seu código-fonte. Este é o armazenamento de artefatos para o pipeline. Um armazenamento de artefatos separado, como um bucket do S3, é necessário para cada pipeline.

   Escolha **Próximo**.

1. Na página **Etapa 3: Adicionar etapa de origem**, adicione uma etapa de origem:

   1. Em **Provedor de origem**, escolha **GitHub (via GitHub aplicativo)**.

   1. Em **Conexão**, escolha uma conexão existente ou crie uma nova. Para criar ou gerenciar uma conexão para sua ação GitHub de origem, consulte[GitHub conexões](connections-github.md). 

      Você instala uma aplicação para todas as suas conexões com um provedor específico. Se você já instalou o GitHub aplicativo AWS Connector for, escolha-o e pule esta etapa.
**nota**  
Se você quiser criar um [token de acesso de usuário](https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app), verifique se já instalou o AWS Connector for GitHub app e deixe o campo de instalação do aplicativo vazio. CodeConnections usará o token de acesso do usuário para a conexão. Para obter mais informações, consulte [Acessar seu provedor de origem em CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/access-tokens.html).

   1. Em **Repository name (Nome do repositório)**, selecione o nome do seu repositório do GitHub.

   1. Em **Nome da ramificação**, selecione a ramificação do repositório que você deseja usar.

   1. Assegure-se de que a opção **Iniciar o pipeline na alteração do código-fonte** esteja selecionada.

   1. Em **Formato do artefato de saída**, selecione **Clone completo** para habilitar a opção de clone do Git para o repositório de origem. Somente as ações fornecidas pelo CodeBuild podem usar a opção de clonagem do Git. Você usará [Etapa 3: atualizar a política CodeBuild de função de serviço para usar conexões](#tutorials-github-gitclone-rolepolicy) neste tutorial para atualizar as permissões da sua função de serviço CodeBuild do projeto para usar essa opção.

   Escolha **Próximo**.

1. Em **Etapa 4: Adicionar etapa de compilação**, adicione um estágio de compilação:

   1. Em **Build provider (Provedor de compilação)**, escolha **AWS CodeBuild**. Permita que **Region (Região)** seja definida para a região do pipeline.

   1. Escolha **Criar projeto**.

   1. Em **Nome do projeto**, insira um nome para esse projeto de compilação.

   1. Em **Environment image (Imagem do ambiente)**, escolha **Managed image (Imagem gerenciada)**. Para **Operating system**, selecione **Ubuntu**.

   1. Em **Runtime (Tempo de execução)**, selecione **Standard (Padrão)**. **Para **Imagem**, escolha: 5.0aws/codebuild/standard.**

   1. Em **Service role (Função de serviço)**, selecione **New service role (Nova função de serviço)**.
**nota**  
Anote o nome da sua função CodeBuild de serviço. Você precisará do nome do perfil para a etapa final deste tutorial.

   1. Em **Buildspec**, para **Build specifications** (Especificações da compilação), escolha **Insert build commands** (Inserir comandos de compilação). Selecione **Alternar para o editor** e cole o seguinte em **Comandos de compilação**.
**nota**  
Na seção `env` da especificação de compilação, o assistente de credenciais para comandos do git deve estar habilitado conforme mostrado neste exemplo.

      ```
      version: 0.2
      
      env:
        git-credential-helper: yes
      phases:
        install:
          #If you use the Ubuntu standard image 2.0 or later, you must specify runtime-versions.
          #If you specify runtime-versions and use an image other than Ubuntu standard image 2.0, the build fails.
          runtime-versions:
            nodejs: 12
            # name: version
          #commands:
            # - command
            # - command
        pre_build:
          commands:
            - ls -lt
            - cat README.md
        build:
          commands:
            - git log | head -100
            - git status
            - ls
            - git archive --format=zip HEAD > application.zip
        #post_build:
          #commands:
            # - command
            # - command
      artifacts:
        files:
          - application.zip
          # - location
        #name: $(date +%Y-%m-%d)
        #discard-paths: yes
        #base-directory: location
      #cache:
        #paths:
          # - paths
      ```

   1. Escolha **Continuar para CodePipeline**. Isso retorna ao CodePipeline console e cria um CodeBuild projeto que usa seus comandos de construção para configuração. O projeto de compilação usa uma função de serviço para gerenciar AWS service (Serviço da AWS) permissões. Essa etapa pode levar alguns minutos.

   1. 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 página **Etapa 6: Adicionar estágio de implantação**, escolha **Ignorar estágio de implantação** e aceite a mensagem de aviso escolhendo **Ignorar** novamente. Escolha **Próximo**.

1. Na **Etapa 7: Revisão**, escolha **Criar funil**.

## Etapa 3: atualizar a política CodeBuild de função de serviço para usar conexões
<a name="tutorials-github-gitclone-rolepolicy"></a>

A execução inicial do pipeline falhará porque a função de CodeBuild serviço deve ser atualizada com permissões para usar conexões. Adicione a permissão do IAM `codestar-connections:UseConnection` à política de perfil de serviço. Para obter instruções sobre como atualizar a política no console do IAM, consulte [Adicione CodeBuild GitClone permissões para conexões com o Bitbucket GitHub, GitHub Enterprise Server ou .com GitLab](troubleshooting.md#codebuild-role-connections).

## Etapa 4: Visualizar os comandos do repositório na saída da compilação
<a name="tutorials-github-gitclone-view"></a>

1. Quando sua função de serviço for atualizada com êxito, escolha **Tentar novamente** no CodeBuild estágio de falha.

1. Depois que o pipeline for executado com êxito, no estágio de criação bem-sucedido, selecione **Visualizar detalhes**.

   Na página de detalhes, selecione a guia **Logs**. Veja a saída da CodeBuild compilação. Os comandos geram o valor da variável inserida.

   Os comandos geram o conteúdo do arquivo `README.md`, listam os arquivos no diretório, clonam o repositório, exibem o log e arquivam o repositório como um arquivo ZIP.

# Tutorial: use o clone completo com uma fonte de CodeCommit pipeline
<a name="tutorials-codecommit-gitclone"></a>

Você pode escolher a opção de clonagem completa para sua ação CodeCommit de origem em CodePipeline. Use essa opção para permitir o acesso CodeBuild aos metadados do Git na ação de criação do pipeline.

Neste tutorial, você cria um pipeline que acessa seu CodeCommit repositório, usa a opção de clonagem completa para dados de origem e executa uma CodeBuild compilação que clona seu repositório e executa comandos Git para o repositório.

**nota**  
CodeBuild as ações são as únicas ações downstream que suportam o uso de metadados do Git disponíveis com a opção Git clone. Além disso, embora seu funil possa conter ações entre contas, a CodeCommit ação e a CodeBuild ação devem estar na mesma conta para que a opção de clonagem completa seja bem-sucedida.

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

**Topics**
+ [Pré-requisitos](#tutorials-codecommit-gitclone-prereq)
+ [Etapa 1: Criar um arquivo README](#tutorials-codecommit-gitclone-file)
+ [Etapa 2: Criar seu pipeline e criar o projeto](#tutorials-codecommit-gitclone-pipeline)
+ [Etapa 3: atualizar a política CodeBuild de função de serviço para clonar o repositório](#tutorials-codecommit-gitclone-rolepolicy)
+ [Etapa 4: Visualizar os comandos do repositório na saída da compilação](#tutorials-codecommit-gitclone-view)

## Pré-requisitos
<a name="tutorials-codecommit-gitclone-prereq"></a>

Antes de começar, você deve criar um CodeCommit repositório na mesma AWS conta e região do seu funil.

## Etapa 1: Criar um arquivo README
<a name="tutorials-codecommit-gitclone-file"></a>

Use estas etapas para adicionar um arquivo README ao repositório de origem. O arquivo README fornece um exemplo de arquivo fonte para leitura da ação CodeBuild downstream.

**Para adicionar um arquivo README**

1. Faça login no seu repositório e escolha seu repositório.

1. Para criar um arquivo, selecione **Adicionar arquivo > Criar arquivo**. Forneça o nome ao arquivo `README.md`. e adicione o texto a seguir.

   ```
   This is a CodeCommit repository!
   ```

1. Escolha **Commit changes (Confirmar alterações)**.

   Certifique-se de que o arquivo `README.md` esteja no nível raiz do repositório.

## Etapa 2: Criar seu pipeline e criar o projeto
<a name="tutorials-codecommit-gitclone-pipeline"></a>

Nesta seção, você criará um pipeline com as seguintes ações:
+ Um estágio de origem com uma ação CodeCommit de origem.
+ Um estágio de construção com uma ação de AWS CodeBuild construção.

**Criar um pipeline com o assistente**

1. Faça login no CodePipeline console em [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

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 **MyCodeCommitPipeline**.

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 **Perfil de serviço**, faça um dos seguintes procedimentos:
   + Escolha **Existing service role (Função de serviço existente)**.
   + Escolha sua função CodePipeline de serviço existente. Esse perfil deve ter a permissão do IAM `codecommit:GetRepository` para a política de perfil de serviço. Consulte [Adicionar permissões à função CodePipeline de serviço](https://docs.aws.amazon.com/codepipeline/latest/userguide/security-iam.html#how-to-update-role-new-services).

1. Em **Configurações avançadas** mantenha os padrões. Escolha **Próximo**.

1. Na página **Etapa 3: Adicionar etapa de origem**, faça o seguinte:

   1. Em **Source provider (Provedor de código-fonte)**, selecione **CodeCommit**.

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

   1. Em **Nome da ramificação**, selecione o nome da ramificação.

   1. Assegure-se de que a opção **Iniciar o pipeline na alteração do código-fonte** esteja selecionada.

   1. Em **Formato do artefato de saída**, selecione **Clone completo** para habilitar a opção de clone do Git para o repositório de origem. Somente as ações fornecidas pelo CodeBuild podem usar a opção de clonagem do Git. 

   Escolha **Próximo**.

1. Em **Etapa 4: Adicionar etapa de compilação**, faça o seguinte:

   1. Em **Build provider (Provedor de compilação)**, escolha **AWS CodeBuild**. Permita que **Region (Região)** seja definida para a região do pipeline.

   1. Escolha **Criar projeto**.

   1. Em **Nome do projeto**, insira um nome para esse projeto de compilação.

   1. Em **Environment image (Imagem do ambiente)**, escolha **Managed image (Imagem gerenciada)**. Para **Operating system**, selecione **Ubuntu**.

   1. Em **Runtime (Tempo de execução)**, selecione **Standard (Padrão)**. **Para **Imagem**, escolha: 5.0aws/codebuild/standard.**

   1. Em **Service role (Função de serviço)**, selecione **New service role (Nova função de serviço)**.
**nota**  
Anote o nome da sua função CodeBuild de serviço. Você precisará do nome do perfil para a etapa final deste tutorial.

   1. Em **Buildspec**, para **Build specifications** (Especificações da compilação), escolha **Insert build commands** (Inserir comandos de compilação). Selecione **Alternar para editor** e cole o seguinte em **Comandos de compilação**:

      ```
      version: 0.2
      
      env:
        git-credential-helper: yes
      phases:
        install:
          #If you use the Ubuntu standard image 2.0 or later, you must specify runtime-versions.
          #If you specify runtime-versions and use an image other than Ubuntu standard image 2.0, the build fails.
          runtime-versions:
            nodejs: 12
            # name: version
          #commands:
            # - command
            # - command
        pre_build:
          commands:
            - ls -lt
            - cat README.md
        build:
          commands:
            - git log | head -100
            - git status
            - ls
            - git describe --all
        #post_build:
          #commands:
            # - command
            # - command
      #artifacts:
        #files:
          # - location
        #name: $(date +%Y-%m-%d)
        #discard-paths: yes
        #base-directory: location
      #cache:
        #paths:
          # - paths
      ```

   1. Escolha **Continuar para CodePipeline**. Isso leva você de volta ao CodePipeline console e cria um CodeBuild projeto que usa seus comandos de compilação para configuração. O projeto de criação usa um perfil de serviço para gerenciar permissões de AWS service (Serviço da AWS) . Essa etapa pode levar alguns minutos.

   1. 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 página **Etapa 6: Adicionar estágio de implantação**, escolha **Ignorar estágio de implantação** e, em seguida, aceite a mensagem de aviso escolhendo **Ignorar** novamente. Escolha **Próximo**.

1. Na **Etapa 7: Revisão**, escolha **Criar funil**.

## Etapa 3: atualizar a política CodeBuild de função de serviço para clonar o repositório
<a name="tutorials-codecommit-gitclone-rolepolicy"></a>

A execução inicial do pipeline falhará porque você precisará atualizar a função CodeBuild de serviço com permissões para extrair do seu repositório.

Adicione a permissão do IAM `codecommit:GitPull` à política de perfil de serviço. Para obter instruções sobre como atualizar a política no console do IAM, consulte [Adicionar CodeBuild GitClone permissões para ações CodeCommit de origem](troubleshooting.md#codebuild-role-codecommitclone).

## Etapa 4: Visualizar os comandos do repositório na saída da compilação
<a name="tutorials-codecommit-gitclone-view"></a>

**Para visualizar a saída da compilação**

1. Quando sua função de serviço for atualizada com êxito, escolha **Tentar novamente** no CodeBuild estágio de falha.

1. Depois que o pipeline for executado com êxito, no estágio de criação bem-sucedido, selecione **Visualizar detalhes**.

   Na página de detalhes, selecione a guia **Logs**. Veja a saída da CodeBuild compilação. Os comandos geram o valor da variável inserida.

   Os comandos geram o conteúdo do arquivo `README.md`, listam os arquivos no diretório, clonam o repositório, visualizam o log e executam `git describe --all`. 

# Tutorial: criar um pipeline com ações AWS CloudFormation StackSets de implantação
<a name="tutorials-stackset-deployment"></a>

Neste tutorial, você usa o AWS CodePipeline console para criar um pipeline com ações de implantação para criar um conjunto de pilhas e criar instâncias de pilha. Quando o pipeline é executado, o modelo cria um conjunto de pilhas e também cria e atualiza as instâncias em que o conjunto de pilhas é implantado.

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

Há duas maneiras de gerenciar permissões para um conjunto de pilhas: funções do IAM autogerenciadas e AWS gerenciadas. Este tutorial fornece exemplos de permissões autogerenciadas.

Para usar o Stacksets com mais eficiência CodePipeline, você deve ter uma compreensão clara dos conceitos por trás CloudFormation StackSets e de como eles funcionam. Veja [StackSets os conceitos](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html) no *Guia AWS CloudFormation do usuário*.

**Topics**
+ [Pré-requisitos](#tutorials-stackset-deployment-prereq)
+ [Etapa 1: Carregar o AWS CloudFormation modelo de amostra e o arquivo de parâmetros](#tutorials-stackset-deployment-upload)
+ [Etapa 2: Criar o pipeline](#tutorials-stackset-action-pipeline)
+ [Etapa 3: Visualizar a implantação inicial](#tutorials-stackset-action-initial)
+ [Etapa 4: adicionar uma CloudFormationStackInstances ação](#tutorials-stacksets-instances)
+ [Etapa 5: Visualizar os recursos do conjunto de pilhas para a implantação](#tutorials-stacksets-view)
+ [Etapa 6: Fazer uma atualização no conjunto de pilhas](#tutorials-stacksets-update)

## Pré-requisitos
<a name="tutorials-stackset-deployment-prereq"></a>

Para operações de conjunto de pilhas, você vai usar duas contas diferentes: uma conta de administração e uma conta de destino. Você vai criar conjuntos de pilhas na conta de administrador. Na conta de destino, vai criar pilhas individuais pertencentes a um conjunto de pilhas.

**Como criar um perfil de administrador com a conta de administrador**
+ Siga as instruções em [Definir permissões básicas para operações de conjuntos de pilhas](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs-self-managed.html#stacksets-prereqs-accountsetup). O perfil deve ser nomeado **`AWSCloudFormationStackSetAdministrationRole`**.

**Como criar um perfil de serviço na conta de destino**
+ Crie um perfil de serviço na conta de destino que confie na conta do administrador. Siga as instruções em [Definir permissões básicas para operações de conjuntos de pilhas](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs-self-managed.html#stacksets-prereqs-accountsetup). O perfil deve ser nomeado **`AWSCloudFormationStackSetExecutionRole`**. 

## Etapa 1: Carregar o AWS CloudFormation modelo de amostra e o arquivo de parâmetros
<a name="tutorials-stackset-deployment-upload"></a>

Crie um bucket de origem para os arquivos de parâmetros e modelos de conjunto de pilhas. Faça o download do arquivo AWS CloudFormation de modelo de amostra, configure um arquivo de parâmetros e, em seguida, compacte os arquivos antes de fazer o upload para o bucket de origem do S3.

**nota**  
Compacte os arquivos de origem antes de fazer upload para o bucket de origem do S3, mesmo que o único arquivo de origem seja o modelo.



**Como criar um bucket de origem do S3**

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

1. Selecione **Criar bucket**.

1. Em **Nome do bucket**, insira um nome para o bucket.

   Em **Região**, selecione a região onde você deseja criar o pipeline. Selecione **Criar bucket**.

1. Depois que o bucket é criado, um banner de sucesso é exibido. Escolha **Go to bucket details (Ir para detalhes do bucket)**.

1. Na guia **Properties (Propriedades)** escolha **Versioning (Versionamento)**. Escolha **Enable versioning (Ativar versionamento)** e escolha **Save (Salvar)**.

**Para criar o arquivo AWS CloudFormation de modelo**

1. Baixe o seguinte arquivo de modelo de amostra para gerar a CloudTrail configuração para conjuntos de pilhas:[https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/EnableAWSCloudtrail.yml](https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/EnableAWSCloudtrail.yml).

1. Salve o arquivo como `template.yml`.

**Como criar o arquivo parameters.txt**

1. Crie um arquivo com os parâmetros para a implantação. Os parâmetros são valores que você deseja atualizar na pilha em runtime. O arquivo de exemplo a seguir atualiza os parâmetros do modelo do conjunto de pilhas para permitir a validação do registro em log e eventos globais.

   ```
   [
     {
       "ParameterKey": "EnableLogFileValidation",
       "ParameterValue": "true"
     }, 
     {
       "ParameterKey": "IncludeGlobalEvents",
       "ParameterValue": "true"
     }
   ]
   ```

1. Salve o arquivo como `parameters.txt`.

**Como criar o arquivo accounts.txt**

1. Crie um arquivo com as contas nas quais você deseja criar instâncias, conforme mostrado no arquivo de exemplo a seguir.

   ```
   [
       "111111222222","333333444444"
   ]
   ```

1. Salve o arquivo como `accounts.txt`.

**Como criar e fazer upload de arquivos de origem**

1. Combine os arquivos em um único arquivo ZIP. Os arquivos devem ter a aparência a seguir no arquivo ZIP.

   ```
   template.yml
   parameters.txt
   accounts.txt
   ```

1. Faça upload do arquivo ZIP no bucket do S3. Esse arquivo é o artefato de origem criado pelo assistente **Create Pipeline** para sua ação de implantação em CodePipeline.

## Etapa 2: Criar o pipeline
<a name="tutorials-stackset-action-pipeline"></a>

Nesta seção, você criará um pipeline com as seguintes ações:
+ Estágio de origem com uma ação de origem do S3 em que o artefato de origem é o arquivo de modelo e todos os arquivos de origem de apoio.
+ Um estágio de implantação com uma ação de implantação do conjunto de CloudFormation pilhas que cria o conjunto de pilhas.
+ Um estágio de implantação com uma ação de implantação de instâncias de CloudFormation pilha que cria as pilhas e instâncias nas contas de destino.

**Para criar um pipeline com uma CloudFormationStackSet ação**

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 **MyStackSetsPipeline**.

1. Em **Tipo de pipeline**, selecione **V1** para os fins deste tutorial. Também é possível selecionar **V2**; no entanto, observe que os tipos de pipeline diferem em características e preços. Para obter mais informações, consulte [Tipos de pipeline](pipeline-types.md).

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. No **Armazenamento de artefatos**, deixe os padrões.
**nota**  
Este não é o bucket de origem para seu código-fonte. Este é o armazenamento de artefatos para o pipeline. Um armazenamento de artefatos separado, como um bucket do S3, é necessário para cada pipeline. Ao criar ou editar um pipeline, você deve ter um bucket de artefatos na região do pipeline e um bucket de artefatos por AWS região em que você está executando uma ação.  
Para obter mais informações, consulte [Artefatos de entrada e saída](welcome-introducing-artifacts.md) e [CodePipeline referência de estrutura de tubulação](reference-pipeline-structure.md).

   Escolha **Próximo**.

1. Na página **Etapa 3: Adicionar etapa de origem**, em **Provedor de origem**, escolha **Amazon S3**.

1. Em **Bucket**, insira o bucket de origem do S3 que você criou para este tutorial, como `BucketName`. Em **Chave de objeto do S3**, insira o caminho e o nome do arquivo ZIP, como `MyFiles.zip`.

1. 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. No **Provedor de implantação**, selecione **Conjunto de pilhas do AWS CloudFormation **.

   1. Em **Nome do conjunto de pilhas**, insira um nome para o conjunto de pilhas. Esse é o nome do conjunto de pilhas que será criado pelo modelo.
**nota**  
Anote o nome do conjunto de pilhas. Você o usará ao adicionar a segunda ação StackSets de implantação ao seu pipeline.

   1. Em **Caminho do modelo**, insira o nome do artefato e o caminho do arquivo onde você fez upload do arquivo de modelo. Por exemplo, insira o comando a seguir usando o nome `SourceArtifact` do artefato de origem padrão.

      ```
      SourceArtifact::template.yml
      ```

   1. Em **Destinos de implantação**, insira o nome do artefato e o caminho do arquivo onde você fez upload do arquivo da conta. Por exemplo, insira o comando a seguir usando o nome `SourceArtifact` do artefato de origem padrão.

      ```
      SourceArtifact::accounts.txt
      ```

   1. Em **Destino de implantação Regiões da AWS**, insira uma região para implantação de sua instância de pilha inicial, como`us-east-1`.

   1. Expanda **Opções de implantação**. Em **Parâmetros**, insira o nome do artefato e o caminho do arquivo onde você fez upload do arquivo de parâmetros. Por exemplo, insira o comando a seguir usando o nome `SourceArtifact` do artefato de origem padrão.

      ```
      SourceArtifact::parameters.txt
      ```

      Para inserir os parâmetros como uma entrada literal em vez de um caminho de arquivo, digite o seguinte:

      ```
      ParameterKey=EnableLogFileValidation,ParameterValue=true
      ParameterKey=IncludeGlobalEvents,ParameterValue=true
      ```

   1. Em **Recursos**, escolha CAPABILITY\$1IAM e CAPABILITY\$1NAMED\$1IAM.

   1. Em **Modelo de permissão**, selecione SELF\$1MANAGED.

   1. Em **Porcentagem de tolerância a falhas**, insira `20`.

   1. Em **Porcentagem máxima simultânea**, insira `25`.

   1. Escolha **Próximo**.

   1. Em **Etapa 7: Revisar**, escolha **Criar pipeline**. O pipeline é exibido. 

   1. Deixe que o pipeline seja executado. 

## Etapa 3: Visualizar a implantação inicial
<a name="tutorials-stackset-action-initial"></a>

Visualize os recursos e o status da implantação inicial. Depois de verificar se a implantação criou com êxito o conjunto de pilhas, é possível adicionar a segunda ação ao estágio de **implantação**.

**Como visualizar os recursos**

1. Abra o CodePipeline console em [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

1. Em **Pipelines**, selecione o pipeline e clique em **View (Visualizar)**. O diagrama mostra os estágios de implantação e a origem do pipeline.

1. Escolha a CloudFormation ação da **CloudFormationStackSet**ação em seu funil. O modelo, os recursos e os eventos do seu conjunto de pilhas são mostrados no CloudFormation console.

1. No painel de navegação esquerdo, escolha **StackSets**. Na lista, selecione o novo conjunto de pilhas.

1. Escolha a guia **Instâncias de pilha**. Verifique se foi criada uma instância da pilha para cada conta fornecida na região us-east-1. Verifique se o status de cada instância da pilha é `CURRENT`.

## Etapa 4: adicionar uma CloudFormationStackInstances ação
<a name="tutorials-stacksets-instances"></a>

Crie uma próxima ação em seu pipeline que permitirá CloudFormation StackSets criar as instâncias restantes do stack.

**Como criar uma próxima ação no pipeline**

1. Abra o CodePipeline console em [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

   Em **Pipelines**, selecione o pipeline e clique em **View (Visualizar)**. O diagrama mostra os estágios de implantação e a origem do pipeline.

1. Escolha editar o pipeline. O pipeline é exibido no modo de **edição**. 

1. No estágio de **implantação**, selecione **Editar**.

1. Na ação de implantação do **Conjunto de pilhas do AWS CloudFormation **, selecione **Adicionar grupo de ações**.

1. Na página **Editar ação**, adicione os detalhes da ação:

   1. Em **Nome da ação**, insira um nome para a ação.

   1. Em **Provedor de ação**, selecione **Instâncias de pilhas do AWS CloudFormation **.

   1. Em **Artefatos de entrada**, escolha **SourceArtifact**.

   1. Em **Nome do conjunto de pilhas**, insira o nome do conjunto de pilhas. Esse é o nome do conjunto de pilhas que você forneceu na primeira ação.

   1. Em **Destinos de implantação**, insira o nome do artefato e o caminho do arquivo onde você fez upload do arquivo da conta. Por exemplo, insira o comando a seguir usando o nome `SourceArtifact` do artefato de origem padrão.

      ```
      SourceArtifact::accounts.txt
      ```

   1. Em **Destino de implantação Regiões da AWS**, insira as regiões para implantação de suas instâncias de pilha restantes, da `eu-central-1` seguinte forma: `us-east-2`

      ```
      us-east2, eu-central-1
      ```

   1. Em **Porcentagem de tolerância a falhas**, insira `20`.

   1. Em **Porcentagem máxima simultânea**, insira `25`.

   1. Escolha **Salvar**.

   1. Lance manualmente uma alteração. O pipeline atualizado é exibido com duas ações no estágio de implantação.

## Etapa 5: Visualizar os recursos do conjunto de pilhas para a implantação
<a name="tutorials-stacksets-view"></a>

É possível visualizar os recursos e o status da implantação do conjunto de pilhas.

**Como visualizar os recursos**

1. Abra o CodePipeline console em [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

1. Em **Pipelines**, selecione o pipeline e, depois, **Visualizar**. O diagrama mostra os estágios de implantação e a origem do pipeline.

1. Escolha a CloudFormation ação da **`AWS CloudFormation Stack Instances`**ação em seu funil. O modelo, os recursos e os eventos do seu conjunto de pilhas são mostrados no CloudFormation console.

1. No painel de navegação esquerdo, escolha **StackSets**. Na lista, selecione o conjunto de pilhas.

1. Escolha a guia **Instâncias de pilha**. Verifique se todas as instâncias de pilha restantes de cada conta que você forneceu foram criadas ou atualizadas nas regiões esperadas. Verifique se o status de cada instância da pilha é `CURRENT`.

## Etapa 6: Fazer uma atualização no conjunto de pilhas
<a name="tutorials-stacksets-update"></a>

Faça uma atualização no conjunto de pilhas e implante a atualização nas instâncias. Neste exemplo, você também vai fazer uma alteração nos destinos de implantação que deseja designar para atualização. As instâncias que não fazem parte da atualização passam para um status desatualizado.

1. Abra o CodePipeline console em [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

1. Em **Pipelines**, selecione o pipeline e, em seguida, escolha **Visualizar**. No estágio de **implantação**, selecione **Editar**.

1. Opte por editar a ação **Conjunto de pilhas do AWS CloudFormation ** no pipeline. Em **Descrição**, substitua a descrição existente do conjunto de pilhas.

1. Opte por editar a ação **Instâncias de pilha do AWS CloudFormation ** no pipeline. Em **Destino de implantação Regiões da AWS**, exclua o `us-east-2` valor que foi inserido quando a ação foi criada.

1. Salve as alterações. Selecione **Lançar alteração** para executar o pipeline.

1. Abra a ação no CloudFormation. Escolha a guia de **StackSet informações**. Na **StackSet descrição**, verifique se a nova descrição é exibida.

1. Escolha a guia **Instâncias de pilha**. Em **Status**, verifique se o status das instâncias de pilhas em us-east-2 é `OUTDATED`.

# Tutorial: criar uma regra de verificação de variável para um pipeline como uma condição de entrada
<a name="tutorials-varcheckrule"></a>

Neste tutorial, você configura um pipeline que entrega arquivos continuamente usando GitHub como provedor de ação de origem em seu estágio de origem. O pipeline concluído detecta alterações quando você faz uma alteração nos arquivos de origem em seu repositório de origem. O pipeline é executado e, em seguida, verifica as variáveis ​​de saída em relação ao nome do repositório de origem e ao nome da ramificação fornecida na condição para entrada no estágio de compilação.

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

**Importante**  
Muitas das ações que você adiciona ao pipeline nesse procedimento envolvem AWS recursos que você precisa criar antes de criar o pipeline. AWS os recursos para suas ações de origem sempre devem ser criados na mesma AWS região em que você cria seu pipeline. Por exemplo, se você criar seu pipeline na região Leste dos EUA (Ohio), seu CodeCommit repositório deverá estar na região Leste dos EUA (Ohio).   
Você pode adicionar ações entre regiões ao criar seu pipeline. AWS os recursos para ações entre regiões devem estar na mesma AWS região em que você planeja executar a ação. Para obter mais informações, consulte [Adicionar uma ação entre regiões em CodePipeline](actions-create-cross-region.md).

Este exemplo usa o pipeline de exemplo com uma ação de origem GitHub (versão 2) e uma ação de CodeBuild construção em que a condição de entrada para o estágio de construção verificará as variáveis.

## Pré-requisitos
<a name="tutorials-varcheckrule-prereq"></a>

Antes de começar, é necessário fazer o seguinte:
+ Crie um GitHub repositório com sua GitHub conta.
+ Tenha suas GitHub credenciais prontas. Quando você usa o Console de gerenciamento da AWS para configurar uma conexão, você é solicitado a entrar com suas GitHub credenciais. 
+ Uma conexão com seu repositório para configurar GitHub (via GitHub aplicativo) como a ação de origem do seu pipeline. Para criar uma conexão com seu GitHub repositório, consulte[GitHub conexões](connections-github.md).

## Etapa 1: criar um arquivo de origem de amostra e adicioná-lo ao seu GitHub repositório
<a name="tutorials-varcheckrule-push"></a>

Nesta seção, você cria e adiciona seu arquivo de origem de exemplo ao repositório que o pipeline usa para o estágio de origem. Neste exemplo, você produz e adiciona o seguinte: 
+ Um arquivo `README.md`.

Depois de criar seu GitHub repositório, use essas etapas para adicionar seu arquivo README.

1. Faça login no seu GitHub repositório e escolha seu repositório.

1. Para criar um arquivo, escolha **Adicionar arquivo** e, em seguida, escolha **Criar novo arquivo**. Dê um nome ao arquivo `README.md` e adicione o seguinte texto.

   ```
   This is a GitHub repository!
   ```

1. Escolha **Commit changes (Confirmar alterações)**. Para os propósitos deste tutorial, adicione uma mensagem de confirmação que contenha a palavra “Update” em maiúsculas, como no exemplo a seguir:

   ```
   Update to source files
   ```
**nota**  
A verificação de regras para strings diferencia maiúsculas de minúsculas.

   Certifique-se de que o arquivo `README.md` esteja no nível raiz do repositório.

## Etapa 2: Criar o pipeline
<a name="tutorials-varcheckrule-create-pipeline"></a>

Nesta seção, você criará um pipeline com as seguintes ações:
+ Um estágio de origem com uma conexão com seu GitHub repositório e ação.
+ Um estágio de CodeBuild construção em que o estágio tem uma condição On Entry configurada para a regra de verificação de variáveis.

**Criar um pipeline com o assistente**

1. Faça login no CodePipeline console em [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

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 **MyVarCheckPipeline**.

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 **Service role (Função do serviço)**, selecione **New service role (Nova função de serviço)**.
**nota**  
Se você optar por usar sua função de CodePipeline serviço existente, certifique-se de ter adicionado a permissão do `codeconnections:UseConnection` IAM à sua política de função de serviço. Para obter instruções sobre a função de CodePipeline serviço, consulte [Adicionar permissões à função CodePipeline de serviço](https://docs.aws.amazon.com/codepipeline/latest/userguide/security-iam.html#how-to-update-role-new-services).

1. Em **Configurações avançadas** mantenha os padrões.

   Escolha **Próximo**.

1. Na página **Etapa 3: Adicionar etapa de origem**, adicione uma etapa de origem:

   1. Em **Provedor de origem**, escolha **GitHub(via GitHub aplicativo)**.

   1. Em **Conexão**, escolha uma conexão existente ou crie uma nova. Para criar ou gerenciar uma conexão para sua ação GitHub de origem, consulte[GitHub conexões](connections-github.md).

   1. Em **Repository name (Nome do repositório)**, selecione o nome do seu repositório do GitHub .

   1. Em **Nome da ramificação**, selecione a ramificação do repositório que você deseja usar.

   1. Verifique se a opção **Sem gatilho** está selecionada.

   Escolha **Próximo**.

1. Em **Etapa 4: Adicionar etapa de compilação**, adicione um estágio de compilação:

   1. Em **Build provider (Provedor de compilação)**, escolha **AWS CodeBuild**. Permita que **Region (Região)** seja definida para a região do pipeline.

   1. Escolha **Criar projeto**.

   1. Em **Nome do projeto**, insira um nome para esse projeto de compilação.

   1. Em **Environment image (Imagem do ambiente)**, escolha **Managed image (Imagem gerenciada)**. Para **Operating system**, selecione **Ubuntu**.

   1. Em **Runtime (Tempo de execução)**, selecione **Standard (Padrão)**. **Para **Imagem**, escolha: 5.0aws/codebuild/standard.**

   1. Em **Service role (Função de serviço)**, selecione **New service role (Nova função de serviço)**.
**nota**  
Anote o nome da sua função CodeBuild de serviço. Você precisará do nome do perfil para a etapa final deste tutorial.

   1. Em **Buildspec**, para **Build specifications** (Especificações da compilação), escolha **Insert build commands** (Inserir comandos de compilação). Selecione **Alternar para o editor** e cole o seguinte em **Comandos de compilação**.

      ```
      version: 0.2
      #env:
        #variables:
           # key: "value"
           # key: "value"
        #parameter-store:
           # key: "value"
           # key: "value"
        #git-credential-helper: yes
      phases:
        install:
          #If you use the Ubuntu standard image 2.0 or later, you must specify runtime-versions.
          #If you specify runtime-versions and use an image other than Ubuntu standard image 2.0, the build fails.
          runtime-versions:
            nodejs: 12
          #commands:
            # - command
            # - command
        #pre_build:
          #commands:
            # - command
            # - command
        build:
          commands:
            - 
        #post_build:
          #commands:
            # - command
            # - command
      artifacts:
        files:
           - '*'
          # - location
        name: $(date +%Y-%m-%d)
        #discard-paths: yes
        #base-directory: location
      #cache:
        #paths:
          # - paths
      ```

   1. Escolha **Continuar para CodePipeline**. Isso retorna ao CodePipeline console e cria um CodeBuild projeto que usa seus comandos de compilação para configuração. O projeto de compilação usa uma função de serviço para gerenciar AWS service (Serviço da AWS) permissões. Essa etapa pode levar alguns minutos.

   1. 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 página **Etapa 6: Adicionar estágio de implantação**, escolha **Ignorar estágio de implantação** e, em seguida, aceite a mensagem de aviso escolhendo **Ignorar** novamente. Escolha **Próximo**.

1. Na **Etapa 7: Revisão**, escolha **Criar funil**.

## Etapa 2: editar o estágio de compilação para adicionar a condição e a regra
<a name="tutorials-varcheckrule-create-condition"></a>

Nesta etapa, você edita o estágio para adicionar uma condição na estrada para a regra de verificação de variável.

1. Selecione o pipeline e escolha **Editar**. Selecione adicionar uma regra de entrada no estágio de compilação. 

   Em **Provedor de regras**, escolha **VariableCheck**.

1. Em **Variável**, insira a variável ou variáveis ​​que você deseja verificar. Em **Valor**, insira o valor da string para verificar em relação à variável resolvida. Nas telas de exemplo a seguir, uma regra é criada para uma verificação “equals” e outra é criada para uma verificação “contains”.  
![\[A página de criação de regras para a verificação da variável “equals”\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/varcheck-tut-create-rule-equals.png)  
![\[A página de criação de regras para a verificação da variável “contains”\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/varcheck-tut-create-rule-contains.png)

1. Escolha **Salvar**. 

   Selecione **Concluído**.

## Etapa 3: executar o pipeline e visualizar as variáveis resolvidas
<a name="tutorials-varcheckrule-run"></a>

Nesta etapa, você visualiza os valores resolvidos e os resultados da regra de verificação de variáveis.

1. Visualize a execução resolvida após a verificação da regra ser bem-sucedida, conforme mostrado no exemplo a seguir.  
![\[Execução bem-sucedida\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/varcheck-tut-run-succeeded.png)

1. Visualize as informações variáveis na guia **Linha do tempo**.   
![\[A página de histórico mostrando a guia Linha do tempo com variáveis ​​foi bem-sucedida\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/varcheck-tut-history.png)