Fase 3: Creare una funzione Lambda dell'hook del ciclo di vita - AWS CodeDeploy

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Fase 3: Creare una funzione Lambda dell'hook del ciclo di vita

In questa sezione, implementerai una funzione Lambda per l'hook della tua ECS distribuzione AmazonAfterAllowTestTraffic. La funzione Lambda esegue un test di convalida prima dell'installazione dell'ECSapplicazione Amazon aggiornata. Per questo tutorial, viene restituita la funzione Lambda. Succeeded Durante una distribuzione reale, i test di convalida restituiscono Succeeded o Failed, a seconda del risultato del test di convalida. Inoltre, durante un'implementazione nel mondo reale, puoi implementare una funzione di test Lambda per uno o più degli altri hook di eventi del ciclo di vita della ECS distribuzione di Amazon (BeforeInstall,, AfterInstall e). BeforeAllowTraffic AfterAllowTraffic Per ulteriori informazioni, consulta Elenco degli hook relativi agli eventi del ciclo di vita per una distribuzione Amazon ECS.

È necessario un IAM ruolo per creare la funzione Lambda. Il ruolo concede alla funzione Lambda il permesso di scrivere CloudWatch nei registri e impostare lo stato di un hook del ciclo di CodeDeploy vita.

Per creare un ruolo IAM
  1. Apri la console all'indirizzo. IAM https://console.aws.amazon.com/iam/

  2. Nel riquadro di navigazione selezionare Roles (Ruoli), quindi Create role (Crea ruolo).

  3. Creare un ruolo con le seguenti proprietà:

    • Trusted entity (Entità attendibile): AWS Lambda.

    • Autorizzazioni: AWSLambdaBasicExecutionRole. Ciò concede alla funzione Lambda il permesso di scrivere CloudWatch nei registri.

    • Nome ruolo: lambda-cli-hook-role.

    Per ulteriori informazioni, consulta Creare un AWS Lambda ruolo di esecuzione.

  4. Collega l'autorizzazione codedeploy:PutLifecycleEventHookExecutionStatus al ruolo creato. Ciò concede alle funzioni Lambda l'autorizzazione a impostare lo stato di CodeDeploy un hook del ciclo di vita durante una distribuzione. Per ulteriori informazioni, consulta Aggiungere i permessi di IAM identità nella Guida per l'AWS Identity and Access Management utente e nella Guida di riferimento. PutLifecycleEventHookExecutionStatusCodeDeploy API

Per creare una funzione Lambda AfterAllowTestTraffic con hook
  1. Crea un file denominato AfterAllowTestTraffic.js con i seguenti contenuti.

    '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"); } }); }
  2. Crea un pacchetto di distribuzione Lambda.

    zip AfterAllowTestTraffic.zip AfterAllowTestTraffic.js
  3. Usa il create-function comando per creare una funzione Lambda per il tuo AfterAllowTestTraffic 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
  4. Prendi nota della tua funzione Lambda ARN nella create-function risposta. La usi ARN quando aggiorni il AppSpec file della CodeDeploy distribuzione nel passaggio successivo.