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.
Étape 3 : Création d'une fonction Lambda Lifecycle Hook
Dans cette section, vous implémentez une fonction Lambda pour le hook de AfterAllowTestTraffic
votre ECS déploiement Amazon. La fonction Lambda exécute un test de validation avant l'installation de l'ECSapplication Amazon mise à jour. Pour ce didacticiel, la fonction Lambda est renvoyée. Succeeded
Lors d'un déploiement réel, les tests de validation renvoient Succeeded
ou Failed
, en fonction du résultat du test de validation. Lors d'un déploiement dans le monde réel, vous pouvez également implémenter une fonction de test Lambda pour un ou plusieurs autres hooks d'événements du cycle de vie du ECS déploiement Amazon (BeforeInstall
, AfterInstall
BeforeAllowTraffic
, etAfterAllowTraffic
). Pour de plus amples informations, veuillez consulter Liste des accroches d'événements du cycle de vie pour un ECS déploiement sur Amazon.
Un IAM rôle est requis pour créer votre fonction Lambda. Le rôle accorde à la fonction Lambda l'autorisation d'écrire dans CloudWatch Logs et de définir l'état d'un hook du CodeDeploy cycle de vie.
Pour créer un rôle IAM
-
Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/
. -
Sélectionnez Rôles dans le volet de navigation, puis Créer un rôle.
-
Créez un rôle avec les propriétés suivantes :
-
Entité de confiance : AWS Lambda.
-
Autorisations : AWSLambdaBasicExecutionRole. Cela donne à votre fonction Lambda l'autorisation d'écrire dans Logs. CloudWatch
-
Nom de rôle :
lambda-cli-hook-role
.
Pour plus d'informations, consultez la section Création d'un rôle AWS Lambda d'exécution.
-
-
Attachez l'autorisation
codedeploy:PutLifecycleEventHookExecutionStatus
au rôle que vous avez créé. Cela donne à vos fonctions Lambda l'autorisation de définir le statut d'un hook de CodeDeploy cycle de vie lors d'un déploiement. Pour plus d'informations, consultez la section Ajouter des autorisations d'IAMidentité dans le guide de AWS Identity and Access Management l'utilisateur et PutLifecycleEventHookExecutionStatusdans la CodeDeploy APIréférence.
Pour créer une fonction Lambda de type AfterAllowTestTraffic
hook
-
Créez un fichier nommé
AfterAllowTestTraffic.js
avec les contenus suivants.'use strict'; const AWS = require('aws-sdk'); const codedeploy = new AWS.CodeDeploy({apiVersion: '2014-10-06'}); exports.handler = (event, context, callback) => { console.log("Entering AfterAllowTestTraffic hook."); // Read the DeploymentId and LifecycleEventHookExecutionId from the event payload var deploymentId = event.DeploymentId; var lifecycleEventHookExecutionId = event.LifecycleEventHookExecutionId; var validationTestResult = "Failed"; // Perform AfterAllowTestTraffic validation tests here. Set the test result // to "Succeeded" for this tutorial. console.log("This is where AfterAllowTestTraffic validation tests happen.") validationTestResult = "Succeeded"; // Complete the AfterAllowTestTraffic hook by sending CodeDeploy the validation status var params = { deploymentId: deploymentId, lifecycleEventHookExecutionId: lifecycleEventHookExecutionId, status: validationTestResult // status can be 'Succeeded' or 'Failed' }; // Pass CodeDeploy the prepared validation test results. codedeploy.putLifecycleEventHookExecutionStatus(params, function(err, data) { if (err) { // Validation failed. console.log('AfterAllowTestTraffic validation tests failed'); console.log(err, err.stack); callback("CodeDeploy Status update failed"); } else { // Validation succeeded. console.log("AfterAllowTestTraffic validation tests succeeded"); callback(null, "AfterAllowTestTraffic validation tests succeeded"); } }); }
-
Créez un package de déploiement Lambda.
zip AfterAllowTestTraffic.zip AfterAllowTestTraffic.js
-
Utilisez la
create-function
commande pour créer une fonction Lambda pour votreAfterAllowTestTraffic
hook.aws lambda create-function --function-name AfterAllowTestTraffic \ --zip-file fileb://AfterAllowTestTraffic.zip \ --handler AfterAllowTestTraffic.handler \ --runtime nodejs10.x \ --role arn:aws:iam::
aws-account-id
:role/lambda-cli-hook-role -
Notez votre fonction Lambda ARN dans la
create-function
réponse. Vous l'utiliserez ARN lorsque vous mettrez à jour le AppSpec fichier de votre CodeDeploy déploiement à l'étape suivante.