Ma fonction AWS Lambda a rencontré des erreurs intermittentes et je souhaite utiliser Amazon CloudWatch Logs pour déterminer si ma fonction a expiré.
Résolution
Lorsqu'une invocation de fonction Lambda expire, un message d'erreur La tâche a expiré apparaît dans les journaux CloudWatch de l'invocation qui a échoué, et non un message Erreur. Lorsque vous consultez le groupe de journaux CloudWatch de votre fonction Lambda, recherchez le message « La tâche a expiré ». Si vous recherchez dans les journaux uniquement des messages Erreur, la recherche ne renvoie que des erreurs d'exécution liées au code, et non des erreurs d’expiration du délai d'invocation. Pour en savoir plus, consultez la section Surveillance des erreurs AWS Lambda à l’aide d’Amazon CloudWatch.
Utilisez les ID de requête des invocations dont le délai est expiré pour récupérer les journaux complets de chaque expiration d'invocation.
Avant de commencer, assurez-vous que votre fonction Lambda dispose des autorisations Gestion des identités et des accès AWS (AWS IAM) requises pour charger des journaux vers CloudWatch Logs.
Obtenir les ID de requête pour les invocations dont le délai est expiré
Procédez comme suit :
- Ouvrez la console Lambda.
- Dans le volet de navigation, sélectionnez Fonctions.
- Sélectionnez votre fonction Lambda, puis choisissez l'onglet Surveiller.
- Choisissez Afficher les journaux CloudWatch pour ouvrir la page Détails du groupe de journaux de la fonction sur la console CloudWatch.
- Choisissez Afficher dans Logs Insights.
- Dans la zone de texte de requête Logs Insights, entrez la requête suivante, puis choisissez 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ête dans la sortie La tâche a expiré pour les invocations dont le délai est expiré.
Pour en savoir plus, consultez la section Analyse des données de journal avec CloudWatch Logs Insights.
Remarque : Pour les groupes de journaux volumineux, ajoutez une fonction dateheure à la requête Logs Insights afin de limiter l’étendue de la recherche. Pour plus d'informations, consultez la section Syntaxe de requête de CloudWatch Logs Insights.
Exécuter des requêtes CloudWatch Logs Insights pour les ID de requête
Remarque : Les requêtes CloudWatch Logs Insights sont facturées en fonction de la quantité de données que vous interrogez. Pour en savoir plus, consultez la section Tarification Amazon CloudWatch.
Puis, utilisez les ID de requête des invocations dont le délai est expiré pour récupérer les journaux complets de chaque expiration d’invocation. Vous pouvez créer une requête pour rechercher tous les journaux pour les ID de requête spécifiques. Pour plus d'informations, consultez la section Analyse des journaux et journalisation structurée.
Pour résoudre les erreurs de délai d’expiration que vous identifiez, consultez la section Comment résoudre les erreurs d’expiration du délai d'invocation de la fonction Lambda ?