Tutoriel : Utilisation de variables avec des actions d'appel Lambda - AWS CodePipeline

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.

Tutoriel : Utilisation de variables avec des actions d'appel Lambda

Une action d'appel Lambda peut utiliser les variables d'une autre action dans le cadre de son entrée et renvoyer de nouvelles variables avec sa sortie. Pour plus d'informations sur les variables pour les actions dans CodePipeline, voirRéférence aux variables.

Important

Dans le cadre de la création d'un pipeline, un compartiment d'artefacts S3 fourni par le client sera utilisé CodePipeline pour les artefacts. (Ceci est différent du compartiment utilisé pour une action source S3.) Si le compartiment d'artefacts S3 se trouve dans un compte différent de celui de votre pipeline, assurez-vous que le compartiment d'artefacts S3 appartient Comptes AWS à une personne sûre et fiable.

À la fin de ce tutoriel, vous aurez :

  • Une action d'appel Lambda qui :

    • Consomme la CommitId variable d'une action CodeCommit source

    • Émet trois nouvelles variables : dateTime, testRunId et region

  • Une action d'approbation manuelle qui utilise les nouvelles variables de votre action d'appel Lambda pour fournir un test URL et un ID d'exécution de test

  • Pipeline mis à jour avec les nouvelles actions

Prérequis

Avant de commencer, les prérequis suivants doivent être remplis :

Étape 1 : Créer une fonction Lambda

Procédez comme suit pour créer une fonction Lambda et un rôle d'exécution Lambda. Vous ajoutez l'action Lambda à votre pipeline après avoir créé la fonction Lambda.

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

  2. Sélectionnez Create function (Créer une fonction). Laissez l'option Créer à partir de zéro sélectionnée.

  3. Dans Nom de la fonction, entrez le nom de votre fonction, par exemple myInvokeFunction. Dans Runtime, laissez l'option par défaut sélectionnée.

  4. Développez Choose or create an execution role (Choisir ou créer un rôle d'exécution). Choisissez Create a new role with basic Lambda permissions (Créer un rôle avec les autorisations Lambda standard).

  5. Sélectionnez Create function (Créer une fonction).

  6. Pour utiliser une variable d'une autre action, elle devra être passée à UserParameters dans la configuration de l'action d'appel (Invoke) Lambda. Vous allez configurer l'action dans notre pipeline plus tard dans le didacticiel, mais vous ajouterez le code en supposant que la variable est transmise.

    const commitId = event["CodePipeline.job"].data.actionConfiguration.configuration.UserParameters;

    Pour créer de nouvelles variables, définissez une propriété appelée outputVariables sur l'entrée avec la valeur putJobSuccessResult. Notez que vous ne pouvez pas produire de variables dans le cadre d'un fichier putJobFailureResult.

    const successInput = { jobId: jobId, outputVariables: { testRunId: Math.floor(Math.random() * 1000).toString(), dateTime: Date(Date.now()).toString(), region: lambdaRegion } };

    Dans votre nouvelle fonction, laissez l'option Modifier le code en ligne sélectionnée et collez l'exemple de code suivant sous index.js.

    import { CodePipeline } from '@aws-sdk/client-codepipeline'; export const handler = async (event, context) => { const codepipeline = new CodePipeline({}); // Retrieve the Job ID from the Lambda action const jobId = event["CodePipeline.job"].id; // Retrieve UserParameters const params = event["CodePipeline.job"].data.actionConfiguration.configuration.UserParameters; // The region from where the lambda function is being executed const lambdaRegion = process.env.AWS_REGION; // Notify CodePipeline of a successful job const putJobSuccess = async (message) => { const params = { jobId: jobId, outputVariables: { testRunId: Math.floor(Math.random() * 1000).toString(), dateTime: Date(Date.now()).toString(), region: lambdaRegion } }; try { await codepipeline.putJobSuccessResult(params); return message; } catch (err) { throw err; } }; // Notify CodePipeline of a failed job const putJobFailure = async (message) => { const params = { jobId: jobId, failureDetails: { message: JSON.stringify(message), type: 'JobFailed', externalExecutionId: context.invokeid } }; try { await codepipeline.putJobFailureResult(params); throw message; } catch (err) { throw err; } }; try { console.log("Testing commit - " + params); // Your tests here // Succeed the job return await putJobSuccess("Tests passed."); } catch (ex) { // If any of the assertions failed then fail the job return await putJobFailure(ex); } };
  7. Choisissez Save (Enregistrer).

  8. Copiez le nom de la ressource Amazon (ARN) en haut de l'écran.

  9. Enfin, ouvrez la console AWS Identity and Access Management (IAM) à l'adresse https://console.aws.amazon.com/iam/. Modifiez le rôle d'exécution Lambda pour ajouter la politique suivante :. AWSCodePipelineCustomActionAccess Pour connaître les étapes à suivre pour créer un rôle d'exécution Lambda ou modifier la stratégie de rôle, veuillez consulter Étape 2 : Création de la fonction Lambda.

Étape 2 : ajouter une action d'appel Lambda et une action d'approbation manuelle à votre pipeline

Au cours de cette étape, vous ajoutez une action d'appel Lambda à votre pipeline. Vous ajoutez l'action dans le cadre d'une étape nommée Test. Le type d'action est une action d'appel. Vous ajoutez ensuite une action d'approbation manuelle après l'action d'appel.

Pour ajouter une action Lambda et une action d'approbation manuelle au pipeline
  1. Ouvrez la CodePipeline console à l'adresse https://console.aws.amazon.com/codepipeline/.

    Les noms de tous les pipelines associés à votre AWS compte sont affichés. Choisissez le pipeline dans lequel vous souhaitez ajouter l'action.

  2. Ajoutez l'action de test Lambda à votre pipeline.

    1. Pour modifier votre pipeline, choisissez Modifier. Ajoutez une étape après l'action source dans le pipeline existant. Entrez un nom pour l'étape, par exemple Test.

    2. Dans cette nouvelle étape, choisissez l'icône pour ajouter une action. Dans Nom de l'action, entrez le nom de l'action d'appel, par exemple Test_Commit.

    3. Dans Action provider, sélectionnez AWS Lambda.

    4. Dans Artefacts d'entrée, choisissez le nom de l'artefact de sortie de votre action source, tel que SourceArtifact.

    5. Dans Nom de la fonction, choisissez le nom de la fonction Lambda que vous avez créée.

    6. Dans Paramètres utilisateur, entrez la syntaxe de variable pour l'ID de CodeCommit validation. Cela crée la variable de sortie qui est résolue avec la validation à examiner et à approuver chaque fois que le pipeline est exécuté.

      #{SourceVariables.CommitId}
    7. Dans Variable namespace (Espace de noms de variables), ajoutez le nom de l'espace de noms, par exemple TestVariables.

    8. Sélectionnez Exécuté.

  3. Ajoutez l'action d'approbation manuelle à votre pipeline.

    1. Votre pipeline étant toujours en mode d'édition, ajoutez une étape après l'action d'appel. Entrez un nom pour l'étape, par exemple Approval.

    2. Dans cette nouvelle étape, choisissez l'icône pour ajouter une action. Dans Nom de l'action, entrez le nom de l'action d'approbation, par exemple Change_Approval.

    3. Dans Fournisseur d'action, choisissez Approbation manuelle.

    4. URLPour examen, construisez le URL en ajoutant la syntaxe de la region variable et de la CommitId variable. Veillez à utiliser les espaces de noms affectés aux actions qui fournissent les variables de sortie.

      Dans cet exemple, l'espace de noms SourceVariables par défaut est celui URL avec la syntaxe variable CodeCommit d'une action. La variable de sortie de région Lambda a l'espace de noms TestVariables. URLCela ressemble à ce qui suit.

      https://#{TestVariables.region}.console.aws.amazon.com/codesuite/codecommit/repositories/MyDemoRepo/commit/#{SourceVariables.CommitId}

      Dans Commentaires, élaborez le texte du message d'approbation en ajoutant la syntaxe de variable pour la variable testRunId. Dans cet exemple, la syntaxe URL de la variable de testRunId sortie Lambda contient l'TestVariablesespace de noms. Entrez le message suivant.

      Make sure to review the code before approving this action. Test Run ID: #{TestVariables.testRunId}
  4. Choisissez Effectué pour fermer l'écran d'édition de l'action, puis choisissez Effectué pour fermer l'écran d'édition de l'étape. Pour enregistrer le pipeline, choisissez Effectué. Le pipeline terminé contient désormais une structure avec les étapes source, de test, d'approbation et de déploiement.

    Choisissez Publier une modification pour exécuter la dernière modification via la structure du pipeline.

  5. Lorsque le pipeline atteint l'étape d'approbation manuelle, choisissez Vérification. Les variables résolues apparaissent sous la forme URL de l'ID de validation. Votre approbateur peut choisir le URL pour afficher le commit.

  6. Une fois le pipeline exécuté avec succès, vous pouvez également afficher les valeurs des variables sur la page de l'historique d'exécution des actions.