Paso 3: Creación de una función de Lambda de enlace de ciclo de vida - AWS CodeDeploy

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Paso 3: Creación de una función de Lambda de enlace de ciclo de vida

En esta sección, implementará una función Lambda para el enlace de su ECS implementación de AfterAllowTestTraffic Amazon. La función Lambda ejecuta una prueba de validación antes de instalar la ECS aplicación Amazon actualizada. En este tutorial, la función de Lambda devuelve Succeeded. Durante una implementación real, las pruebas de validación devuelven Succeeded o Failed, en función del resultado de la prueba de validación. Además, durante una implementación en el mundo real, puede implementar una función de prueba Lambda para uno o más de los demás enlaces de eventos del ciclo de vida de la ECS implementación de Amazon (BeforeInstall, AfterInstallBeforeAllowTraffic, yAfterAllowTraffic). Para obtener más información, consulte Lista de enlaces a eventos del ciclo de vida para una ECS implementación de Amazon.

Se necesita un IAM rol para crear la función Lambda. El rol otorga a la función Lambda permiso para escribir en los CloudWatch registros y establecer el estado de un enlace de CodeDeploy ciclo de vida.

Para crear un rol de IAM
  1. Abra la IAM consola en. https://console.aws.amazon.com/iam/

  2. En el panel de navegación, seleccione Roles (Roles) y, a continuación, seleccione Create role (Crear rol).

  3. Cree un rol con las propiedades siguientes:

    • Trusted entity (Entidad de confianza): AWS Lambda.

    • Permisos: AWSLambdaBasicExecutionRole. Esto le otorga a la función Lambda permiso para escribir en los registros. CloudWatch

    • Role name (Nombre de rol): lambda-cli-hook-role.

    Para obtener más información, consulte Crear un rol AWS Lambda de ejecución.

  4. Asocie el permiso codedeploy:PutLifecycleEventHookExecutionStatus al rol que ha creado. Esto otorga a sus funciones de Lambda permiso para establecer el estado de un enlace de CodeDeploy ciclo de vida durante una implementación. Para obtener más información, consulte Añadir permisos de IAM identidad en la Guía del AWS Identity and Access Management usuario y PutLifecycleEventHookExecutionStatusen la CodeDeploy APIReferencia.

Para crear una función de Lambda del enlace de AfterAllowTestTraffic
  1. Cree un archivo denominado AfterAllowTestTraffic.js con el siguiente contenido.

    '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. Cree un paquete de implementación de Lambda.

    zip AfterAllowTestTraffic.zip AfterAllowTestTraffic.js
  3. Utilice el comando create-function para crear una función de Lambda para el enlace de AfterAllowTestTraffic.

    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. Anote su función Lambda ARN en la create-function respuesta. Se usa para ARN actualizar el AppSpec archivo de la CodeDeploy implementación en el siguiente paso.