Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Bonnes pratiques pour les fonctions durables de Lambda
Les fonctions durables utilisent un modèle d'exécution basé sur le replay qui nécessite des pratiques de programmation différentes de celles des fonctions Lambda traditionnelles. Consultez les meilleures pratiques du Guide du développeur du SDK d'exécution AWS durable pour obtenir des conseils sur la façon d'écrire et de tester du code de flux de travail durable.
Les recommandations suivantes constituent les meilleures pratiques pour le déploiement, l'appel et la surveillance des fonctions durables Lambda.
Versions et alias des fonctions
Invoquez des fonctions avec des numéros de version ou des alias pour associer les exécutions à des versions de code spécifiques. Assurez-vous que les nouvelles versions du code peuvent gérer l'état des anciennes versions. Ne renommez pas les étapes et ne modifiez pas leur comportement de manière à interrompre la rediffusion. Si vous renommez une étape ou modifiez son comportement alors que des exécutions sont en cours, ces exécutions peuvent échouer ou produire des résultats incorrects. Cela se produit parce que le moteur d'exécution ne peut plus faire correspondre l'état enregistré à la définition d'étape attendue.
Contrôle
Activez la journalisation structurée avec les identifiants d'exécution et les noms des étapes. Configurez CloudWatch des alarmes pour les taux d'erreur et la durée d'exécution. Utilisez le traçage pour identifier les goulots d'étranglement. Pour obtenir des instructions détaillées, consultez la section Surveillance et débogage.
Gestion des erreurs
Outre la configuration de stratégies de nouvelle tentative pour les échecs transitoires, configurez une file d'attente de lettres mortes (DLQ) sur votre fonction durable afin de capturer les événements liés à des échecs permanents d'exécutions. Lorsqu'une exécution durable atteint un état terminal (FAILED, STOPPED ou TIMED_OUT) après un appel asynchrone, Lambda envoie l'événement déclencheur d'origine au DLQ. Ainsi, vous pouvez inspecter, déboguer et éventuellement retraiter les événements ayant échoué sans les perdre.
Pour configurer un DLQ, définissez la DeadLetterConfig propriété de votre fonction sur une file d'attente Amazon SQS ou un ARN de rubrique Amazon SNS. Pour plus d'informations, consultez la section Dead-letter files d'attente.
Suivez les meilleures pratiques suivantes pour gérer les erreurs avec des fonctions durables :
-
Configurer un DLQ pour les invocations asynchrones : attachez toujours une file d'attente de lettres mortes lorsque vous invoquez des fonctions durables de manière asynchrone. Contrairement aux appels asynchrones de fonctions sans exécution durable, Lambda ne réessaie pas automatiquement les exécutions durables en cas d'échec. Une DLQ correctement configurée capture les événements qui ont entraîné l'échec définitif des exécutions. Assurez-vous que le DLQ dispose des autorisations appropriées et d'une capacité suffisante pour recevoir des messages.
-
Utilisez des stratégies de nouvelle tentative par étapes : configurez des stratégies de nouvelle tentative explicites avec un délai approprié pour les échecs transitoires. Pour obtenir des conseils sur la configuration des nouvelles tentatives, voir Rétentatives pour des fonctions durables.
-
Combinez les DLQ avec EventBridge les notifications : utilisez des EventBridge règles pour signaler les changements de statut FAILED, STOPPED et TIMED_OUT pour une visibilité en temps réel, et utilisez une DLQ pour conserver la charge utile de l'événement d'origine en vue d'une analyse ou d'un retraitement ultérieurs.
-
Surveillez la profondeur de la DLQ : créez une CloudWatch alarme sur la
ApproximateNumberOfMessagesVisiblemétrique pour que votre DLQ détecte les défaillances qui s'accumulent.