Como configurar funções do Lambda como destinos para Application Load Balancers e solucionar problemas relacionados?

7 minuto de leitura
0

Preciso configurar funções do AWS Lambda como destinos para Application Load Balancers e saber como solucionar problemas que eu possa encontrar.

Resolução

O Elastic Load Balancing oferece suporte ao uso de funções do Lambda como destinos para processar solicitações de Application Load Balancers. Para mais informações, consulte Using AWS Lambda with an Application Load Balancer (Usar o AWS Lambda com um Application Load Balancer).

Etapa 1: Criar uma função do Lambda

1.    Abra a página Functions (Funções) do console do Lambda.

2.    Escolha Create function (Criar função).

3.    Escolha Author from scratch (Criar do zero).

4.    Insira um Function name (Nome de função).

5.    No menu suspenso Runtime, escolha Python 3.9 como o tempo de execução desse cenário.

6.    Em Execution role (Perfil de execução), escolha Create a new role with basic Lambda permissions (Criar um perfil com permissões básicas do Lambda).

Observação: para mais informações sobre perfis de execução, consulte Perfil de execução do Lambda.

7.    Escolha Create function (Criar função).

8.     Depois que a função for criada, escolha a guia Code (Código). Na seção Code source (Origem do código), substitua o código da função existente pelo seguinte código:

import json

def lambda_handler(event, context):
  return {
    "statusCode": 200,
    "statusDescription": "200 OK",
    "headers": {
      "Content-Type": "text/html"
    },
    "isBase64Encoded": False,
    "body": "<h1>Hello from Lambda!</h1>"
  }

9.    Escolha Deploy (Implantar).

Etapa 2: Criar um grupo de destinos para a função do Lambda

Observação: para mais informações, consulte Etapa 1: Configure um grupo de destino.

1.    Abra o console do Amazon EC2.

2.    No painel de navegação, em Load Balancing, (Balanceamento de carga), escolha Target Groups (Grupos de destino).

3.    Escolha Create target group (Criar grupo de destino).

4.    Em Basic configuration (Configuração básica), em Choose a target type (Escolha um tipo de destino), escolha Função do Lambda.

5.    Em Target group name (Nome do grupo de destino), digite um nome para o novo grupo de destino.

6.    (Opcional) Para ativar verificações de integridade, na seção Health Checks (Verificações de integridade), escolha Enable (Habilitar).

7.    (Opcional) Adicione uma ou mais etiquetas, da seguinte maneira:

  • Expanda a seção Tags (Etiquetas).
  • Escolha Add tag (Adicionar etiqueta).
  • Insira a chave da etiqueta e o valor da etiqueta.

8.    Escolha Next (Avançar).

9.    Escolha uma função do Lambda como destino.
-ou-
Escolha Add a function later (Adicionar uma função mais tarde) para especificar uma função do Lambda mais tarde.

10.    Escolha Create target group (Criar grupo de destino).

Observação: as permissões do balanceador de carga para invocar uma função do Lambda são concedidas de maneira diferente, dependendo do método usado para criar um grupo de destino e registrar uma função. Para mais informações, consulte Permissions to invoke the Lambda function (Permissões para invocar a função do Lambda).

Etapa 3: Configurar um balanceador de carga e um receptor

Para configurar um balanceador de carga e um receptor, siga as etapas em Etapa 3: Configurar um balanceador de carga e um receptor.

Etapa 4: Testar o balanceador de carga

Para testar o balanceador de carga, siga as etapas em Etapa 4: Testar o balanceador de carga. Se a configuração estiver funcionando, o navegador exibirá a mensagem "Hello from Lambda!" (“Olá do Lambda!”)

Observação: se você não tiver ativado as verificações de integridade para sua função do Lambda, o status de integridade será Não disponível. É possível testar o balanceador de carga sem uma verificação de integridade, pois isso não afeta as funções do Lambda como destinos para Application Load Balancers.

Limites de funções do Lambda como destinos

Para mais informações sobre os limites de funções do Lambda como destinos, consulte Lambda functions as targets (Funções do Lambda como destinos) e revise as informações em Limites.

Os grupos-alvo do Lambda estão limitados a um único destino de função do Lambda. Para mais informações, consulte Prepare the Lambda function (Preparar a função do Lambda).

Erros comuns de funções do Lambda como destinos

“A conexão atingiu o tempo limite”

Esse erro indica que os grupos de segurança do seu balanceador de carga não permitem tráfego na porta do receptor. Para resolver esse erro, gerencie seus grupos de segurança e certifique-se de que as Regras de entrada do seu grupo de segurança permitam tráfego de entrada nas portas do receptor. Não são necessárias regras externas para grupos de segurança porque estes têm reconhecimento de estado. As respostas ao tráfego de entrada permitido podem fluir, independentemente das regras de saída.

“O grupo-alvo não foi encontrado”

Esse erro indica que o grupo de destino foi excluído. Para resolver esse erro, exclua a política de recursos com o grupo de destino excluído. A exclusão da política de recursos remove o gatilho.

1.    Abra a página Functions (Funções) do console do Lambda.

2.    Escolha a função do Lambda relacionada ao grupo de destino.

3.    Escolha a guia Configuration (Configuração) e, em seguida, escolha Permissions (Permissões).

4.    Role para baixo até a seção Resource-based policy statements (Declarações de política baseadas em recursos) e selecione a política que você deseja remover.

5.    Escolha Delete (Excluir) e depois escolha Delete no alerta de aviso para confirmar que você deseja excluir permanentemente a declaração de política da política de recursos.

Também é possível usar o comando remove-permission da AWS Command Line Interface (AWS CLI) para remover a política baseada em recursos:

Observação: no comando a seguir, substitua EXAMPLE_FUNCTION pelo nome da função do Lambda e EXAMPLE_ID pelo ID da instrução.

aws lambda remove-permission --function-name EXAMPLE_FUNCTION --statement-id EXAMPLE_ID

Observação: se você receber erros ao executar comandos da AWS CLI, certifique-se de estar utilizando a versão mais recente da AWS CLI.

“Ocorreu um erro (AccessDenied) ao chamar a operação RegisterTargets: a entidade principal elasticloadbalancing não tem permissão para invocar arn <Lambda ARN> do grupo de destino <Target Group ARN>

Quando uma solicitação para uma função do Lambda falha, o balanceador de carga armazena um código de motivo no campo error_reason do log de acesso. O balanceador de carga também incrementa a métrica correspondente do Amazon CloudWatch. Para mais informações, consulte Error reason codes (Códigos de motivos de erros).

Registre uma função do Lambda como destino usando a AWS CLI. Use o comando add-permission da AWS CLI para conceder permissão ao Elastic Load Balancing para invocar sua função do Lambda.

Erros conhecidos de funções do Lambda como destinos

“Novas métricas relacionadas a esse recurso (LambdaUserError, LambdaInternalError, LambdaTargetProcessedBytes e StandardProcessedBytes) não estão disponíveis no painel de monitoramento do console do ELB.”

Acesse as novas métricas do Lambda no console do Amazon CloudWatch.

“A nova API ModifyTargetGroup permite configurar o valor de tempo limite da verificação de integridade de 120 segundos, mas o console do ELB não permite valores maiores que 60 segundos.”

Para configurar um tempo limite de verificação de integridade maior que 60 segundos, chame a API ModifyTargetGroup por meio da AWS CLI. Você pode configurar o valor para no máximo 120 segundos.

Exemplo do comando modify-target-group:

Observação: no comando a seguir, substitua EXAMPLE_TARGET_GROUP_ARN pelo ARN do seu grupo-alvo e EXAMPLE_REGION pelo código da sua região da AWS.

aws elbv2 modify-target-group \
--target-group-arn EXAMPLE_TARGET_GROUP_ARN \
--health-check-timeout-seconds 120 \
--region EXAMPLE_REGION

Informações relacionadas

Funções do Lambda como destinos

Versionamento e aliases de funções do Lambda

Mudança de tráfego usando aliases

AWS OFICIAL
AWS OFICIALAtualizada há um ano