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 Lambda para o gancho da AfterAllowTestTraffic sua ECS implantação na Amazon. A função Lambda executa um teste de validação antes da instalação do ECS aplicativo Amazon atualizado. 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 no mundo real, você pode implementar uma função de teste Lambda para um ou mais dos outros ganchos de eventos do ciclo de vida de ECS implantação da Amazon (BeforeInstall,,, AfterInstall e). BeforeAllowTraffic AfterAllowTraffic Para obter mais informações, consulte Lista de ganchos de eventos de ciclo de vida para uma implantação da Amazon ECS.

É necessário um IAM papel para criar sua função 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 função do IAM
  1. Abra o IAM console 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 IAM identidade no Guia AWS Identity and Access Management do usuário e PutLifecycleEventHookExecutionStatusna CodeDeploy APIReferência.

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 sua função Lambda ARN na create-function resposta. Você usa isso ARN ao atualizar o AppSpec arquivo de CodeDeploy implantação na próxima etapa.