

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

# Exemplo: criar um AWS CodeCommit gatilho para uma AWS Lambda função
<a name="how-to-notify-lambda"></a>

Você pode criar um gatilho para um CodeCommit repositório para que os eventos no repositório invoquem uma função Lambda. Neste exemplo, você cria uma função Lambda que retorna a URL usada para clonar o repositório em um log da Amazon. CloudWatch 

**Topics**
+ [Criar a função do Lambda](#how-to-notify-lambda-create-function)
+ [Veja o acionador da função Lambda no repositório AWS CodeCommit](#how-to-notify-lam-view)

## Criar a função do Lambda
<a name="how-to-notify-lambda-create-function"></a>

Ao usar o console Lambda para criar a função, você também pode criar um CodeCommit gatilho para a função Lambda. As seguintes etapas incluem uma amostra de função do lambda. A amostra está disponível em duas linguagens: JavaScript e Python. A função retorna o URLs usado para clonar um repositório em um CloudWatch log.

**Para criar uma função do lambda usando um esquema do Lambda**

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. Na página **Funções do Lambda**, escolha **Criar uma função**. (Se você ainda não usou o Lambda, selecione **Comece agora**.)

1. Na página **Create function**, selecione **Author from scratch**. Em **Nome da função**, forneça um nome para a função, por exemplo*MyLambdaFunctionforCodeCommit*. Em **Runtime (Tempo de execução)**, escolha o idioma que deseja usar para escrever a função e selecione **Create function (Criar função)**.

1. Na guia **Configuration (Configuração)**, selecione **Add trigger (Adicionar trigger)**.

1.  Na **configuração do Trigger**, escolha na **CodeCommit**lista suspensa de serviços.   
![\[Criação de um repositório no console\]](http://docs.aws.amazon.com/pt_br/codecommit/latest/userguide/images/codecommit-lambda-trigger.png)

    
   + Em **Nome do repositório**, escolha o nome do repositório onde você deseja configurar um gatilho que usará a função do Lambda em resposta a eventos de repositório.
   + Em **Nome do acionador**, insira um nome para o gatilho (por exemplo,*MyLambdaFunctionTrigger*).
   + Em **Eventos**, escolha os eventos de repositório que acionarão a função do Lambda. Se você selecionar **All repository events**, não poderá escolher nenhum outro evento. Se desejar escolher um subconjunto de eventos, limpe **All repository events** e, em seguida, escolha os eventos que deseja na lista. Por exemplo, se você quiser que o gatilho seja executado somente quando um usuário criar uma tag ou uma ramificação no AWS CodeCommit repositório, remova **Todos os eventos do repositório** e escolha **Criar ramificação ou** tag.
   + Se desejar que o gatilho se aplique a todas as ramificações do repositório, em **Branches**, selecione **All branches**. Caso contrário, escolha **Specific branches**. A ramificação padrão do repositório é adicionada por padrão. Você pode manter ou excluir essa ramificação da lista. Escolha até 10 nomes de ramificação na lista de ramificações de repositório.
   + (Opcional) Em **Dados personalizados**, insira as informações que deseja incluir na função do Lambda (por exemplo, o nome de um canal IRC que os desenvolvedores usam quando debatem o desenvolvimento no repositório). Este campo é uma string. Ele não pode ser usado para passar nenhum parâmetro dinâmico.

   Escolha **Adicionar**.

1. Na página **Configuration (Configuração)**, em **Function Code (Código de função)**, em Code entry type (Tipo de entrada de código), selecione Edit code inline (Editar código em linha). Em **Runtime (Tempo de execução)**, selecione **Node.js**. Se você quiser criar uma função Python de exemplo, selecione **Python**.

1. Em **Code entry type**, selecione **Edit code inline** e substitua o código hello world por um dos seguintes exemplos.

   Para Node.js:

   ```
   import {
     CodeCommitClient,
     GetRepositoryCommand,
   } from "@aws-sdk/client-codecommit";
   
   const codecommit = new CodeCommitClient({ region: "your-region" });
   
   /**
    * @param {{ Records: { codecommit: { references: { ref: string }[] }, eventSourceARN: string  }[]} event
    */
   export const handler = async (event) => {
     // Log the updated references from the event
     const references = event.Records[0].codecommit.references.map(
       (reference) => reference.ref,
     );
     console.log("References:", references);
   
     // Get the repository from the event and show its git clone URL
     const repository = event.Records[0].eventSourceARN.split(":")[5];
     const params = {
       repositoryName: repository,
     };
   
     try {
       const data = await codecommit.send(new GetRepositoryCommand(params));
       console.log("Clone URL:", data.repositoryMetadata.cloneUrlHttp);
       return data.repositoryMetadata.cloneUrlHttp;
     } catch (error) {
       console.error("Error:", error);
       throw new Error(
         `Error getting repository metadata for repository ${repository}`,
       );
     }
   };
   ```

   Para Python:

   ```
   import json
   import boto3
   
   codecommit = boto3.client("codecommit")
   
   
   def lambda_handler(event, context):
       # Log the updated references from the event
       references = {
           reference["ref"]
           for reference in event["Records"][0]["codecommit"]["references"]
       }
       print("References: " + str(references))
   
       # Get the repository from the event and show its git clone URL
       repository = event["Records"][0]["eventSourceARN"].split(":")[5]
       try:
           response = codecommit.get_repository(repositoryName=repository)
           print("Clone URL: " + response["repositoryMetadata"]["cloneUrlHttp"])
           return response["repositoryMetadata"]["cloneUrlHttp"]
       except Exception as e:
           print(e)
           print(
               "Error getting repository {}. Make sure it exists and that your repository is in the same region as this function.".format(
                   repository
               )
           )
           raise e
   ```

1. Na guia **Permissões**, em **Função de execução**, selecione a função para abri-la no console do IAM. Edite a política anexada para adicionar a permissão `GetRepository` ao repositório que deve usar o trigger.

## Veja o acionador da função Lambda no repositório AWS CodeCommit
<a name="how-to-notify-lam-view"></a>

Depois de criar a função do Lambda, será possível visualizar e testar o gatilho no AWS CodeCommit. O teste do gatilho executa a função em resposta aos eventos de repositório que você especificar.

**Para visualizar e testar o gatilho da função do lambda**

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

1. Em **Repositories (Repositórios)**, escolha o repositório que onde deseja exibir gatilhos.

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

1. Analise a lista de gatilhos do repositório. Você deverá visualizar o gatilho que criou no console do Lambda. Selecione-o na lista e selecione **Test trigger (Testar gatilho)**. Essa opção tenta chamar a função com os dados de exemplo sobre o seu repositório, incluindo o ID de confirmação mais recente dele. (Se não houver histórico de confirmações, serão gerados valores de exemplo que consistem em zeros.) Isso ajuda você a confirmar que você configurou corretamente o acesso entre AWS CodeCommit e a função Lambda.

1. Para verificar mais a funcionalidade do próprio gatilho, crie e envie uma confirmação por push para o repositório onde você o configurou. Você verá uma resposta da função do Lambda na guia **Monitoramento** da função no console do Lambda. Na guia **Monitoramento**, escolha **Exibir logins CloudWatch**. O CloudWatch console abre em uma nova guia e exibe os eventos da sua função. Selecione o fluxo de log na lista que correspondente à hora em que você enviou a sua confirmação por push. Você deve ver dados de evento semelhantes a:

   ```
   START RequestId: 70afdc9a-EXAMPLE Version: $LATEST
   2015-11-10T18:18:28.689Z	70afdc9a-EXAMPLE	References: [ 'refs/heads/main' ]
   2015-11-10T18:18:29.814Z	70afdc9a-EXAMPLE	Clone URL: https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo
   END RequestId: 70afdc9a-EXAMPLE
   REPORT RequestId: 70afdc9a-EXAMPLE Duration: 1126.87 ms Billed Duration: 1200 ms Memory Size: 128 MB Max Memory Used: 14 MB
   ```