

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

# Crie uma amostra de notificações para CodeBuild
<a name="sample-build-notifications"></a>

O Amazon CloudWatch Events tem suporte integrado para AWS CodeBuild. CloudWatch Eventos é um fluxo de eventos do sistema que descreve as mudanças em seus AWS recursos. Com CloudWatch os Eventos, você escreve regras declarativas para associar eventos de interesse às ações automatizadas a serem tomadas. Este exemplo usa o Amazon CloudWatch Events e o Amazon Simple Notification Service (Amazon SNS) para enviar notificações de compilação aos assinantes sempre que as compilações forem bem-sucedidas, falharem, passarem de uma fase de criação para outra ou qualquer combinação desses eventos.

**Importante**  
A execução dessa amostra pode resultar em cobranças em sua AWS conta. Isso inclui possíveis cobranças por CodeBuild e por AWS recursos e ações relacionados à Amazon CloudWatch e ao Amazon SNS. Para obter mais informações, consulte [CodeBuild preços, CloudWatch preços](https://aws.amazon.com/codebuild/pricing) [da Amazon](https://aws.amazon.com/cloudwatch/pricing) e preços do [Amazon SNS](https://aws.amazon.com/sns/pricing).

**Topics**
+ [Execute o exemplo de notificações de compilação](#sample-build-notifications-running)
+ [Referência do formato de entrada das notificações de compilação](sample-build-notifications-ref.md)

## Execute o exemplo de notificações de compilação
<a name="sample-build-notifications-running"></a>

Use o procedimento a seguir para executar o exemplo de notificações de compilação.

**Como executar este exemplo**

1. Se você já tem uma configuração de tópicos e assinou o Amazon SNS que deseja usar para este exemplo, vá para a etapa 4. Caso contrário, se você estiver usando um usuário do IAM em vez de uma conta AWS raiz ou um usuário administrador para trabalhar com o Amazon SNS, adicione a seguinte declaração (entre {{\#\#\# BEGIN ADDING STATEMENT HERE \#\#\#}} e{{\#\#\# END ADDING STATEMENT HERE \#\#\#}}) ao usuário (ou grupo do IAM ao qual o usuário está associado). Não é recomendável usar uma conta AWS root. Essa declaração permite a visualização, a criação, a assinatura e o teste do envio de notificações a tópicos no Amazon SNS. As elipses (`...`) são usadas para agilizar e para ajudá-lo a encontrar onde adicionar a declaração. Não remova nenhuma declaração e não digite essas elipses na política existente.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sns:CreateTopic",
                   "sns:GetTopicAttributes",
                   "sns:List*",
                   "sns:Publish",
                   "sns:SetTopicAttributes",
                   "sns:Subscribe"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------
**nota**  
A entidade do IAM que modifica essa política deve ter permissão no IAM para alterar políticas.  
Para obter mais informações, consulte [Editing customer managed policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#edit-managed-policy-console) ou a seção “To edit or delete an inline policy for a group, user, or role” em [Working with inline policies (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html#AddingPermissions_Console) no *Guia do usuário do IAM*.

1. Crie ou identifique um tópico no Amazon SNS. AWS CodeBuild usa CloudWatch Eventos para enviar notificações de criação para 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. Em **Create new topic (Criar novo tópico)**, em **Topic name (Nome do tópico)**, insira um nome para o tópico (por exemplo, **CodeBuildDemoTopic**). (Se escolher um nome diferente, substitua-o ao longo desse exemplo.) 

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

   1. Na CodeBuildDemoTopic página **Detalhes do tópico:**, copie o valor do **ARN do tópico**. Você precisa desse valor na próxima etapa. 

        
![O valor do ARN do tópico.](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/topic-arn.png)

      

   Para obter mais informações, consulte [Create a topic](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html) no *Guia do desenvolvedor do SNS*.

1. 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. Com o console do Amazon SNS aberto na etapa anterior, no painel de navegação, selecione **Assinaturas** e **Criar assinatura**.

   1. Em **Create subscription (Criar assinatura)**, em **Topic ARN (Tópico ARN)**, cole o ARN do tópico que você copiou da etapa anterior.

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

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

        
![A configuração da assinatura.](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/create-subscription.png)

      

   1. Escolha **Criar assinatura**.

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

   Para obter mais informações, consulte [Subscribe to a topic](https://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html) no *Guia do desenvolvedor do Amazon SNS*.

1. Se você estiver usando um usuário em vez de uma conta AWS raiz ou um usuário administrador para trabalhar com CloudWatch Eventos, adicione a seguinte declaração (entre {{\#\#\# BEGIN ADDING STATEMENT HERE \#\#\#}} e{{\#\#\# END ADDING STATEMENT HERE \#\#\#}}) ao usuário (ou grupo do IAM ao qual o usuário está associado). Não é recomendável usar uma conta AWS root. Essa declaração é usada para permitir que o usuário trabalhe com CloudWatch Eventos. As elipses (`...`) são usadas para agilizar e para ajudá-lo a encontrar onde adicionar a declaração. Não remova nenhuma declaração e não digite essas elipses na política existente.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "events:*",
                   "iam:PassRole"
               ],
               "Resource": "{{arn:aws:iam::*:role/Service*}}"
           }
       ]
   }
   ```

------
**nota**  
A entidade do IAM que modifica essa política deve ter permissão no IAM para alterar políticas.  
Para obter mais informações, consulte [Editing customer managed policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#edit-managed-policy-console) ou a seção “To edit or delete an inline policy for a group, user, or role” em [Working with inline policies (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html#AddingPermissions_Console) no *Guia do usuário do IAM*.

1. Crie uma regra em CloudWatch Eventos. Para fazer isso, abra o CloudWatch console, em [https://console.aws.amazon.com/cloudwatch](https://console.aws.amazon.com/cloudwatch).

1. No painel de navegação, em **Events**, escolha **Rules** e **Create rule**. 

1. Na **Step 1: Create rule page (página Etapa 1: criar regra)**, **Event Pattern (Padrão de evento)** e **Build event pattern to match events by service (Criar padrão de eventos para corresponder a eventos por serviço)** já devem estar selecionados. 

1. Em **Nome do serviço**, escolha **CodeBuild**. Em **Event Type (Tipo de evento)**, **All Events (Todos os eventos)** já deve estar selecionado.

1. O código a seguir deve ser exibido na **Event Pattern Preview (Visualização do padrão de evento)**:

   ```
   {
     "source": [ 
       "aws.codebuild"
     ]
   }
   ```

1. Escolha **Edit (Editar)** e substitua o código na **Event Pattern Preview (Visualização do padrão de evento)** por um dos dois padrões de regra a seguir.

   Esse primeiro padrão de regra aciona um evento quando uma compilação é iniciada ou concluída, para os projetos de compilação especificados no AWS CodeBuild.

   ```
   {
     "source": [ 
       "aws.codebuild"
     ], 
     "detail-type": [
       "CodeBuild Build State Change"
     ],
     "detail": {
       "build-status": [
         "IN_PROGRESS",
         "SUCCEEDED", 
         "FAILED",
         "STOPPED" 
       ],
       "project-name": [
         "{{my-demo-project-1}}",
         "{{my-demo-project-2}}"
       ]
     }  
   }
   ```

   Na regra anterior, faça as alterações no código a seguir conforme necessário.
   + Para acionar um evento quando uma compilação é iniciada ou concluída, deixe todos os valores conforme mostrado na matriz `build-status` ou remova a matriz `build-status` junto. 
   + Para acionar um evento somente quando uma compilação for concluída, remova `IN_PROGRESS` da matriz `build-status`. 
   + Para acionar um evento somente quando uma compilação é iniciada, remova todos os valores, exceto `IN_PROGRESS` da matriz `build-status`.
   + Para acionar eventos para todos os projetos de compilação, remova a matriz `project-name` junto.
   + Para acionar eventos apenas para projetos de compilação individuais, especifique o nome de cada projeto de compilação na matriz `project-name`. 

   Esse segundo padrão de regra aciona um evento sempre que uma compilação passa de uma fase de compilação para outra, para os projetos de compilação especificados no AWS CodeBuild.

   ```
   {
     "source": [ 
       "aws.codebuild"
     ], 
     "detail-type": [
       "CodeBuild Build Phase Change" 
     ],
     "detail": {
       "completed-phase": [
         "SUBMITTED",
         "PROVISIONING",
         "DOWNLOAD_SOURCE",
         "INSTALL",
         "PRE_BUILD",
         "BUILD",
         "POST_BUILD",
         "UPLOAD_ARTIFACTS",
         "FINALIZING"
       ],
       "completed-phase-status": [
         "TIMED_OUT",
         "STOPPED",
         "FAILED", 
         "SUCCEEDED",
         "FAULT",
         "CLIENT_ERROR"
       ],
       "project-name": [
         "{{my-demo-project-1}}",
         "{{my-demo-project-2}}"
       ]
     }  
   }
   ```

   Na regra anterior, faça as alterações no código a seguir conforme necessário.
   + Para acionar um evento para cada alteração na fase de compilação (que pode enviar até nove notificações para cada compilação), deixe todos os valores conforme mostrado na matriz `completed-phase` ou remova a matriz `completed-phase` junto.
   + Para acionar eventos apenas para alterações feitas na fase de compilação individuais, remova o nome de cada fase de compilação na matriz `completed-phase` para a qual você não deseja acionar um evento.
   + Para acionar um evento para cada alteração feita no status da fase de compilação, deixe todos os valores conforme mostrado na matriz `completed-phase-status` ou remova a matriz `completed-phase-status` junto.
   + Para acionar eventos apenas para alterações feitas no status da fase de compilação individuais, remova o nome de cada status da fase de compilação na matriz `completed-phase-status` para a qual você não deseja acionar um evento.
   + Para acionar eventos para todos os projetos de compilação, remova a matriz `project-name`.
   + Para acionar eventos para projetos de compilação individuais, especifique o nome de cada projeto de compilação na matriz `project-name`. 

   Para obter mais informações sobre padrões de eventos, consulte [Padrões de eventos](https://docs.aws.amazon.com/eventbridge/latest/userguide/filtering-examples-structure.html) no Guia EventBridge do usuário da Amazon.

   Para obter mais informações sobre filtragem com padrões de eventos, consulte [Content-basedFiltragem com padrões de eventos no Guia](https://docs.aws.amazon.com/eventbridge/latest/userguide/content-filtering-with-event-patterns.html) EventBridge do usuário da Amazon.
**nota**  
Se quiser acionar eventos para alterações feitas no estado de compilação e alterações na fase de compilação, é necessário criar duas regras à parte: uma para alterações feitas no estado da compilação e outra para alterações feitas na fase de compilação. Se você tentar integrar ambas as regras em uma única, a regra combinada poderá produzir resultados inesperados ou deixar de funcionar em conjunto.

   Quando você tiver concluído a substituição do código, escolha **Save**.

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

1. Na lista de destinos, escolha **SNS topic**. 

1. Em **Topic**, escolha o tópico que você identificou ou criou anteriormente. 

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

1. Na caixa **Input Path (Caminho de entrada)**, digite um dos caminhos de entrada a seguir.

   Para uma regra com um valor `detail-type` de `CodeBuild Build State Change`, insira o seguinte.

   ```
   {"build-id":"$.detail.build-id","project-name":"$.detail.project-name","build-status":"$.detail.build-status"}
   ```

   Para uma regra com um valor `detail-type` de `CodeBuild Build Phase Change`, insira o seguinte.

   ```
   {"build-id":"$.detail.build-id","project-name":"$.detail.project-name","completed-phase":"$.detail.completed-phase","completed-phase-status":"$.detail.completed-phase-status"}
   ```

   Para obter outros tipos de informações, consulte [Referência do formato de entrada das notificações de compilação](sample-build-notifications-ref.md).

1. Na caixa **Input Template (Modelo de entrada)**, insira um dos modelos de entrada.

   Para uma regra com um valor `detail-type` de `CodeBuild Build State Change`, insira o seguinte.

   ```
   "Build '<build-id>' for build project '<project-name>' has reached the build status of '<build-status>'."
   ```

   Para uma regra com um valor `detail-type` de `CodeBuild Build Phase Change`, insira o seguinte.

   ```
   "Build '<build-id>' for build project '<project-name>' has completed the build phase of '<completed-phase>' with a status of '<completed-phase-status>'."
   ```

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

1. Na página **Step 2: Configure rule details (Etapa 2: configurar detalhes da regra)** insira um nome e uma descrição opcional. Em **State (Estado)**, deixe **Enabled (Habilitado)** selecionado.

1. Escolha **Criar regra**. 

1. Crie projetos de compilação, execute as compilações e exiba as informações de compilação.

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

Para alterar o comportamento de uma regra, no CloudWatch console, escolha a regra que você deseja alterar, escolha **Ações** e, em seguida, escolha **Editar**. Faça alterações na regra e escolha **Configure details (Configurar detalhes)** e **Update rule (Atualizar regra)**.

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

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