

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

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