Exemplo: criar um gatilho do AWS CodeCommit para um tópico do Amazon SNS - AWS CodeCommit

O AWS CodeCommit não está mais disponível para novos clientes. Os clientes atuais do AWS CodeCommit podem continuar usando o serviço normalmente. Saiba mais"

Exemplo: criar um gatilho do AWS CodeCommit para um tópico do Amazon SNS

Você pode criar um gatilho para um repositório do CodeCommit para que os eventos nesse repositório acionem notificações de um tópico do Amazon Simple Notification Service (Amazon SNS). Você pode criar um gatilho para um tópico do Amazon SNS para permitir que usuários se inscrevam em notificações sobre eventos de repositório, como a exclusão de ramificações. Você também pode aproveitar a integração de tópicos do Amazon SNS com outros serviços, como o Amazon Simple Queue Service (Amazon SQS) e o AWS Lambda.

nota
  • É necessário apontar o gatilho para um tópico do Amazon SNS, que é a ação realizada em reposta a eventos de repositório. Para obter mais informações sobre como criar e assinar tópicos do Amazon SNS, consulte Conceitos básicos do Amazon Simple Notification Service.

  • Os tópicos FIFO (primeiro a entrar, primeiro a sair) do Amazon SNS não são compatíveis com gatilhos do CodeCommit.

Criar um gatilho para um tópico do Amazon SNS em um repositório do CodeCommit (console)

  1. Abra o console do CodeCommit em https://console.aws.amazon.com/codesuite/codecommit/home.

  2. Em Repositories (Repositórios), escolha o repositório onde deseja criar gatilhos de eventos de repositório.

  3. No painel de navegação do repositórios, selecione Settings (Configurações) e gatilhos (Gatilhos).

  4. Selecione Create gatilho (Criar gatilho) e proceda da seguinte maneira:

    • Em gatilho name (Nome do gatilho), insira um nome para o gatilho (por exemplo, MyFirstgatilho).

    • Em Eventos, selecione os eventos de repositório que acionarão o tópico do Amazon SNS para enviar notificações.

      Se você selecionar All repository events, não poderá escolher nenhum outro evento. Para selecionar um subconjunto de eventos, remova All repository events e selecione um ou mais eventos na lista. Por exemplo, se você quiser que o gatilho seja acionado somente quando um usuário criar uma ramificação ou tag no repositório do CodeCommit, remova Todos os eventos de repositório e escolha Criar ramificação ou tag.

    • Se você deseja que o gatilho seja aplicado a todas as ramificações do repositório, em Branches (Ramificações), deixe a seleção em branco, pois essa opção padrão aplica o gatilho a todas as ramificações automaticamente. Se você quiser que esse gatilho seja aplicado somente a ramificações específicas, escolha até 10 nomes de ramificação na lista de ramificações do repositório.

    • Em Escolher o serviço para usar, selecione Amazon SNS.

    • Em Amazon SNS, escolha o nome de um tópico na lista ou insira o ARN do tópico.

      nota

      Os tópicos FIFO (primeiro a entrar, primeiro a sair) do Amazon SNS não são compatíveis com gatilhos do CodeCommit. Você deve escolher um tópico FIFO do Amazon SNS que tenha seu tipo definido como Padrão.

    • Em Dados personalizados, forneça qualquer informação adicional que deseja incluir na notificação enviada pelo tópico do Amazon SNS (por exemplo, o nome de um canal IRC que os desenvolvedores usam quando debatem o desenvolvimento neste repositório). Este campo é uma string. Ele não pode ser usado para passar nenhum parâmetro dinâmico.

  5. (Opcional) Selecione Test gatilho (Testar gatilho). Essa etapa ajuda você a confirmar se configurou o acesso entre o CodeCommit e o tópico do Amazon SNS corretamente. Ele usa o tópico do Amazon SNS para enviar uma notificação de teste usando dados do repositório, se disponíveis. Se nenhum dado real estiver disponível, a notificação de teste conterá dados de exemplo.

  6. Selecione Create gatilho (Criar gatilho) para concluir a criação do gatilho.

Criar um gatilho para um tópico do Amazon SNS em um repositório do CodeCommit (AWS CLI)

Você também pode usar a linha de comando para criar um gatilho para um tópico Amazon SNS em resposta a eventos de repositório do CodeCommit, como quando alguém enviar uma confirmação via push para o seu repositório.

Criar um gatilho para um tópico do Amazon SNS
  1. Abra um editor de texto simples e crie um arquivo JSON que especifique:

    • O nome do tópico do Amazon SNS.

      nota

      Os tópicos FIFO (primeiro a entrar, primeiro a sair) do Amazon SNS não são compatíveis com gatilhos do CodeCommit. Você deve escolher um tópico FIFO do Amazon SNS que tenha seu tipo definido como Padrão.

    • O repositório e as ramificações que deseja monitorar com o gatilho. (Se você não especificar nenhuma ramificação, o gatilho se aplicará a todas as ramificações no repositório.)

    • Os eventos que ativam o gatilho.

    Salve o arquivo.

    Por exemplo, para criar um gatilho para um repositório chamado MyDemoRepo que publica todos os eventos de repositório em um tópico do Amazon SNS chamado MySNSTopic para duas ramificações, principal e preprod:

    { "repositoryName": "MyDemoRepo", "triggers": [ { "name": "MyFirstTrigger", "destinationArn": "arn:aws:sns:us-east-2:111122223333:MySNSTopic", "customData": "", "branches": [ "main", "preprod" ], "events": [ "all" ] } ] }

    Deve haver um bloco do gatilho no JSON para cada gatilho de um repositório. Para criar mais de um gatilho para o repositório, inclua mais de um bloco de gatilho no JSON. Lembre-se de que todos os gatilhos criados no arquivo são para o repositório especificado. Você não pode criar gatilhos para vários repositórios em um único arquivo JSON. Por exemplo, se você desejasse criar dois gatilhos para um repositório, poderia criar um arquivo JSON com dois blocos de gatilhos. No exemplo a seguir, não há ramificação especificada para o segundo gatilho, então ele se aplica a todas as ramificações:

    { "repositoryName": "MyDemoRepo", "triggers": [ { "name": "MyFirstTrigger", "destinationArn": "arn:aws:sns:us-east-2:111122223333:MySNSTopic", "customData": "", "branches": [ "main", "preprod" ], "events": [ "all" ] }, { "name": "MySecondTrigger", "destinationArn": "arn:aws:sns:us-east-2:111122223333:MySNSTopic2", "customData": "", "branches": [], "events": [ "updateReference", "deleteReference" ] } ] }

    É possível criar gatilhos para eventos que você especifica, como quando uma confirmação é enviada por push para um repositório. Os tipos de eventos incluem:

    • all para todos os eventos no repositório e nas ramificações especificados.

    • updateReference para quando confirmações são enviadas por push para o repositório e a ramificações especificados.

    • createReference para quando uma nova ramificação ou tag é criada no repositório especificado.

    • deleteReference para quando uma nova ramificação ou tag é excluída no repositório especificado.

    nota

    É possível usar mais de um tipo de evento em um gatilho. Contudo, se você especificar all, não poderá especificar outros eventos.

    Para ver a lista completa dos tipos de eventos válidos em um terminal ou prompt de comando, insira aws codecommit put-repository-triggers help.

    Além disso, é possível incluir uma string em customData (por exemplo, o nome de um canal IRC que os desenvolvedores usam quando debatem o desenvolvimento neste repositório). Este campo é uma string. Ele não pode ser usado para passar nenhum parâmetro dinâmico. A string é anexada como um atributo ao CodeCommit que o JSON retornou em resposta ao gatilho.

  2. (Opcional) No terminal ou no aviso de comando, execute o comando test-repository-triggers. Este teste usa dados de amostra do repositório (ou gera dados de amostra se não houver dados disponíveis) para enviar uma notificação para os assinantes do tópico do Amazon SNS. Por exemplo, o seguinte é usado para testar se o JSON no arquivo de gatilho chamado gatilho.json é válido e se o CodeCommit pode publicar no tópico do Amazon SNS:

    aws codecommit test-repository-triggers --cli-input-json file://trigger.json

    Se houver êxito, o comando retornará informações semelhantes às seguintes:

    { "successfulExecutions": [ "MyFirstTrigger" ], "failedExecutions": [] }
  3. Em um terminal ou prompt de comando, execute o comando put-repository-triggers para criar o gatilho no CodeCommit. Por exemplo, para usar um arquivo JSON chamado gatilho.json e criar o gatilho:

    aws codecommit put-repository-triggers --cli-input-json file://trigger.json

    Esse comando retorna um ID de configuração semelhante ao seguinte:

    { "configurationId": "0123456-I-AM-AN-EXAMPLE" }
  4. Para visualizar a configuração do gatilho, execute o comando get-repository-triggers, especificando o nome do repositório:

    aws codecommit get-repository-triggers --repository-name MyDemoRepo

    Esse comando retorna a estrutura de todos os gatilhos configurados para o repositório semelhante à seguinte::

    { "configurationId": "0123456-I-AM-AN-EXAMPLE", "triggers": [ { "events": [ "all" ], "destinationArn": "arn:aws:sns:us-east-2:111122223333:MySNSTopic", "branches": [ "main", "preprod" ], "name": "MyFirstTrigger", "customData": "Project ID 12345" } ] }
  5. Para testar a funcionalidade do próprio gatilho, crie e envie uma confirmação por push para o repositório onde você o configurou. Você deverá visualizar uma resposta do tópico do Amazon SNS. Por exemplo, se você configurou o tópico do Amazon SNS para enviar um e-mail, você verá um e-mail do Amazon SNS na conta de e-mail inscrita no tópico.

    A seguir, veja um exemplo de saída de um e-mail enviado do Amazon SNS em resposta a um push enviado para um repositório do CodeCommit:

    { "Records":[ { "awsRegion":"us-east-2", "codecommit":{ "references" : [ { "commit":"317f8570EXAMPLE", "created":true, "ref":"refs/heads/NewBranch" }, { "commit":"4c925148EXAMPLE", "ref":"refs/heads/preprod", } ] }, "eventId":"11111-EXAMPLE-ID", "eventName":"ReferenceChange", "eventPartNumber":1, "eventSource":"aws:codecommit", "eventSourceARN":"arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo", "eventTime":"2016-02-09T00:08:11.743+0000", "eventTotalParts":1, "eventTriggerConfigId":"0123456-I-AM-AN-EXAMPLE", "eventTriggerName":"MyFirstTrigger", "eventVersion":"1.0", "customData":"Project ID 12345", "userIdentityARN":"arn:aws:iam::111122223333:user/JaneDoe-CodeCommit", } ] }