Testes e depuração das funções do Lambda@Edge - Amazon CloudFront

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á.

Testes e depuração das funções do Lambda@Edge

Este tópico inclui seções que descrevem estratégias para testar e depurar funções do Lambda@Edge. É importante testar o código da função Lambda @Edge de forma independente, para garantir que ele conclua a tarefa pretendida e fazer testes de integração para garantir que a função funcione corretamente com ela. CloudFront

Durante o teste de integração ou após a implantação da função, talvez seja necessário depurar CloudFront erros, como erros HTTP 5xx. Os erros podem ser uma resposta inválida retornada da função do Lambda, erros de execução quando a função é acionada ou erros devido a uma limitação de execução do serviço do Lambda. As seções neste tópico compartilham estratégias para determinar qual tipo de falha é o problema e, em seguida, as etapas que você pode realizar para corrigir o problema.

nota

Ao revisar arquivos de CloudWatch log ou métricas ao solucionar erros, lembre-se de que eles são exibidos ou armazenados na região mais próxima do local em que a função foi executada. Portanto, se você tiver um site ou aplicativo web com usuários no Reino Unido e tiver uma função Lambda associada à sua distribuição, por exemplo, deverá alterar a região para visualizar as CloudWatch métricas ou os arquivos de log da região de LondresAWS. Para obter mais informações, consulte o tópico sobre como Determinar a região do Lambda@Edge, mais adiante neste tópico.

Testes das suas funções do Lambda@Edge

Há duas etapas para testar a função do Lambda: teste autônomo e teste de integração.

Testar a funcionalidade autônoma

Antes de adicionar sua função Lambda CloudFront, certifique-se de testar a funcionalidade primeiro usando os recursos de teste no console Lambda ou usando outros métodos. Para obter mais informações sobre testes no console do Lambda, consulte a seção Invocar a função Lambda e verificar os resultados, logs e métricas em Criar uma função Lambda com o console no Guia do desenvolvedor do AWS Lambda.

Teste a operação da sua função em CloudFront

É importante concluir o teste de integração, em que sua função está associada a uma distribuição e é executada com base em um CloudFront evento. Certifique-se de que a função seja acionada para o evento correto e retorne uma resposta válida e correta para o CloudFront. Por exemplo, verifique se a estrutura do evento está correta, se somente cabeçalhos válidos estão incluídos e assim por diante.

Ao iterar no teste de integração com sua função no console Lambda, consulte as etapas no tutorial do Lambda @Edge ao modificar seu código ou alterar CloudFront o gatilho que chama sua função. Por exemplo, verifique se você está trabalhando em uma versão numerada da função, conforme descrito nesta etapa do tutorial: Etapa 4: adicionar um CloudFront gatilho para executar a função.

Ao fazer alterações e implantá-las, saiba que levará alguns minutos para que sua função e seus CloudFront gatilhos atualizados sejam replicados em todas as regiões. Isso geralmente leva alguns minutos, mas pode demorar até 15 minutos.

Você pode verificar se a replicação foi concluída acessando o CloudFront console e visualizando sua distribuição:

Verifique o status de distribuição para mudar de In Progress (Em progresso) para Deployed (Implantado), o que significa que sua função foi replicada. Em seguida, siga as etapas na próxima seção para verificar se a função funciona.

Esteja ciente de que o teste no console valida apenas a lógica da sua função e não aplica cotas de serviço (anteriormente conhecidas como limites) específicas do Lambda@Edge.

Identificando erros da função Lambda @Edge em CloudFront

Depois de verificar se a lógica da função funciona corretamente, você ainda poderá ver erros HTTP 5xx quando sua função for executada CloudFront. Os erros HTTP 5xx podem ser retornados por vários motivos, que podem incluir erros da função Lambda ou outros problemas no. CloudFront

  • Se você usa as funções do Lambda @Edge, pode usar gráficos no CloudFront console para ajudar a rastrear o que está causando o erro e, em seguida, trabalhar para corrigi-lo. Por exemplo, você pode ver se os erros HTTP 5xx são causados por CloudFront ou por funções Lambda e, em seguida, para funções específicas, você pode visualizar arquivos de log relacionados para investigar o problema.

  • Para solucionar erros de HTTP em geral em CloudFront, consulte as etapas de solução de problemas no tópico a seguir:Como solucionar problemas de respostas de erro da sua origem.

O que causa erros na função Lambda @Edge em CloudFront

Existem vários motivos pelos quais uma função do Lambda pode causar um erro HTTP 5xx, e as etapas de solução de problemas que você deve seguir dependem do tipo de erro. Os erros podem ser categorizados assim:

Um erro de execução de função do Lambda

Um erro de execução ocorre quando CloudFront não recebe uma resposta do Lambda porque há exceções não tratadas na função ou há um erro no código. Por exemplo, se o código incluir um retorno de chamada (erro). Para obter mais informações, consulte Erros da função do Lambda no Guia do desenvolvedor do AWS Lambda.

Uma resposta inválida da função Lambda é retornada para CloudFront

Depois que a função é executada, CloudFront recebe uma resposta do Lambda. Um erro será retornado se a estrutura do objeto da resposta não estiver em conformidade com o Estrutura de eventos do Lambda@Edge ou se a resposta contiver cabeçalhos inválidos ou outros campos inválidos.

A execução CloudFront é limitada devido às cotas do serviço Lambda (anteriormente conhecidas como limites)

O serviço do Lambda limita as execuções em cada região e retornará um erro se você exceder a cota.

Como determinar o tipo de falha

Para ajudá-lo a decidir onde se concentrar ao depurar e resolver os erros retornados CloudFront, é útil identificar por que CloudFront está retornando um erro HTTP. Para começar, você pode usar os gráficos fornecidos na seção Monitoramento do CloudFront console noAWS Management Console. Para obter mais informações sobre a visualização de gráficos na seção Monitoramento do CloudFront console, consulteMonitoramento de CloudFront métricas com a Amazon CloudWatch.

Os seguintes gráficos podem ser especialmente úteis ao verificar se os erros estão sendo retornados por origens ou por uma função do Lambda, e para restringir o tipo de problema quando se trata de um erro de função do Lambda.

Gráfico de taxas de erro

Um dos gráficos que você pode visualizar na guia Overview (Visão geral) para cada uma das suas distribuições é um gráfico Error rates (Taxas de erro). Esse gráfico exibe a taxa de erros como porcentagem do total de solicitações que chegam à sua distribuição. O gráfico mostra o total de taxa de erros, total de erros 4xx, total de erros 5xx e total de erros 5xx provenientes de funções Lambda. Com base no tipo de erro e volume, você pode executar etapas para investigar e solucionar o problema.


								Gráfico de taxas de erro para uma  CloudFront  distribuição
  • Se você encontrar erros do Lambda, você poderá investigar mais detalhadamente, observando os tipos específicos de erros retornados pela função. A guia Lambda@Edge errors (Erros do Lambda@Edge) inclui gráficos que categorizam os erros por tipo de função para ajudar a identificar o problema em uma função específica.

  • Se você encontrar CloudFront erros, poderá solucionar problemas e trabalhar para corrigir erros de origem ou alterar sua CloudFront configuração. Para ter mais informações, consulte Como solucionar problemas de respostas de erro da sua origem.

Gráficos de erros de execução e repostas de funções inválidas

A guia Lambda@Edge errors (Erros do Lambda@Edge) inclui gráficos que categorizam os erros do Lambda@Edge em uma distribuição específica, por tipo. Por exemplo, um gráfico mostra todos os erros de execução por região da AWS. Para facilitar a solução de problemas, na mesma página, você pode procurar problemas específicos ao abrir e examinar os arquivos de log para funções específicas por região. Em View execution error logs (Exibir logs de erro de execução) ou View invalid function response (Visualizar respostas de funções inválidas), escolha uma região (e, no caso de erros de execução, uma função) e selecione View logs (Exibir logs).


								Gráfico de taxas de erro na execução da função Lambda@Edge

								Gráfico de taxas de erro na execução da função Lambda@Edge

Também leia as seguintes seções neste capítulo para obter mais recomendações sobre como solucionar problemas e corrigir erros.

Gráfico de limitações

A guia Lambdga@Edge errors (Erros do Lambda@Edge) também inclui um gráfico de Throttles (Limitações). Ocasionalmente, o serviço Lambda limita as invocações de função por região quando a cota (anteriormente conhecida como limite) de simultaneidade regional é atingida. Se você encontrar um erro limit exceeded (limite excedido), isso significa que a função atingiu uma cota que o serviço Lambda impõe para execuções em uma região. Para obter mais informações, incluindo como solicitar um aumento na cota, consulte Cotas do Lambda@Edge.


								Gráfico de limitações na execução da função do Lambda@Edge

Para obter um exemplo de como usar essas informações para solucionar erros HTTP, consulte Quatro etapas para depurar a entrega de conteúdo na AWS.

Solução de problemas de respostas inválidas de funções do Lambda@Edge (erros de validação)

Se você identificar que seu problema é um erro de validação do Lambda, isso significa que sua função do Lambda está retornando uma resposta inválida a. CloudFront Siga as orientações nesta seção para tomar medidas para analisar sua função e garantir que sua resposta esteja em conformidade com os CloudFront requisitos.

CloudFront valida a resposta de uma função Lambda de duas maneiras:

  • A resposta do Lambda deve estar de acordo com a estrutura de objeto necessária. Exemplos de estruturas de objeto inválidas incluem o seguinte: JSON não analisável, campos obrigatórios ausentes e um objeto inválido na resposta. Para obter mais informações, consulte Estrutura de eventos do Lambda@Edge.

  • A resposta deve incluir apenas valores de objeto válidos. Um erro ocorrerá se a resposta incluir um objeto válido, mas tiver valores sem suporte. Os exemplos incluem o seguinte: adicionar ou atualizar cabeçalhos permitidos ou somente leitura (consulte Restrições das funções de borda), exceder o tamanho máximo do corpo (consulte Restrições sobre o tamanho da resposta gerada no tópico Erros do Lambda@Edge) e caracteres ou valores inválidos (consulte o Estrutura de eventos do Lambda@Edge).

Quando o Lambda retorna uma resposta inválida para CloudFront, as mensagens de erro são gravadas em arquivos de log que são enviados para CloudFront a região CloudWatch em que a função Lambda foi executada. É o comportamento padrão enviar os arquivos de log ao CloudWatch quando há uma resposta inválida. No entanto, se você associou uma função Lambda CloudFront antes do lançamento da funcionalidade, ela pode não estar habilitada para sua função. Para obter mais informações, consulte o tópico sobre como Determinar se a sua conta envia logs ao CloudWatch, mais adiante neste tópico.

CloudFront envia arquivos de log para a região correspondente à execução da função, no grupo de registros associado à sua distribuição. Os grupos de registros têm o seguinte formato:/aws/cloudfront/LambdaEdge/DistributionId, onde DistributionIdestá o ID da sua distribuição. Para determinar a região onde você pode encontrar os arquivos de CloudWatch log, consulte Determinando a região do Lambda @Edge posteriormente neste tópico.

Se o erro for reproduzível, você poderá criar uma nova solicitação que resulte no erro e, em seguida, encontrar o ID da solicitação em uma CloudFront resposta com falha (X-Amz-Cf-Idcabeçalho) para localizar uma única falha nos arquivos de log. A entrada do arquivo de log inclui informações que podem ajudar a identificar porque o erro está sendo retornado, e também lista o id da solicitação do Lambda correspondente, para que você possa analisar a causa raiz no contexto de uma única solicitação.

Se um erro for intermitente, você poderá usar os registros de CloudFront acesso para encontrar o ID da solicitação que falhou e, em seguida, pesquisar CloudWatch nos registros as mensagens de erro correspondentes. Para mais informações, consulte a seção anterior, Determinar o tipo de falha.

Solução de problemas de erros de execução de funções do Lambda@Edge

Se o problema for um erro de execução do Lambda, pode ser útil criar instruções de registro para funções do Lambda, gravar mensagens em arquivos de CloudWatch log que monitoram a execução de sua função CloudFront e determinam se ela está funcionando conforme o esperado. Em seguida, você pode pesquisar essas instruções nos arquivos de CloudWatch log para verificar se sua função está funcionando.

nota

Mesmo que você não tenha alterado a função do Lambda@Edge, as atualizações no ambiente de execução da função do Lambda podem afetá-la e um erro de execução poderá ser retornado. Para obter informações sobre como testar e migrar para uma versão mais recente, consulte Próximas atualizações no AWS Lambda e no ambiente de execução do AWS Lambda@Edge.

Determinar a região do Lambda@Edge

Para ver as regiões em que a função Lambda@Edge está recebendo tráfego, visualize as métricas da função no console do CloudFront , no AWS Management Console. As métricas são exibidas para cada região da AWS. Na mesma página, é possível escolher uma região e visualizar os arquivos de log para essa região a fim de investigar problemas. Você deve revisar os arquivos de CloudWatch log na AWS região correta para ver os arquivos de log criados quando sua função Lambda foi CloudFront executada.

Para obter mais informações sobre a visualização de gráficos na seção Monitoramento do CloudFront console, consulteMonitoramento de CloudFront métricas com a Amazon CloudWatch.

Determinar se sua conta envia registros para CloudWatch

Por padrão, CloudFront ativa o registro de respostas inválidas da função Lambda e envia os arquivos de log usando CloudWatch um dos. Funções vinculadas ao serviço para o Lambda@Edge Se você tiver funções do Lambda @Edge adicionadas CloudFront antes do lançamento do recurso inválido de registro de resposta da função Lambda, o registro será ativado na próxima atualização da configuração do Lambda @Edge, por exemplo, adicionando um gatilho. CloudFront

Você pode verificar se o envio dos arquivos de log para CloudWatch está ativado em sua conta fazendo o seguinte:

  • Verifique se os registros aparecem CloudWatch. Certifique-se de examinar na região em que a função do Lambda@Edge foi executada. Para ter mais informações, consulte Determinar a região do Lambda@Edge.

  • Determine se a função vinculada a serviço relacionada existe na sua conta do IAM. Para fazer isso, abra o console do IAM em https://console.aws.amazon.com/iam/ e escolha Roles (Funções) para exibir a lista de funções vinculadas ao serviço da conta. Procure a seguinte função: AWSServiceRoleForCloudFrontLogger.