Minha função do AWS Lambda está enfrentando erros intermitentes e o motivo não fica claro quando analiso as respectivas métricas do Amazon CloudWatch. O aumento da taxa de erros da minha função do Lambda pode ser causado por problemas de tempo-limite? Em caso afirmativo, como determino se minha função do Lambda está atingindo o tempo-limite?
Breve descrição
Ao analisar o grupo de logs do CloudWatch da função do Lambda, procure a frase Task timed out (A tarefa atingiu o tempo-limite). Em seguida, use os IDs de solicitação das invocações associadas que atingiram o tempo-limite para recuperar os logs completos de cada tempo-limite de invocação.
Para solucionar os erros de limite de tempo que você identifica, consulte Como soluciono problemas de limite de tempo de invocação de função do Lambda?
Observação: quando uma invocação de função do Lambda atinge o tempo-limite, uma mensagem de erro Task timed out (Tempo-limite da tarefa) aparece nos logs do CloudWatch referentes à invocação com falha, não em uma mensagem de erro. Se você pesquisar somente mensagens de erro nos logs do CloudWatch referentes à sua função, a pesquisa retornará apenas erros de tempo de execução relacionados ao código, e não erros de tempo-limite de invocação. Para obter mais informações, consulte Monitoramento de erros do AWS Lambda usando o Amazon CloudWatch.
Resolução
Pré-requisitos
Se ainda não o fez, conceda permissões de registro do CloudWatch à função do Lambda. Para obter mais informações, consulte Políticas gerenciadas pela AWS para recursos do Lambda .
Recupere os IDs de solicitação de qualquer invocação que tenha ultrapassado o limite de tempo, procurando a frase “Task timed out” (Tarefa ultrapassou o limite de tempo) no grupo de logs do CloudWatch da função.
Observação: as consultas do CloudWatch Logs Insights são cobradas com base na quantidade de dados consultada. Para obter mais informações, consulte Preços do Amazon CloudWatch.
1. Abra a página Functions (Funções) do console do Lambda.
2. Escolha uma função.
3. Escolha Monitor (Monitorar).
4. Escolha View logs in CloudWatch (Visulizar logs no CloudWatch). A página Log group details (Detalhes do grupo de logs) da função é aberta no console do CloudWatch.
5. Escolha View in Logs Insights (Visualizar logs no Insights).
6. Na caixa de texto de consulta Logs Insights, insira a seguinte consulta e escolha Run query (Executar consulta):
fields @timestamp, @requestId, @message, @logStream
| filter @message like "Task timed out"
| sort @timestamp desc
| limit 100
A resposta retorna uma lista de IDs de solicitação referentes às invocações de tempo-limite.
Para obter mais informações, consulte Análise de dados de log com o CloudWatch Logs Insights.
Observação: para grandes grupos de logs, considere limitar o escopo da pesquisa adicionando uma função datetime à consulta do Insights. Para obter mais informações, consulte Sintaxe de consulta do CloudWatch Logs Insights.
Use os IDs de solicitação das invocações que atingiram o tempo-limite para recuperar os logs completos de cada tempo-limite de invocação
Gere logs de saída usando a funcionalidade padrão de registro em log para a linguagem de programação que você está usando. Para obter instruções específicas de linguagem, consulte a seção Uso do AWS CLI em Acesso aos Amazon CloudWatch Logs para AWS Lambda.