Exemple : créer un AWS CodeCommit déclencheur pour une AWS Lambda fonction - AWS CodeCommit

AWS CodeCommit n'est plus disponible pour les nouveaux clients. Les clients existants de AWS CodeCommit peuvent continuer à utiliser le service normalement. En savoir plus »

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exemple : créer un AWS CodeCommit déclencheur pour une AWS Lambda fonction

Vous pouvez créer un déclencheur pour un CodeCommit référentiel afin que les événements du référentiel invoquent une fonction Lambda. Dans cet exemple, vous créez une fonction Lambda qui renvoie le fichier URL utilisé pour cloner le référentiel dans un journal Amazon CloudWatch .

Créer la fonction Lambda

Lorsque vous utilisez la console Lambda pour créer la fonction, vous pouvez également créer un CodeCommit déclencheur pour la fonction Lambda. Les étapes suivantes incluent un exemple de fonction Lambda. L'exemple est disponible en deux langues : JavaScript et en Python. La fonction renvoie le fichier URLs utilisé pour cloner un dépôt dans un CloudWatch journal.

Pour créer une fonction Lambda à l'aide d'un plan Lambda
  1. Connectez-vous à la AWS Lambda console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/lambda/.

  2. Sur la page Fonctions Lambda, choisissez Create function. (Si vous n'avez jamais utilisé Lambda auparavant, choisissez Get Started Now.)

  3. Sur la page Create function, sélectionnez Author from scratch. Dans Nom de la fonction, donnez un nom à la fonction, par exemple MyLambdaFunctionforCodeCommit. Dans Runtime, choisissez la langue que vous souhaitez utiliser pour écrire votre fonction, puis choisissez Create function.

  4. Sous l'onglet Configuration, choisissez Ajouter un déclencheur.

  5. Dans Configuration CodeCommitdu déclencheur, choisissez dans la liste déroulante des services.

    Création d'un référentiel à partir de la console

    • Dans Nom du référentiel, choisissez le nom du référentiel dans lequel vous souhaitez configurer un déclencheur qui utilise la fonction Lambda en réponse aux événements du référentiel.

    • Dans Nom du déclencheur, entrez le nom du déclencheur (par exemple, MyLambdaFunctionTrigger).

    • Dans Events, choisissez les événements du référentiel qui déclenchent la fonction Lambda. Si vous choisissez All repository events, vous ne pouvez pas choisir d'autres événements. Si vous voulez choisir un sous-ensemble d'événements, désélectionnez All repository events, puis choisissez les événements souhaités dans la liste. Par exemple, si vous souhaitez que le déclencheur s'exécute uniquement lorsqu'un utilisateur crée une balise ou une branche dans le AWS CodeCommit référentiel, supprimez tous les événements du référentiel, puis choisissez Créer une branche ou une étiquette.

    • Si vous souhaitez que le déclencheur s'applique à toutes les branches du référentiel, dans Branches, choisissez All branches. Sinon, choisissez Specific branches. La branche par défaut pour le référentiel est ajoutée par défaut. Vous pouvez conserver cette branche dans la liste ou la supprimer. Choisissez jusqu'à 10 noms de branche dans la liste des branches de référentiel.

    • (Facultatif) Dans Données personnalisées, entrez les informations que vous souhaitez inclure dans la fonction Lambda (par exemple, le nom du IRC canal utilisé par les développeurs pour discuter du développement dans le référentiel). Ce champ est une chaîne. Celle-ci ne peut pas être utilisée pour transmettre des paramètres dynamiques.

    Choisissez Ajouter.

  6. Sur la page Configuration, dans Code de fonction, dans Type d'entrée de code, choisissez Modifier le code en ligne. Sous Exécution, choisissez Node.js. Si vous souhaitez créer un exemple de fonction Python, choisissez Python.

  7. Dans Code entry type, choisissez Edit code inline, puis remplacez le code hello world par l'un des deux exemples suivants.

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

    Pour 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. Dans l'onglet Autorisations, dans Rôle d'exécution, choisissez le rôle pour l'ouvrir dans la IAM console. Modifiez la stratégie attachée pour ajouter une autorisation GetRepository au référentiel pour lequel vous souhaitez utiliser le déclencheur.

Afficher le déclencheur de la fonction Lambda dans le référentiel AWS CodeCommit

Après avoir créé la fonction Lambda, vous pouvez afficher et tester le déclencheur dans. AWS CodeCommit Le test du déclencheur exécute la fonction en réponse aux événements de référentiel que vous spécifiez.

Pour afficher et tester le déclencheur de la fonction Lambda
  1. Ouvrez la CodeCommit console sur https://console.aws.amazon.com/codesuite/codecommit/home.

  2. Dans Repositories (Référentiels), choisissez le référentiel dans lequel vous souhaitez afficher les déclencheurs.

  3. Dans le volet de navigation pour le référentiel, choisissez Paramètres, puis Déclencheurs.

  4. Vérifiez la liste des déclencheurs du référentiel. Vous devriez voir le déclencheur que vous avez créé dans la console Lambda. Choisissez-le dans la liste, puis choisissez Test trigger (Tester le déclencheur). Cette option essaie d'appeler la fonction avec des exemples de données sur votre référentiel, notamment l'ID de la validation la plus récente pour le référentiel. (Si aucun historique n'existe, des exemples de valeurs constitués de zéros sont générés à la place.) Cela vous permet de vérifier que vous avez correctement configuré l'accès entre AWS CodeCommit et la fonction Lambda.

  5. Pour vérifier davantage les fonctionnalités du déclencheur, créez une validation et transmettez-la au référentiel où vous avez configuré le déclencheur. Vous devriez voir une réponse de la fonction Lambda dans l'onglet Surveillance pour cette fonction dans la console Lambda. Dans l'onglet Surveillance, choisissez Afficher les connexions CloudWatch. La CloudWatch console s'ouvre dans un nouvel onglet et affiche les événements relatifs à votre fonction. Sélectionnez dans la liste le flux du journal qui correspond au moment où vous avez transmis votre validation. Des données d'événement similaires à ce qui suit doivent s'afficher :

    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