Share Your AWS re:Post Experience - Quick 3 Question Survey
Help us improve AWS re:Post! We're interested in understanding how you use re:Post and its impact on your AWS journey. Please take a moment to complete our brief 3-question survey.
Comment puis-je résoudre les erreurs de délai d’expiration d'appel d'une fonction Lambda ?
Ma fonction AWS Lambda a expiré par intermittence, même si je n'ai déployé aucune modification de code.
Résolution
Les fonctions Lambda peuvent expirer pour diverses raisons. Pour résoudre les problèmes d'expiration des fonctions Lambda, déterminez d'abord la cause du problème. Puis, corrigez le problème en fonction de votre cas d'utilisation.
Vérifier que votre fonction Lambda a expiré
Pour récupérer les identifiants de requête de tous les appels ayant expiré, recherchez la phrase Expiration de la tâche dans le groupe de journaux Amazon CloudWatch de la fonction. Puis, utilisez les ID de requête des appels dont le délai d'expiration est écoulé pour récupérer les journaux complets de chaque expiration d'appel.
Pour obtenir des instructions, consultez la section Comment puis-je déterminer si le délai de ma fonction Lambda expire ?
Identifier la cause de l’expiration de votre fonction Lambda
Utilisez une ou plusieurs des méthodes suivantes pour identifier le point de défaillance à l'origine de l'arrêt de votre fonction :
Consulter les journaux CloudWatch pour Lambda
Vous pouvez utiliser Amazon CloudWatch pour consulter tous les journaux générés par le code de votre fonction et identifier les problèmes potentiels. Pour obtenir des instructions, consultez la section Utilisation de CloudWatch Logs avec Lambda.
Si votre fonction renvoie une trace de pile, le message d'erreur dans la trace de pile spécifie la cause de l'erreur.
Important :Lambda génère automatiquement trois lignes de journal pour chaque appel (DÉBUT, FIN et RAPPORT). Ces trois lignes sont les seules qui apparaissent dans les journaux CloudWatch de votre fonction si l'une des conditions suivantes est vraie :
- Aucune autre journalisation explicite n'est configurée dans le code personnalisé de la fonction Lambda.
- La limite de durée de la fonction est atteinte avant que Lambda puisse exécuter le code de la fonction qui génère des journaux.
Si vous ne parvenez pas à déterminer la cause des délais d'attente à partir des journaux CloudWatch, essayez une ou plusieurs des solutions suivantes :
- Vérifiez que les paramètres du nombre de nouvelles tentatives et du délai d'expiration du SDK AWS que vous avez utilisé laissent suffisamment de temps pour que votre fonction s'initialise.
- Augmentez temporairement le paramètre de délai d'attente de la fonction Lambda afin de laisser suffisamment de temps au code de la fonction pour générer des données de journal.
- Augmentez la mémoire configurée de la fonction afin de réduire la latence de la durée d'appel et d'augmenter la puissance de calcul.
Pour ajouter d'autres résultats de journalisation au code de votre fonction, consultez la documentation suivante pour la version d'exécution Lambda que vous avez utilisée :
- Journalisation de la fonction AWS Lambda dans Node.js
- Journalisation de la fonction AWS Lambda dans Python
- Journalisation de la fonction AWS Lambda dans Ruby
- Journalisation de la fonction AWS Lambda dans Java
- Journalisation de la fonction AWS Lambda dans Go
- Journalisation de la fonction AWS Lambda dans C#
- Journalisation de la fonction AWS Lambda dans PowerShell
Utiliser 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 vous aider à résoudre les problèmes de performance du code.
Pour plus d'informations, consultez la section Visualiser les appels de fonctions Lambda à l'aide d'AWS X-Ray.
Utiliser Lambda Insights pour collecter des métriques au niveau du système pour votre fonction
Lambda Insights collecte des métriques au niveau du système, notamment des métriques relatives à la durée du processeur, à la mémoire, au disque et au réseau. Il collecte également des informations de diagnostic, notamment les démarrages à froid et les arrêts de l’environnement de travail Lambda, afin de vous aider à identifier les problèmes liés à vos fonctions Lambda.
Remarque : L'utilisation de Lambda Insights entraîne des frais sur votre compte AWS. Le temps d'appel consommé par l'extension Lambda vous est facturé par incréments de 1 ms.
Utiliser les journaux de flux VPC pour déterminer pourquoi une requête d’appel spécifique a été refusée ou n'a pas été acheminée
Les journaux de flux VPC vous permettent de voir tout le trafic réseau qui transite vers et depuis un Amazon Virtual Private Cloud (Amazon VPC).
Pour plus d'informations, consultez la page Résolution des problèmes de réseau dans Lambda.
Remarque : Les variables suivantes s'appliquent si vous choisissez de configurer les journaux de flux VPC :
- Les frais d'ingestion et d'archivage des données pour les journaux payants s'appliquent lorsque vous publiez des journaux de flux sur CloudWatch Logs ou Amazon Simple Storage Service (Amazon S3).
- Lorsque vous configurez une fonction Lambda pour accéder aux ressources d'un Amazon VPC, le service Lambda affecte la fonction à une interface réseau. Pour identifier le trafic réseau associé à votre fonction Lambda, vous devez localiser l'interface réseau de la fonction. Pour obtenir des instructions, consultez la section Pourquoi ne puis-je pas détacher ou supprimer une interface réseau Elastic créée par Lambda ?
Utiliser les traces de fils HTTP pour une journalisation détaillée des requêtes réseau générées par le code de la fonction lors d'un appel
Pour plus d'informations, consultez la section Journalisation des traces de fils HTTP.
Bonnes pratiques pour éviter l’expiration de la fonction Lambda
Assurez-vous que votre fonction Lambda est idempotente
Les appels d'API peuvent prendre plus de temps que prévu en raison de problèmes de réseau transitoires. Les problèmes de réseau peuvent également entraîner de nouvelles tentatives et des requêtes d'API dupliquées. Pour vous préparer à ces occurrences, assurez-vous que votre fonction Lambda est idempotente.
Pour plus d'informations, consultez la section Comment puis-je rendre ma fonction Lambda idempotente ?
Initialiser la logique statique de votre fonction en dehors du gestionnaire de fonctions
Lorsque vous initialisez une fonction Lambda, Lambda alloue jusqu'à 10 secondes à la fin de la phase d’initialisation de l’appel. En raison de cette contrainte de temps, il est recommandé d'effectuer les actions suivantes en dehors du gestionnaire de fonctions dans le code d’initialisation :
- Importer des bibliothèques et des dépendances
- Configurer la configuration initiale
- Initialiser les connexions à d'autres services et ressources en aval
Cette initialisation statique permet d'initialiser ces ressources une fois par sandbox, puis de les réutiliser pour tous les futurs appels dans le même environnement d'exécution.
Pour plus d'informations, consultez la section Optimisation de l'initialisation statique.
Remarque : Lambda supprime les connexions inactives aux ressources en aval. Pour permettre à votre fonction de maintenir une connexion permanente, utilisez la variable keepAlive associée à l’exécution Lambda que vous utilisez.
Vérifier que les paramètres du nombre de nouvelles tentatives et du délai d'expiration du SDK AWS que vous utilisez laissent suffisamment de temps à votre fonction pour s'initialiser
Si vous utilisez un SDK AWS pour effectuer un appel d'API et que l'appel échoue, le SDK AWS réitère automatiquement l'appel. Le nombre de nouvelles tentatives du SDK AWS et la durée de chaque nouvelle tentative sont déterminés par des paramètres qui varient d'un SDK AWS à un autre. L'initialisation de votre fonction peut prendre plus de temps que ne le permettent les paramètres par défaut du SDK AWS.
Pour plus d'informations, consultez la section Comment puis-je résoudre les problèmes liés aux nouvelles tentatives et au délai d'expiration lors de l'appel d'une fonction Lambda à l'aide d'un SDK AWS ?
(Facultatif) Configurer la simultanéité provisionnée pour votre fonction Lambda
La simultanéité provisionnée initialise un nombre demandé d'environnements d'exécution afin qu'ils soient prêts à répondre immédiatement aux appels de votre fonction. Pour configurer la simultanéité provisionnée pour votre fonction, suivez les instructions de la section Configuration de la simultanéité provisionnée.
Remarque : La configuration de la simultanéité provisionnée entraîne des frais sur votre compte AWS. Vous pouvez configurer la simultanéité provisionnée sur une version d'une fonction ou sur un alias de fonction Lambda.
Vérifier que votre fonction Lambda dispose d’un nombre suffisant de ressources système
La quantité de bande passante réseau et de processeur allouée à l'appel d'une fonction Lambda est déterminée par la configuration de la mémoire de la fonction.
Pour plus d’informations, consultez la page Mémoire et puissance de calcul.
Assurez-vous que tous les processus d'arrière-plan utilisés par votre fonction Lambda sont terminés avant que le gestionnaire de fonctions ne renvoie une chaîne
Pour plus d'informations, consultez la section Comprendre la réutilisation des conteneurs dans AWS Lambda.
Vérifier que votre fonction Lambda est configurée pour fonctionner dans les limites de délai maximum de tous les services AWS intégrés
Même si le délai d'appel maximal d'une fonction Lambda est de 15 minutes, d'autres services AWS peuvent avoir des limites de délai d’attente différentes.
Par exemple, Amazon API Gateway attend 29 secondes au maximum pour qu'un appel de proxy de fonction Lambda soit terminé.
Pour plus d'informations, consultez la section Comment puis-je résoudre les erreurs que je reçois lorsque j'intègre API Gateway à une fonction Lambda ? Consultez également la section Invoquer Lambda avec des événements provenant d'autres services AWS.
Vérifier qu’il existe un chemin réseau valide vers le point de terminaison que votre fonction tente d’atteindre
Pour vérifier vos paramètres réseau, suivez les instructions figurant dans la section Comment puis-je résoudre les problèmes de délai d'attente liés à une fonction Lambda intégrée à un Amazon VPC ?

Contenus pertinents
- demandé il y a 3 moislg...
- demandé il y a 2 anslg...
- demandé il y a 3 moislg...
- demandé il y a un anlg...
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a 3 mois