Etapa 3: Criar uma função do Lambda de gancho do ciclo de vida - AWS CodeDeploy

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Etapa 3: Criar uma função do Lambda de gancho do ciclo de vida

Nesta seção, você implementa uma função do Lambda para o hook do AfterAllowTestTraffic da implantação do Amazon ECS. A função do Lambda executa um teste de validação antes do aplicativo do Amazon ECS atualizado ser instalado. Para este tutorial, a função do Lambda retorna Succeeded. Durante uma implantação do mundo real, os testes de validação retornam Succeeded ou Failed, dependendo do resultado do teste de validação. Além disso, durante uma implantação do mundo real, você pode implementar uma função de teste do Lambda para um ou mais dos outros hooks de evento do ciclo de vida da implantação do Amazon ECS (BeforeInstall, AfterInstall, BeforeAllowTraffic e AfterAllowTraffic). Para ter mais informações, consulte Lista de hooks do evento do ciclo de vida para uma implantação Amazon ECS.

Um perfil do IAM é necessário para criar a função do Lambda. A função concede à função Lambda permissão para gravar em CloudWatch registros e definir o status de um gancho do ciclo de CodeDeploy vida.

Para criar uma perfil do IAM
  1. Abra o console IAM em https://console.aws.amazon.com/iam/.

  2. No painel de navegação, escolha Roles (Funções) e Create role (Criar função).

  3. Crie uma função com as seguintes propriedades:

    • Trusted entity (Entidade confiável): AWS Lambda.

    • Permissões: AWSLambdaBasicExecutionRole. Isso concede à sua função Lambda permissão para CloudWatch gravar em registros.

    • Nome da função: lambda-cli-hook-role.

    Para obter mais informações, consulte Criar uma função AWS Lambda de execução.

  4. Anexe a permissão codedeploy:PutLifecycleEventHookExecutionStatus à função que você criou. Isso concede às suas funções do Lambda permissão para definir o status de um gancho do CodeDeploy ciclo de vida durante uma implantação. Para obter mais informações, consulte Adicionar permissões de identidade do IAM no Guia AWS Identity and Access Management do usuário e PutLifecycleEventHookExecutionStatusna Referência da CodeDeploy API.

Como criar uma função do Lambda de hook do AfterAllowTestTraffic
  1. Crie um arquivo denominado AfterAllowTestTraffic.js com o seguinte conteúdo:

    '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. Crie um pacote de implantação do Lambda.

    zip AfterAllowTestTraffic.zip AfterAllowTestTraffic.js
  3. Use o comando create-function para criar uma função do Lambda para o hook do 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 o ARN da função do Lambda na resposta do create-function. Você usa esse ARN ao atualizar o AppSpec arquivo de CodeDeploy implantação na próxima etapa.