Comment déterminer si le délai d'attente de ma fonction Lambda a expiré ?

Date de la dernière mise à jour : 11/01/2022

Ma fonction AWS Lambda rencontre des erreurs intermittentes, et je ne comprends pas pourquoi lorsque j'examine les métriques Amazon CloudWatch de la fonction. L'augmentation du taux d'erreur de ma fonction Lambda pourrait-elle être causée par des problèmes de délai d'expiration ? Si c'est le cas, comment puis-je déterminer si ma fonction Lambda expire ?

Brève description

Lorsque vous examinez le groupe de journaux CloudWatch de votre fonction Lambda, recherchez l'expression « Task timed out » (Délai d'attente de la tâche expiré). Utilisez ensuite les ID de requêtes des appels associés à une expiration pour récupérer les journaux complets pour chaque expiration d'appel.

Pour résoudre les erreurs de délai d'expiration que vous identifiez, voir Comment résoudre les erreurs d'expiration d'appels de fonctions Lambda ?

Remarque : lorsqu'un appel de fonction Lambda expire, un message d'erreur Task timed out (Délai d'attente de la tâche expiré) [et non un message Error (Erreur)] apparaît dans les journaux CloudWatch de l'appel ayant échoué. Si vous recherchez uniquement des messages Erreur dans les journaux CloudWatch de votre fonction, la recherche renvoie uniquement les erreurs d'exécution liées au code, et non les erreurs d'expiration d'appels. Pour plus d'informations, consultez Surveillance des erreurs AWS Lambda à l'aide d'Amazon CloudWatch.

Résolution

Prérequis

Si vous ne l'avez pas encore fait, accordez des autorisations de journalisation CloudWatch à votre fonction Lambda. Pour plus d'informations, consultez Politiques gérées par AWS pour les fonctions Lambda.

Récupérez les ID de requêtes de tout appel ayant expiré en recherchant dans le groupe de journaux CloudWatch de la fonction le message « Task timed out » (Délai d'attente de la tâche expiré).

Remarque : les requêtes CloudWatch Logs Insights entraînent des frais en fonction de la quantité de données interrogées. Pour plus d'informations, consultez la page Tarification Amazon CloudWatch.

1.    Ouvrez la page Functions (Fonctions) dans la console Lambda.

2.    Choisissez une fonction.

3.    Choisissez Monitor (Surveiller).

4.    Choisissez View logs in CloudWatch (Afficher les journaux dans CloudWatch). La page Log group details (Détails du groupe de journaux) de la fonction s'ouvre dans la console CloudWatch.

5.    Choisissez View in Logs Insights (Afficher dans Logs Insights).

6.    Dans la zone de texte de requêtes Logs Insights, saisissez la requête suivante, puis choisissez Run query (Exécuter la requête) :

fields @timestamp, @requestId, @message, @logStream
| filter @message like "Task timed out"
| sort @timestamp desc
| limit 100

La réponse renvoie une liste d'ID de requêtes pour les appels ayant expiré.

Pour plus d'informations, consultez Analyse des données de journaux avec CloudWatch Logs Insights.

Remarque : pour les grands groupes de journaux, pensez à limiter la portée de la recherche en ajoutant une fonction datetime à la requête Insights. Pour plus d'informations, consultez Syntaxe de requête CloudWatch Logs Insights.

Utilisez les ID de requêtes des appels ayant expiré pour récupérer les journaux complets pour chaque expiration d'appel.

Les journaux de sortie utilisent la fonctionnalité de journalisation standard pour le langage de programmation que vous utilisez. Pour obtenir des instructions spécifiques au langage, consultez la section Utilisation de l'interface de ligne de commande AWS de Accéder à Amazon CloudWatch Logs for AWS Lambda.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?