Comment puis-je dépanner les échecs de fonction Lambda ?

Lecture de 8 minute(s)
0

Lorsque j'essaie d'appeler une fonction AWS Lambda, elle échoue et renvoie une erreur.

Résolution

Pour dépanner les échecs de fonction Lambda, déterminez la cause de l'erreur en utilisant un ou plusieurs des services et fonctionnalités 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 correction des erreurs de mise en réseau

En cas de problème lié à la configuration de mise en réseau pour une fonction Lambda, plusieurs types d'erreurs s'affichent. Voici quelques-unes des erreurs les plus courantes liées à la mise en réseau pour les fonctions Lambda :

Si la fonction ne se trouve pas dans un cloud privé virtuel (VPC) et que vous tentez d'accéder aux ressources à l'aide d'un nom DNS privé, l'erreur suivante s'affiche :

UnknownHostException
Erreur : getaddrinfo ENOTFOUND

Si la fonction se trouve dans un VPC, mais qu'elle perd l'accès à l'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 la fonction atteint sa limite d'interface réseau élastique, l'erreur suivante s'affiche :

ENILimitReachedException : La limite d'interface réseau élastique 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 un pair
ECONNRESET
ECONNREFUSED

Résolution des erreurs de mise en 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 votre Amazon Virtual Private Cloud (Amazon VPC). Pour en savoir plus, consultez la section Configuration d'une fonction Lambda pour accéder aux ressources d'un VPC.

2.    Vérifiez que la fonction dispose d'un accès à Internet. Pour plus d'informations, consultez Comment accorder l’accès à Internet à une fonction connectée à un Amazon VPC ? Consultez également la section Comment résoudre les problèmes de délai d'expiration d’une fonction Lambda dans un réseau Amazon VPC ?

3.    Pour résoudre les problèmes liés à la résolution DNS, assurez-vous que le VPC est configuré pour l'accès aux ressources privées. Si vous n'utilisez pas le DNS fourni par AWS, utilisez une instance EC2 pour vous assurer que l'option DHCP personnalisée résout correctement le nom DNS. Pour plus d'informations, consultez le section Comment le DNS fonctionne-t-il et comment puis-je résoudre les échecs DNS partiels ou intermittents ?

Remarque : après avoir examiné la configuration du VPC, si vous ne parvenez pas à déterminer pourquoi le code de la fonction n'atteint pas un point de terminaison public, activez les journaux de flux VPC. Les journaux de flux VPC vous permettent de voir tout le trafic réseau acheminé vers et depuis un VPC. Ils permettent également de déterminer pourquoi une requête spécifique a été refusée ou n'a pas été acheminée. Pour plus d'informations, consultez la page Résolution des problèmes de réseau dans Lambda.

Identification et correction des erreurs d'autorisation

Si les autorisations de sécurité pour le 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'

L’exécution Lambda a besoin d'une autorisation pour lire les fichiers du package de déploiement. Vous pouvez utiliser la commande chmod pour modifier le mode de fichier. Les exemples de commandes suivants permettent à tous les utilisateurs de lire tous les fichiers et dossiers du répertoire actuel :

chmod -R o+rX .

Pour plus d'informations, consultez la section Résolution des problèmes de déploiement dans Lambda.

Si les identités IAM (gestion des identités et des accès) AWS ne sont pas autorisées à invoquer une fonction, le message d'erreur suivant s'affiche :

Utilisateur :arn:aws:iam::123456789012:user/developer n'est pas autorisé à exécuter : lambda:InvokeFunction sur la ressource : my-function

Pour résoudre les erreurs d'autorisations Lambda

Vérifiez les entrées du fichier journal Lambda dans AWS CloudTrail. Le demandeur qui fait appel à Lambda doit disposer des autorisations IAM requises pour invoquer la fonction. Pour accorder les autorisations requises, mettez à jour les autorisations de la fonction Lambda.

Pour plus d'informations, consultez les rubriques suivantes :

Identification et correction des erreurs de code

En cas de problèmes avec le code Lambda, plusieurs types d'erreurs s'affichent. Voici quelques-unes des erreurs les plus courantes liées au code Lambda :

  • Impossible d'obtenir une réponse : L’objet de type AttributeError n'est pas sérialisable en JSON
  • Problème : Le kit SDK AWS inclus dans l’exécution n'est pas la dernière version
  • (Node.js) La fonction est renvoyée avant la fin de l'exécution du code
  • KeyError

Pour résoudre les erreurs de code Lambda

1.    Consultez les journaux Amazon CloudWatch pour Lambda.

Vous pouvez utiliser CloudWatch pour consulter tous les journaux générés par le code de votre fonction et identifier les problèmes potentiels. Pour plus d'informations, consultez la page Accès à Amazon CloudWatch Logs pour AWS Lambda. Pour plus de détails sur la journalisation des fonctions, consultez les instructions de journalisation des fonctions Lambda suivantes 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 la cause de l'erreur.

2.    Utilisez AWS X-Ray pour identifier les éventuels goulots d'étranglement affectant la performances du code. Si votre fonction Lambda utilise des ressources AWS, des microservices, des bases de données ou des API Web HTTP en aval, vous pouvez utiliser AWS X-Ray pour résoudre les problèmes de performance du code. Pour plus d’informations, consultez la page 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 des Packages de déploiement Lambda correspondant au langage de programmation que vous utilisez :

Remarque : vous pouvez également utiliser des couches Lambda pour ajouter des dépendances qui ne font pas partie du package de déploiement.

4.    (Pour le code déployé sous forme d'image de conteneur) Vérifiez que vous installez le client d'interface d'exécution et que vous déployez correctement l'image. Suivez les instructions relatives à l’image de conteneur correspondant au langage de programmation que vous utilisez :

Identification et correction des erreurs de limitation

Si la fonction est limitée, le message d'erreur suivant s'affiche :

Taux dépassé
429 TooManyRequestsException

Pour résoudre les erreurs de limitation Lambda

Examinez les métriques CloudWatch pour Lambda. Pour en savoir plus, consultez Utilisation des métriques de fonction Lambda.

Métriques clés à surveiller :

  • ConcurrentExecutions
  • UnreservedConcurrentExecutions
  • Limitation

Remarque : si les demandes d'appel de fonction arrivent plus rapidement que la capacité de mise à l’échelle de la fonction ou que les demandes atteignent la simultanéité maximale que vous avez définie, elles échouent avec l’erreur de limitation 429. Pour plus d'informations, consultez Mise à l'échelle des fonctions Lambda. Vous pouvez également consulter la page Comment puis-je résoudre les problèmes de limitation de fonction Lambda liés aux erreurs « Taux dépassé » et 429 « TooManyRequestsException » ?

Identification et correction des erreurs 500 et 502 de l’API d’invocation

Si votre demande d'invocation échoue, l'une des erreurs 502 ou 500 côté serveur s'affiche :

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

Pour résoudre les erreurs 500 et 502 de l'API d'invocation Lambda

Suivez les instructions de la page Comment puis-je résoudre les erreurs de code d'état HTTP 502 et HTTP 500 (côté serveur) provenant d'AWS Lambda ? Pour obtenir une liste des erreurs possibles et leur description, consultez la section Erreurs dans la documentation de référence de l'API d'invocation Lambda.

Identification et correction des erreurs liées à l'image de conteneur

Si vous utilisez des images de conteneur et que l’une d’elles présente un problème, l'une des erreurs suivantes s'affiche :

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

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

Suivez les instructions de la page Résolution des problèmes liés aux images de conteneur dans Lambda.


Informations connexes

Surveillance et dépannage des applications Lambda

Gestion des erreurs et tentatives automatiques dans Lambda

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an