Esempio: crea un AWS CodeCommit trigger per una funzione AWS Lambda - AWS CodeCommit

AWS CodeCommit non è più disponibile per i nuovi clienti. I clienti esistenti di AWS CodeCommit possono continuare a utilizzare il servizio normalmente. Scopri di più»

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esempio: crea un AWS CodeCommit trigger per una funzione AWS Lambda

È possibile creare un trigger per un CodeCommit repository in modo che gli eventi nel repository richiamino una funzione Lambda. In questo esempio, crei una funzione Lambda che restituisce l'elemento URL utilizzato per clonare il repository in un log Amazon. CloudWatch

Creazione della funzione Lambda

Quando usi la console Lambda per creare la funzione, puoi anche creare un CodeCommit trigger per la funzione Lambda. I passaggi seguenti includono una funzione Lambda di esempio. L'esempio è disponibile in due lingue: JavaScript e Python. La funzione restituisce l'URLsusato per clonare un repository in un registro. CloudWatch

Per creare una funzione Lambda utilizzando un blueprint Lambda
  1. Accedi a AWS Management Console e apri la console all' AWS Lambda indirizzo. https://console.aws.amazon.com/lambda/

  2. Nella pagina Funzioni Lambda, scegli Crea funzione. (Se non hai mai usato Lambda prima, scegli Inizia ora.)

  3. Nella pagina Create function (Crea funzione), scegliere Author from scratch (Crea da zero). In Function Name, fornisci un nome per la funzione, ad esempio MyLambdaFunctionforCodeCommit. In Runtime, scegli la lingua che desideri utilizzare per scrivere la funzione, quindi scegli Crea funzione.

  4. Nella scheda Configuration (Configurazione) scegliere Add trigger (Aggiungi trigger).

  5. Nella configurazione di Trigger, scegli CodeCommitdall'elenco a discesa dei servizi.

    Creazione di un repository dalla console

    • In Nome archivio, scegli il nome del repository in cui desideri configurare un trigger che utilizza la funzione Lambda in risposta agli eventi del repository.

    • Nel nome del trigger, inserisci un nome per il trigger (ad esempio, MyLambdaFunctionTrigger).

    • In Eventi, scegli gli eventi del repository che attivano la funzione Lambda. Se si sceglie All repository events (Tutti gli eventi del repository), non è possibile scegliere altri eventi. Se ad esempio si desidera scegliere un sottoinsieme di eventi, deselezionare All repository events (Tutti gli eventi del repository) e scegliere gli eventi desiderati nell'elenco. Ad esempio, se desideri che il trigger venga eseguito solo quando un utente crea un tag o un ramo nel AWS CodeCommit repository, rimuovi Tutti gli eventi del repository, quindi scegli Crea ramo o tag.

    • Se si desidera applicare il trigger a tutti i rami del repository, in Branches (Rami), scegliere All Branches (Tutti i rami). In caso contrario, scegliere Specific branches (Rami specifici). Per impostazione predefinita, viene aggiunto il ramo predefinito per il repository. È possibile mantenere o eliminare questo ramo dall'elenco. Scegliere fino a 10 nomi di rami nell'elenco di rami del repository.

    • (Facoltativo) In Dati personalizzati, inserisci le informazioni che desideri includere nella funzione Lambda (ad esempio, il nome del IRC canale usato dagli sviluppatori per discutere dello sviluppo nel repository). Questo campo è una stringa e non può essere utilizzato per passare parametri dinamici.

    Scegli Aggiungi.

  6. Nella pagina Configuration (Configurazione) in Function Code (Codice funzione), per il tipo di immissione codice, scegliere Edit code inline (Modifica codice inline). In Runtime, scegliere Node.js. Se si desidera creare una funzione Python di esempio, scegliere Python.

  7. In Code entry type (Tipo di voce del codice), scegliere Edit code inline (Modifica codice inline), quindi sostituire il codice hello world con uno dei due esempi riportati di seguito.

    Per 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}`, ); } };

    Per 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. Nella scheda Autorizzazioni, in Ruolo di esecuzione, scegli il ruolo per aprirlo nella console. IAM Modificare la policy collegata per aggiungere l'autorizzazione GetRepository per il repository che si desidera venga utilizzato dal trigger.

Visualizza il trigger per la funzione Lambda nel repository AWS CodeCommit

Dopo aver creato la funzione Lambda, è possibile visualizzare e testare il trigger in. AWS CodeCommit Il test del trigger esegue la funzione in risposta agli eventi del repository specificati.

Per visualizzare e testare il trigger per la funzione Lambda
  1. Apri la CodeCommit console su https://console.aws.amazon.com/codesuite/codecommit/home.

  2. In Repositories (Repository), scegliere il repository in cui si desidera visualizzare i trigger.

  3. Nel riquadro di navigazione per il repository, scegliere Settings (Impostazioni), quindi Triggers (Trigger).

  4. Esaminare l'elenco dei trigger per il repository. Dovresti vedere il trigger che hai creato nella console Lambda. Selezionarlo dall'elenco e quindi scegliere Test trigger (Esegui test trigger). Questa opzione tenta di invocare la funzione con i dati di esempio relativi al repository, incluso l'ID commit più recente. Se non esiste una cronologia dei commit, vengono generati valori di esempio costituiti da zero. Questo ti aiuta a confermare di aver configurato correttamente l'accesso tra AWS CodeCommit e la funzione Lambda.

  5. Per verificare ulteriormente la funzionalità del trigger, creare ed effettuare il push di un commit nel repository in cui è stato configurato il trigger. Dovresti vedere una risposta dalla funzione Lambda nella scheda Monitoraggio per quella funzione nella console Lambda. Dalla scheda Monitoraggio, scegli Visualizza i log in. CloudWatch La CloudWatch console si apre in una nuova scheda e visualizza gli eventi relativi alla funzione. Selezionare dall'elenco il flusso di log che corrisponde al momento in cui è stato eseguito il push del commit. Dovrebbero essere visualizzati dati di evento simili ai seguenti:

    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