Exemple : créer un déclencheur AWS CodeCommit pour une AWS Lambda fonction existante - 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 déclencheur AWS CodeCommit pour une AWS Lambda fonction existante

Le moyen le plus simple de créer un déclencheur qui invoque une fonction Lambda est de créer ce déclencheur dans la console Lambda. Cette intégration intégrée garantit que CodeCommit vous disposez des autorisations requises pour exécuter la fonction. Pour ajouter un déclencheur pour une fonction Lambda existante, accédez à la console Lambda et choisissez la fonction. Sur l'onglet Déclencheurs de la fonction, suivez les étapes dans Ajouter un déclencheur. Ces étapes sont similaires à celles affichées dans Créer la fonction Lambda.

Vous pouvez également créer un déclencheur pour une fonction Lambda dans un CodeCommit référentiel. Pour ce faire, vous devez choisir une fonction Lambda existante à invoquer. Cela nécessite également que vous configuriez manuellement les autorisations requises CodeCommit pour exécuter la fonction.

Configurer manuellement les autorisations pour autoriser l'exécution CodeCommit d'une fonction Lambda

Si vous créez un déclencheur CodeCommit qui invoque une fonction Lambda, vous devez configurer manuellement les autorisations CodeCommit permettant d'exécuter la fonction Lambda. Pour éviter cette configuration manuelle, pensez plutôt à créer le déclencheur de la fonction dans la console Lambda.

Pour autoriser CodeCommit l'exécution d'une fonction Lambda
  1. Ouvrez un éditeur de texte brut et créez un JSON fichier qui spécifie le nom de la fonction Lambda, les détails du CodeCommit référentiel et les actions que vous souhaitez autoriser dans Lambda, comme suit :

    { "FunctionName": "MyCodeCommitFunction", "StatementId": "1", "Action": "lambda:InvokeFunction", "Principal": "codecommit.amazonaws.com", "SourceArn": "arn:aws:codecommit:us-east-1:111122223333:MyDemoRepo", "SourceAccount": "111122223333" }
  2. Enregistrez le fichier sous forme de JSON fichier avec un nom facile à mémoriser (par exemple, AllowAccessfromMyDemoRepo.json).

  3. À l'aide du JSON fichier que vous venez de créer, sur le terminal (Linux, macOS ou Unix) ou sur la ligne de commande (Windows), exécutez la aws lambda add-permissions commande pour ajouter une autorisation à la politique de ressources associée à votre fonction Lambda :

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

    Cette commande renvoie la déclaration JSON de politique que vous venez d'ajouter, comme suit :

    { "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\"}" }

    Pour plus d'informations sur les politiques de ressources pour les fonctions Lambda, consultez la section Les modèles AddPermissiond'événements Pull/Push du guide de l'utilisateur.AWS Lambda

  4. Connectez-vous à la IAM console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/iam/.

  5. Dans le volet de navigation du tableau de bord, sélectionnez Rôles, puis dans la liste des rôles, sélectionnez lambda_basic_execution.

  6. Sur la page récapitulative pour le rôle, sélectionnez l'onglet Autorisations, et dans Stratégies en ligne, choisissez Créer une stratégie de rôle.

  7. Sur la page Réglez les permissions, choisissez Générateur de stratégies, puis Sélectionner.

  8. Sur la page Edit Permissions, procédez comme suit :

    • Dans Effect, choisissez Allow.

    • Dans AWS Service, sélectionnez AWS CodeCommit.

    • Dans Actions, sélectionnez GetRepository.

    • Dans Amazon Resource Name (ARN), entrez le ARN nom du référentiel (par exemple,arn:aws:codecommit:us-east-1:111122223333:MyDemoRepo).

    Cliquez sur Ajouter une instruction, puis sur Étape suivante.

  9. Sur la page Review Policy (Réviser la stratégie), sélectionnez Apply Policy (Appliquer la stratégie).

    Votre déclaration de stratégie doit être similaire à l'exemple suivant :

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

Création d'un déclencheur pour la fonction Lambda dans un CodeCommit référentiel (console)

Après avoir créé la fonction Lambda, vous pouvez créer un déclencheur CodeCommit qui exécute la fonction en réponse aux événements du référentiel que vous spécifiez.

Note

Avant de pouvoir tester ou exécuter avec succès le déclencheur de l'exemple, vous devez configurer les politiques qui permettent CodeCommit d'invoquer la fonction et la fonction Lambda pour obtenir des informations sur le référentiel. Pour de plus amples informations, veuillez consulter Pour autoriser CodeCommit l'exécution d'une fonction Lambda.

Pour créer un déclencheur pour une fonction Lambda
  1. Ouvrez la CodeCommit console sur https://console.aws.amazon.com/codesuite/codecommit/home.

  2. Dans Référentiels, sélectionnez le référentiel dans lequel vous souhaitez créer des déclencheurs pour des événements de référentiel.

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

  4. Choisissez Create trigger.

  5. Sur la page Créer un déclencheur, procédez comme suit :

    • 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 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, conservez la sélection vide, car cette option par défaut applique automatiquement le déclencheur à toutes les branches. Si vous souhaitez que ce déclencheur s'applique uniquement à certaines branches spécifiques, choisissez jusqu'à 10 noms de branches dans la liste des branches du référentiel.

    • Dans Choose the service to use (Choisissez le service à utiliser), choisissez AWS Lambda.

    • Dans Fonction Lambda, choisissez le nom de la fonction dans la liste ou entrez le nom ARN de la fonction.

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

  6. (Facultatif) 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 CodeCommit et la fonction Lambda.

  7. Choisissez Create trigger (Créer un déclencheur) afin de finaliser la création du déclencheur.

  8. Pour vérifier les fonctionnalités du déclencheur, créez une validation et transmettez-la vers le 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.

Création d'un déclencheur pour une fonction Lambda pour un CodeCommit référentiel ()AWS CLI

Vous pouvez également utiliser la ligne de commande pour créer un déclencheur pour une fonction Lambda en réponse à des événements CodeCommit du référentiel, par exemple lorsque quelqu'un envoie un commit vers votre dépôt.

Pour créer un déclencheur pour une fonction Lambda
  1. Ouvrez un éditeur de texte brut et créez un JSON fichier qui spécifie :

    • Nom de la fonction Lambda.

    • Le référentiel et les branches que vous souhaitez surveiller avec ce déclencheur. (Si vous ne spécifiez pas de branche, le déclencheur s'applique à toutes les branches du référentiel).

    • Les événements qui peuvent activer ce déclencheur.

    Enregistrez le fichier.

    Par exemple, si vous souhaitez créer un déclencheur pour un référentiel nommé MyDemoRepo qui publie tous les événements du référentiel dans une fonction Lambda nommée MyCodeCommitFunction pour deux succursales, main and preprod:

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

    Il doit y avoir un bloc de déclenchement dans le déclencheur JSON pour chaque déclencheur d'un référentiel. Pour créer plusieurs déclencheurs pour un référentiel, incluez des blocs supplémentaires dans leJSON. N'oubliez pas que tous les déclencheurs créés dans ce fichier sont pour le référentiel spécifié. Vous ne pouvez pas créer de déclencheurs pour plusieurs référentiels dans un seul JSON fichier. Par exemple, si vous souhaitez créer deux déclencheurs pour un référentiel, vous pouvez créer un JSON fichier avec deux blocs de déclencheurs. Dans l'exemple suivant, aucune branche n'est spécifiée dans le deuxième bloc de déclencheur ; le déclencheur s'applique donc à toutes les branches :

    { "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" ] } ] }

    Vous pouvez créer des déclencheurs pour les événements que vous spécifiez, par exemple si une validation est transmise vers un référentiel. Les types d'événements comprennent :

    • all pour tous les événements dans le référentiel et les branches spécifiés.

    • updateReference pour quand des validations sont transmises vers le référentiel et les branches spécifiés.

    • createReference pour quand une nouvelle branche ou balise est créée dans le référentiel spécifié.

    • deleteReference pour quand une branche ou balise est supprimée dans le référentiel spécifié.

    Note

    Vous pouvez utiliser plusieurs types d'événement dans un déclencheur. Toutefois, si vous spécifiez all, vous ne pouvez pas indiquer d'autres événements.

    Pour afficher la liste complète des types d'événement valides, depuis le terminal ou l'invite de commande, saisissez aws codecommit put-repository-triggers help.

    En outre, vous pouvez inclure une chaîne customData (par exemple, un nom de IRC canal que les développeurs utilisent lorsqu'ils discutent du développement dans ce référentiel). Ce champ est une chaîne. Celle-ci ne peut pas être utilisée pour transmettre des paramètres dynamiques. Cette chaîne est ajoutée en tant qu'attribut à la chaîne CodeCommit JSON renvoyée en réponse au déclencheur.

  2. (Facultatif) Depuis un terminal ou l'invite de commande, exécutez la commande test-repository-triggers. Par exemple, ce qui suit est utilisé pour vérifier que le JSON fichier nommé trigger.json est valide et CodeCommit peut déclencher la fonction Lambda. Ce test utilise des exemples de données pour déclencher la fonction si aucune donnée réelle n'est disponible.

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

    Si elle aboutit, cette commande renvoie des informations similaires à ce qui suit :

    { "successfulExecutions": [ "MyLambdaFunctionTrigger" ], "failedExecutions": [] }
  3. Sur un terminal ou une invite de commande, exécutez la put-repository-triggers commande pour créer le déclencheur dans CodeCommit. Par exemple, pour utiliser un JSON fichier nommé trigger.json pour créer le déclencheur :

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

    Cette commande renvoie un ID de configuration semblable à ce qui suit :

    { "configurationId": "0123456-I-AM-AN-EXAMPLE" }
  4. Pour afficher la configuration du déclencheur, exécutez la commande get-repository-triggers en spécifiant le nom du référentiel :

    aws codecommit get-repository-triggers --repository-name MyDemoRepo

    Cette commande renvoie la structure de tous les déclencheurs configurés pour le référentiel, similaire à ce qui suit :

    { "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. Pour tester les fonctionnalités du déclencheur, créez une validation et transmettez-la vers le 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.