Exemplo: criar um AWS CodeCommit gatilho para uma AWS Lambda função - 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 AWS CodeCommit gatilho para uma AWS Lambda função

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 o URL usado para clonar o repositório em um log da Amazon. CloudWatch

Criar a função do Lambda

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 AWS Management Console e abra o AWS Lambda console em https://console.aws.amazon.com/lambda/.

  2. Na página Funções do Lambda, escolha Criar uma função. (Se você ainda não usou o Lambda, selecione Comece agora.)

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

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

  5. Na configuração do Trigger, escolha na CodeCommitlista suspensa de serviços.

    Criação de um repositório no console

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

    Escolha Adicionar.

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

  7. 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
  8. Na guia Permissions (Permissões), em Execution role (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.

Visualizar o gatilho para a função do Lambda no repositório do AWS CodeCommit

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.

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

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

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

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