Exemplo: criar um gatilho AWS CodeCommit para uma AWS Lambda função existente - AWS CodeCommit

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

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 gatilho AWS CodeCommit para uma AWS Lambda função existente

A forma mais fácil de criar um gatilho que invoque uma função do Lambda é criá-lo no console do Lambda. Essa integração integrada garante que CodeCommit ele tenha as permissões necessárias para executar a função. Para adicionar um gatilho a uma função do Lambda, acesse o console do Lambda e escolha a função. Na guia gatilhos (Gatilhos) da função, siga as etapas descritas em Add gatilho (Adicionar gatilho). Essas etapas são semelhantes às mostradas em Criar a função do Lambda.

Você também pode criar um gatilho para uma função Lambda em um CodeCommit repositório. Isso requer que você escolha uma função do lambda existente para invocar. Também requer que você configure manualmente as permissões necessárias CodeCommit para executar a função.

Configure manualmente as permissões para permitir CodeCommit a execução de uma função Lambda

Se você criar um gatilho CodeCommit que invoque uma função Lambda, deverá configurar manualmente as permissões que permitem CodeCommit executar a função Lambda. Para evitar a configuração manual, considere criar o gatilho para a função no console do Lambda.

Para permitir CodeCommit a execução de uma função Lambda
  1. Abra um editor de texto simples e crie um JSON arquivo que especifique o nome da função Lambda, os detalhes do repositório e CodeCommit as ações que você deseja permitir no Lambda, semelhante ao seguinte:

    { "FunctionName": "MyCodeCommitFunction", "StatementId": "1", "Action": "lambda:InvokeFunction", "Principal": "codecommit.amazonaws.com", "SourceArn": "arn:aws:codecommit:us-east-1:111122223333:MyDemoRepo", "SourceAccount": "111122223333" }
  2. Salve o JSON arquivo como um arquivo com um nome fácil de lembrar (por exemplo, AllowAccessfromMyDemoRepo.json).

  3. Usando o JSON arquivo que você acabou de criar, no terminal (Linux, macOS ou Unix) ou na linha de comando (Windows), execute o aws lambda add-permissions comando para adicionar uma permissão à política de recursos associada à sua função Lambda:

    aws lambda add-permission --cli-input-json file://AllowAccessfromMyDemoRepo.json

    Esse comando retorna a declaração JSON de política que você acabou de adicionar, semelhante à seguinte:

    { "Statement": "{\"Condition\":{\"StringEquals\":{\"AWS:SourceAccount\":\"111122223333\"},\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:codecommit:us-east-1:111122223333:MyDemoRepo\"}},\"Action\":[\"lambda:InvokeFunction\"],\"Resource\":\"arn:aws:lambda:us-east-1:111122223333:function:MyCodeCommitFunction\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"codecommit.amazonaws.com\"},\"Sid\":\"1\"}" }

    Para obter mais informações sobre políticas de recursos para funções Lambda, consulte AddPermissionThe Pull/Push Event Models no Guia do usuário.AWS Lambda

  4. Faça login no AWS Management Console e abra o IAM console em https://console.aws.amazon.com/iam/.

  5. No painel de navegação do Painel, escolha Funções e, na lista de funções, selecione lambda_basic_execution.

  6. Na página de resumo da função, escolha a guia Permissions (Permissões) e, em Inline Policies (Políticas em linha), selecione Create Role Policy (Criar política de função).

  7. Na página Set Permissions, selecione Policy Generator e Select.

  8. Na página Edit Permissions (Editar permissões), faça o seguinte:

    • Em Effect, selecione Allow.

    • Em Serviço da AWS , selecione AWS CodeCommit.

    • Em Ações, selecione GetRepository.

    • Em Amazon Resource Name (ARN), insira o ARN para o repositório (por exemplo,arn:aws:codecommit:us-east-1:111122223333:MyDemoRepo).

    Escolha Add Statement (Adicionar instrução) e Next Step (Próxima etapa).

  9. Na página Review Policy, selecione Apply Policy.

    O relatório de políticas será semelhante ao seguinte exemplo:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt11111111", "Effect": "Allow", "Action": [ "codecommit:GetRepository" ], "Resource": [ "arn:aws:codecommit:us-east-1:111122223333:MyDemoRepo" ] } ] }

Crie um gatilho para a função Lambda em um CodeCommit repositório (console)

Depois de criar a função Lambda, você pode criar um gatilho CodeCommit que executa a função em resposta aos eventos do repositório que você especificar.

nota

Antes de testar ou executar com êxito o gatilho do exemplo, você deve configurar as políticas que permitem CodeCommit invocar a função e a função Lambda para obter informações sobre o repositório. Para obter mais informações, consulte Para permitir CodeCommit a execução de uma função Lambda.

Para criar um gatilho para uma função do Lambda
  1. Abra o CodeCommit console 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. Escolha Criar acionador.

  5. Em Create gatilho (Criar gatilho), faça o seguinte:

    • Em Nome do acionador, insira um nome para o acionador (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 CodeCommit repositório, remova Todos os eventos do 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 Choose the service to use (Escolher o serviço para usar), selecione AWS Lambda.

    • Na função Lambda, escolha o nome da função na lista ou insira o ARN para a função.

    • (Opcional) Em Dados personalizados, insira as informações que você deseja incluir na função Lambda (por exemplo, o nome do IRC canal usado pelos desenvolvedores para discutir o desenvolvimento no repositório). Este campo é uma string. Ele não pode ser usado para passar nenhum parâmetro dinâmico.

  6. (Opcional) Selecione Test gatilho (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 se você configurou corretamente o acesso entre CodeCommit e a função Lambda.

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

  8. Para verificar a funcionalidade do 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.

Crie um gatilho para uma função Lambda para um CodeCommit repositório ()AWS CLI

Você também pode usar a linha de comando para criar um gatilho para uma função Lambda em resposta a eventos do CodeCommit repositório, como quando alguém envia um commit para seu repositório.

Para criar um gatilho para uma função do Lambda
  1. Abra um editor de texto sem formatação e crie um JSON arquivo que especifique:

    • O nome de função do Lambda.

    • 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, se você quiser criar um gatilho para um repositório chamado MyDemoRepo que publica todos os eventos do repositório em uma função Lambda chamada MyCodeCommitFunction para duas filiais, main e preprod:

    { "repositoryName": "MyDemoRepo", "triggers": [ { "name": "MyLambdaFunctionTrigger", "destinationArn": "arn:aws:lambda:us-east-1:111122223333:function:MyCodeCommitFunction", "customData": "", "branches": [ "main", "preprod" ], "events": [ "all" ] } ] }

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

    { "repositoryName": "MyDemoRepo", "triggers": [ { "name": "MyLambdaFunctionTrigger", "destinationArn": "arn:aws:lambda:us-east-1:111122223333:function:MyCodeCommitFunction", "customData": "", "branches": [ "main", "preprod" ], "events": [ "all" ] }, { "name": "MyOtherLambdaFunctionTrigger", "destinationArn": "arn:aws:lambda:us-east-1:111122223333:function:MyOtherCodeCommitFunction", "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, você pode incluir uma string customData (por exemplo, um nome de IRC canal que os desenvolvedores usam ao discutir o desenvolvimento neste repositório). Este campo é uma string. Ele não pode ser usado para passar nenhum parâmetro dinâmico. Essa string é anexada como um atributo ao CodeCommit JSON retornado em resposta ao gatilho.

  2. (Opcional) No terminal ou no aviso de comando, execute o comando test-repository-triggers. Por exemplo, o seguinte é usado para testar se o JSON arquivo chamado trigger.json é válido e CodeCommit pode acionar a função Lambda. Esse teste usa dados de amostra para funcionar se não houver dados reais disponíveis.

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

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

    { "successfulExecutions": [ "MyLambdaFunctionTrigger" ], "failedExecutions": [] }
  3. Em um terminal ou prompt de comando, execute o put-repository-triggers comando para criar o gatilho em CodeCommit. Por exemplo, para usar um JSON arquivo chamado trigger.json para 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:lambda:us-east-1:111122223333:MyCodeCommitFunction", "branches": [ "main", "preprod" ], "name": "MyLambdaFunctionTrigger", "customData": "Project ID 12345" } ] }
  5. Para testar a funcionalidade do 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.