Crie uma amostra de notificações para CodeBuild - AWS CodeBuild

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

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 (AmazonSNS) para enviar notificações de compilação aos assinantes sempre que as compilações forem bem-sucedidas, falharem, passarem de uma fase de construçã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 à AmazonSNS. Para obter mais informações, consulte CodeBuild preços, CloudWatchpreços da Amazon e SNSpreços da Amazon.

Execute a amostra de notificações de compilação

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

Como executar este exemplo
  1. Se você já tem um tópico configurado e inscrito na Amazon SNS que deseja usar para esta amostra, vá para a etapa 4. Caso contrário, se você estiver usando um IAM usuário em vez de uma conta AWS raiz ou um usuário administrador para trabalhar com a AmazonSNS, adicione a seguinte declaração (entre ### BEGIN ADDING STATEMENT HERE ### e ### END ADDING STATEMENT HERE ###) para o usuário (ou IAM grupo ao qual o usuário está associado). Não é recomendável usar uma conta AWS root. Essa declaração permite visualizar, criar, assinar e testar o envio de notificações para tópicos na AmazonSNS. 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.

    { "Statement": [ ### BEGIN ADDING STATEMENT HERE ### { "Action": [ "sns:CreateTopic", "sns:GetTopicAttributes", "sns:List*", "sns:Publish", "sns:SetTopicAttributes", "sns:Subscribe" ], "Resource": "*", "Effect": "Allow" }, ### END ADDING STATEMENT HERE ### ... ], "Version": "2012-10-17" }
    nota

    A IAM entidade que modifica essa política deve ter permissão IAM para modificar as políticas.

    Para obter mais informações, consulte Edição de políticas gerenciadas pelo cliente ou a seção “Para editar ou excluir uma política embutida para um grupo, usuário ou função” em Trabalho com políticas embutidas (console) no Guia do IAMusuário.

  2. Crie ou identifique um tópico na AmazonSNS. AWS CodeBuild usa CloudWatch Eventos para enviar notificações de criação para esse tópico por meio da AmazonSNS.

    Para criar um tópico:

    1. Abra o SNS console da Amazon em https://console.aws.amazon.com/sns.

    2. Escolha Criar tópico.

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

    4. Escolha Criar tópico.

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

      O ARN valor do tópico.

    Para obter mais informações, consulte Criar um tópico no Amazon SNS Developer Guide.

  3. 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 SNS console da Amazon aberto na etapa anterior, no painel de navegação, escolha Assinaturas e, em seguida, escolha Criar assinatura.

    2. Em Criar assinatura, em Tópico ARN, cole o tópico ARN que você copiou da etapa anterior.

    3. Em Protocolo, escolha Email.

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

      A configuração da assinatura.

    5. Escolha Create Subscription.

    6. SNSA Amazon envia um e-mail de confirmação da assinatura para o 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. Depois que o destinatário clicar no link, se a assinatura for bem-sucedida, a Amazon SNS exibirá uma mensagem de confirmação no navegador do destinatário.

    Para obter mais informações, consulte Inscrever-se em um tópico no Amazon SNS Developer Guide.

  4. 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 ###) para o usuário (ou IAM grupo 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.

    { "Statement": [ ### BEGIN ADDING STATEMENT HERE ### { "Action": [ "events:*", "iam:PassRole" ], "Resource": "*", "Effect": "Allow" }, ### END ADDING STATEMENT HERE ### ... ], "Version": "2012-10-17" }
    nota

    A IAM entidade que modifica essa política deve ter permissão IAM para modificar as políticas.

    Para obter mais informações, consulte Edição de políticas gerenciadas pelo cliente ou a seção “Para editar ou excluir uma política embutida para um grupo, usuário ou função” em Trabalho com políticas embutidas (console) no Guia do IAMusuário.

  5. Crie uma regra em CloudWatch Eventos. Para fazer isso, abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch.

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

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

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

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

    { "source": [ "aws.codebuild" ] }
  10. 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 no Guia EventBridge do usuário da Amazon.

    Para obter mais informações sobre a filtragem com padrões de eventos, consulte Filtragem baseada em conteúdo com padrões de eventos no Guia do usuário da Amazon EventBridge .

    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.

  11. Em Targets, escolha Add target.

  12. Na lista de alvos, escolha o SNStópico.

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

  14. Expanda Configure input e escolha Input Transformer.

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

  16. 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>'."
  17. Escolha Configure details (Configurar detalhes).

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

  19. Escolha Criar Regra.

  20. Crie projetos de compilação, execute as compilações e visualize informações de compilação.

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