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 distribuzione Amazon ECS. AfterAllowTestTraffic La funzione Lambda esegue un test di convalida prima dell'installazione dell'applicazione Amazon ECS 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 una distribuzione nel mondo reale, puoi implementare una funzione di test Lambda per uno o più degli altri eventi del ciclo di vita della distribuzione Amazon ECS (BeforeInstall,, e). AfterInstall BeforeAllowTraffic AfterAllowTraffic Per ulteriori informazioni, consulta Elenco di eventi del ciclo di vita per una distribuzione Amazon ECS.

È necessario un ruolo IAM 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. Aprire la console IAM all'indirizzo 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 identità IAM nella Guida per l'AWS Identity and Access Management utente e PutLifecycleEventHookExecutionStatusnel riferimento API. CodeDeploy

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 dell'ARN della tua funzione Lambda nella risposta. create-function Questo ARN viene utilizzato quando si aggiorna il AppSpec file della CodeDeploy distribuzione nel passaggio successivo.