

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
<a name="how-to-notify-lambda"></a>

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 l'URL utilisée pour cloner le référentiel dans un journal Amazon CloudWatch . 

**Topics**
+ [Créer la fonction Lambda](#how-to-notify-lambda-create-function)
+ [Afficher le déclencheur de la fonction Lambda dans le référentiel AWS CodeCommit](#how-to-notify-lam-view)

## Créer la fonction Lambda
<a name="how-to-notify-lambda-create-function"></a>

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/](https://console.aws.amazon.com/lambda/).

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

1. Sur la page **Create function**, sélectionnez **Author from scratch**. Dans **Nom de la fonction**, donnez un nom à la fonction, par exemple*MyLambdaFunctionforCodeCommit*. Dans **Exécution**, choisissez la langue que vous souhaitez utiliser pour écrire votre fonction, puis choisissez **Créer une fonction**.

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

1.  Dans **Configuration **CodeCommit**du déclencheur**, choisissez dans la liste déroulante des services.   
![\[Création d'un référentiel à partir de la console\]](http://docs.aws.amazon.com/fr_fr/codecommit/latest/userguide/images/codecommit-lambda-trigger.png)

    
   + 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 canal IRC 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**.

1. 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**.

1. 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
   ```

1. Dans l'onglet **Autorisations**, dans **Rôle d'exécution**, choisissez le rôle pour l'ouvrir dans la console IAM. 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
<a name="how-to-notify-lam-view"></a>

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](https://console.aws.amazon.com/codesuite/codecommit/home).

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

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

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

1. 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
   ```