Comment puis-je résoudre les problèmes d'échec de la fonction Lambda ?

Date de la dernière mise à jour : 19/05/2021

Lorsque j'essaie d'appeler ma fonction AWS Lambda, elle échoue et renvoie une erreur. Comment puis-je résoudre les problèmes d'échec de la fonction Lambda ?

Résolution

Pour dépanner les échecs de la fonction Lambda, commencez par déterminer les éléments qui causent l'erreur en utilisant un ou plusieurs des services et fonctions AWS répertoriés dans cet article. Suivez ensuite les liens fournis pour passer en revue les meilleures pratiques de résolution pour chaque problème.

Identification et dépannage des erreurs d'autorisation

Si les autorisations de sécurité pour votre package de déploiement Lambda sont incorrectes, l'une des erreurs suivantes s'affiche :

  • EACCES : autorisation refusée, ouvrez '/var/task/index.js'
  • impossible de charger un tel fichier -- fonction
  • [Errno 13] Autorisation refusée : '/var/task/function.py'

Si votre utilisateur AWS Identity and Access Management (IAM) (ou le rôle que vous assumez) n'a pas l'autorisation d'appeler une fonction, vous obtenez l'erreur suivante :

Utilisateur : arn:aws:iam።123456789012:utilisateur/développeur n'est pas autorisé à effectuer : lambda:InvokeFunction sur la ressource : my-function

Pour résoudre les erreurs d'autorisations Lambda

Consultez vos entrées du fichier journal Lambda dans AWS CloudTrail. Le demandeur effectuant des appels à Lambda doit disposer des autorisations AWS Identity and Access Management (IAM) requises pour appeler votre fonction. Pour accorder les autorisations requises, mettez à jour vos autorisations de fonction Lambda.

Pour plus d'informations, consultez Présentation des entrées du fichier journal AWS Lambda, Dépannage de l'identité et de l'accès AWS Lambda et IAM : Lambda:InvokeFunction non autorisée.

Identifier et dépanner des erreurs de code

De nombreux types d'erreurs peuvent s'afficher si votre code Lambda présente des problèmes. Voici quelques-unes des erreurs les plus courantes liées au code Lambda :

  • Impossible de rassembler la réponse : l'objet de type AttributeError n'est pas sérialisable en JSON
  • Problème : le kit AWS SDK inclus dans l'exécution n'est pas la dernière version
  • (Node.js) La fonction se termine avant la fin de l'exécution du code
  • KeyError

Pour dépanner les erreurs de code Lambda

1.    Consultez vos Amazon CloudWatch Logs pour Lambda.

Vous pouvez utiliser CloudWatch pour afficher tous les journaux générés par le code de votre fonction et identifier les problèmes potentiels. Pour plus d'informations, consultez Accès aux journaux Amazon CloudWatch Logs pour AWS Lambda. Pour plus d'informations sur la journalisation de la fonction, consultez les instructions suivantes de journalisation de la fonction Lambda pour le langage de programmation que vous utilisez :

Remarque : si votre fonction renvoie une trace de pile, le message d'erreur dans la trace de pile spécifie l'origine de l'erreur.

2.    Utilisez AWS X-Ray pour identifier les goulots d'étranglement des performances du code. Si votre fonction Lambda utilise des ressources, des microservices, des bases de données AWS en aval ou des API Web HTTP, vous pouvez utiliser AWS X-Ray pour vous aider à résoudre les problèmes de performances du code. Pour plus d'informations, consultez Utilisation d'AWS Lambda avec AWS X-Ray.

3.    Vérifiez que le package de déploiement de votre fonction peut importer toutes les dépendances requises. Suivez les instructions du package de déploiement pour le langage de programmation que vous utilisez :

Remarque : vous pouvez également utiliser des couches Lambda pour ajouter des dépendances en dehors de votre package de déploiement.

4.    (Pour le code déployé en tant qu'image de conteneur) Vérifiez que vous installez le client d'interface d'exécution et que vous déployez l'image correctement. Suivez les instructions d'image de conteneur pour le langage de programmation que vous utilisez :

Identification et dépannage des erreurs réseau

De nombreux types d'erreurs peuvent s'afficher si la configuration réseau de votre Lambda présente des problèmes. Voici quelques-unes des erreurs réseau les plus courantes de Lambda :

Si votre fonction se trouve dans un Virtual Private Cloud (VPC), puis perd l'accès à Internet ou expire, l'erreur suivante s'affiche :

connect ETIMEDOUT 176.32.98.189:443
La tâche a expiré après 10,00 secondes

Si le VPC dans lequel se trouve votre fonction atteint sa limite d'interface réseau Elastic, l'erreur suivante s'affiche :

ENILimitReachedException : la limite d'interface réseau Elastic a été atteinte pour le VPC de la fonction.

Si la connexion TCP (Transmission Control Protocol) est interrompue, l'erreur suivante s'affiche :

Réinitialisation de la connexion par le pair

Pour résoudre les erreurs réseau Lambda

1.    Vérifiez qu'il existe un chemin réseau valide vers le point de terminaison que votre fonction tente d'atteindre. Pour plus d'informations, consultez Configuration d'une fonction Lambda pour accéder aux ressources dans un VPC.

2.    (Pour les fonctions connectées à un Amazon VPC) Confirmez que votre fonction a accès à Internet. Pour plus d'informations, consultez la section Comment accorder l'accès Internet à une fonction connectée à un Amazon VPC ? Consultez également Comment résoudre les problèmes de dépassement de délai avec une fonction Lambda dans un VPC ?

Remarque : si vous ne parvenez pas à déterminer pourquoi votre code de fonction n'atteint pas un point de terminaison public après avoir vérifié la configuration de votre VPC, activez les journaux de flux VPC. Les journaux de flux VPC vous permettent de voir tout le trafic réseau circulant vers et en provenance d'un VPC, ce qui vous aide à déterminer pourquoi une demande spécifique a été refusée ou n'a pas été acheminée. Pour plus d'informations, consultez Résoudre les problèmes réseau dans Lambda.

Identification et dépannage des erreurs de limitation

Si votre fonction est limitée, l'erreur suivante s'affiche :

Débit dépassé
429 TooManyRequestsException

Pour résoudre les erreurs de limitation Lambda

Vérifiez vos métriques CloudWatch pour Lambda. Pour plus d'informations, consultez Métriques AWS Lambda CloudWatch.

Principales métriques à surveiller :

  • ConcurrentExecutions
  • UnreservedConcurrentExecutions
  • Limitations

Remarque : si les demandes d'appel de votre fonction arrivent plus rapidement que la fonction ne peut évoluer ou dépasser votre limite de concurrence, les requêtes échouent avec une erreur de limitation 429. Pour plus d'informations, consultez Dimensionnement d'une fonction AWS Lambda. Aussi, Comment puis-je résoudre les problèmes de limitation de la fonction Lambda avec les erreurs « Taux dépassé » et 429 « TooManyRequestsException » ?

Identification et dépannage des erreurs d'appel d'API 500 et 502

Si votre demande d'appel échoue, vous voyez l'une des erreurs 502 ou 500 côté serveur suivantes :

  • InvalidRuntimeException
  • InvalidSecurityGroupIDException
  • InvalidZipFileException
  • KMSAccessDeniedException
  • KMSNotFoundException
  • Vous avez dépassé la limite maximale des ENI Hyperplane pour votre compte
  • SubnetIPAddressLimitReachedException

Pour résoudre les erreurs d'appel d'API Lambda 500 et 502

Suivez les instructions de la section Comment résoudre les erreurs 502 et 500 lorsque j'invoque ma fonction Lambda ? Pour obtenir la liste des erreurs possibles avec les descriptions, consultez Erreurs dans la référence de l'API Invoke Lambda.

Identification et dépannage des erreurs d'image de conteneur

Si vous utilisez des images de conteneur et qu'il y a un problème avec une image de conteneur, vous voyez l'une des erreurs suivantes :

  • "errorType": "Runtime.InvalidEntrypoint"
  • Erreur : vous utilisez un modèle AWS CloudFormation et votre conteneur ENTRYPOINT est remplacé par une valeur null ou vide.

Pour résoudre les erreurs d'image de conteneur Lambda

Suivez les instructions de la section Résoudre les problèmes d'image de conteneur dans Lambda.

Remarque :si vous n'êtes pas sûr du type de problème à l'origine de l'erreur, suivez les instructions de la section Identification et dépannage des erreurs de code Lambda de cet article.