View a markdown version of this page

Concepts de base - AWS Lambda

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.

Concepts de base

Le SDK AWS Durable Execution constitue la base de la création de fonctions durables, en fournissant les primitives dont vous avez besoin pour contrôler la progression, gérer les nouvelles tentatives et gérer le flux d'exécution. Le SDK est disponible pour JavaScript/TypeScript Python et Java. Pour consulter la documentation complète du SDK, y compris les références relatives aux API, les didacticiels de démarrage rapide et les guides spécifiques au langage, consultez le Guide du développeur du SDK AWS Durable Execution.

Exécution durable

Une exécution durable représente le cycle de vie complet d'une fonction durable Lambda, utilisant un point de contrôle et un mécanisme de réexécution pour suivre l'évolution de la logique métier, suspendre l'exécution et rétablir les opérations en cas de défaillance. Lorsque les fonctions reprennent après une suspension ou une interruption, les points de contrôle précédemment complétés sont rejoués et la fonction poursuit son exécution.

Le cycle de vie peut inclure plusieurs invocations d'une fonction Lambda pour terminer l'exécution, en particulier après des suspensions ou une reprise après défaillance. Cette approche permet à votre fonction de fonctionner pendant de longues périodes (jusqu'à un an) tout en maintenant une progression fiable malgré les interruptions.

Comment fonctionne le replay

Lambda tient un journal de toutes les opérations durables (étapes, attentes et autres opérations) au fur et à mesure de l'exécution de votre fonction. Lorsque votre fonction doit être mise en pause ou qu'elle rencontre une interruption, Lambda enregistre ce journal de points de contrôle et arrête l'exécution. Au moment de reprendre, Lambda invoque à nouveau votre fonction depuis le début et rejoue le journal des points de contrôle, en substituant des valeurs stockées aux opérations terminées. Cela signifie que votre code s'exécute à nouveau, mais que les étapes précédemment effectuées ne sont pas réexécutées. Leurs résultats enregistrés sont utilisés à la place.

Ce mécanisme de rediffusion est fondamental pour comprendre les fonctions durables. Votre code doit être déterministe lors de la rediffusion, c'est-à-dire qu'il produit les mêmes résultats avec les mêmes entrées. Évitez les opérations comportant des effets secondaires (comme la génération de nombres aléatoires ou l'obtention de l'heure actuelle) en dehors des étapes, car elles peuvent produire des valeurs différentes lors de la rediffusion et entraîner un comportement non déterministe.

DurableContext

DurableContextest l'objet de contexte que reçoit votre fonction durable. Il fournit des méthodes pour des opérations durables, telles que des étapes et des attentes qui créent des points de contrôle et gèrent le flux d'exécution.

Votre fonction durable reçoit un contexte Lambda DurableContext au lieu du contexte par défaut :

TypeScript
import { DurableContext, withDurableExecution, } from "@aws/durable-execution-sdk-js"; export const handler = withDurableExecution( async (event: any, context: DurableContext) => { const result = await context.step(async () => { return "step completed"; }); return result; }, );
Python
from aws_durable_execution_sdk_python import ( DurableContext, durable_execution, durable_step, ) @durable_step def my_step(step_context, data): # Your business logic return result @durable_execution def handler(event, context: DurableContext): result = context.step(my_step(event["data"])) return result

Grâce à celaDurableContext, votre fonction a accès à des opérations durables qui contrôlent la progression et coordonnent le travail :

  • Les étapes exécutent la logique métier avec des nouvelles tentatives intégrées et des points de contrôle automatiques. Chaque étape enregistre son résultat, de sorte que votre fonction reprenne à partir de la dernière étape terminée après une interruption.

  • Les temps d'attente sont des pauses planifiées au cours desquelles votre fonction cesse de fonctionner et arrête de se recharger jusqu'à ce qu'il soit temps de continuer. Utilisez-les pour des périodes, des rappels externes ou pour rechercher une condition.

  • Invoke appelle d'autres fonctions Lambda et vérifie le résultat. La fonction invoquée peut être une fonction standard ou durable. Cross-account les invocations ne sont pas prises en charge.

Pour une référence linguistique complète à toutes les opérations durables disponibles, consultez la section Référence du SDK dans le Guide du développeur du SDK d'exécution AWS durable.

Configuration fonctionnelle durable

Les fonctions durables ont des paramètres de configuration spécifiques qui contrôlent le comportement d'exécution et la conservation des données. Ces paramètres sont distincts de la configuration standard de la fonction Lambda et s'appliquent à l'ensemble du cycle de vie d'exécution durable.

L'DurableConfigobjet définit la configuration des fonctions durables :

{ "ExecutionTimeout": Integer, "RetentionPeriodInDays": Integer }

Execution timeout (Délai d'exécution)

Le délai d'exécution contrôle la durée pendant laquelle une exécution durable peut s'exécuter du début à la fin. Cela est différent du délai d'expiration de la fonction Lambda, qui contrôle la durée pendant laquelle une seule invocation de fonction peut être exécutée.

Une exécution durable peut s'étendre sur plusieurs invocations de fonctions Lambda au fur et à mesure qu'elle progresse entre les points de contrôle, les temps d'attente et les rediffusions. Le délai d'exécution s'applique au temps total écoulé pendant l'exécution durable, et non aux invocations de fonctions individuelles.

Comprendre la différence

Le délai d'expiration de la fonction Lambda (maximum 15 minutes) limite chaque appel individuel de votre fonction. Le délai d'exécution durable (maximum 1 an) limite le temps total entre le début de l'exécution et sa fin, son échec ou son expiration. Au cours de cette période, votre fonction peut être invoquée plusieurs fois pendant qu'elle traite des étapes, attend et se rétablit après un échec.

Par exemple, si vous définissez un délai d'exécution durable de 24 heures et un délai d'expiration de la fonction Lambda de 5 minutes :

  • Chaque invocation de fonction doit être terminée dans les 5 minutes

  • L'ensemble de l'exécution durable peut durer jusqu'à 24 heures

  • Votre fonction peut être invoquée plusieurs fois au cours de ces 24 heures

  • Les opérations d'attente ne sont pas prises en compte dans le délai d'expiration de la fonction Lambda, mais dans le délai d'exécution

Vous pouvez configurer le délai d'exécution lors de la création d'une fonction durable à l'aide de la console Lambda AWS CLI, ou. AWS SAM Dans la console Lambda, choisissez votre fonction, puis Configuration, Exécution durable. Définissez la valeur du délai d'exécution en secondes (par défaut : 86400 secondes/24 heures, minimum : 60 secondes, maximum : 31536000 secondes/1 an).

Note

Le délai d'exécution et le délai d'expiration de la fonction Lambda sont des paramètres différents. La fonction Lambda timeout contrôle la durée pendant laquelle chaque appel individuel peut être exécuté (maximum 15 minutes). Le délai d'exécution contrôle le temps total écoulé pour l'ensemble de l'exécution durable (maximum 1 an).

Période de conservation

La période de conservation contrôle la durée pendant laquelle Lambda conserve l'historique des exécutions et les données des points de contrôle après la fin d'une exécution durable. Ces données incluent les résultats des étapes, l'état d'exécution et le journal complet des points de contrôle.

Une fois la période de conservation expirée, Lambda supprime l'historique d'exécution et les données des points de contrôle. Vous ne pouvez plus récupérer les détails de l'exécution ni rejouer l'exécution. La période de rétention commence lorsque l'exécution atteint un état terminal (SUCCEDED, FAILED, STOPPED ou TIMED_OUT).

Vous pouvez configurer la période de rétention lors de la création d'une fonction durable à l'aide de la console Lambda AWS CLI, ou. AWS SAM Dans la console Lambda, choisissez votre fonction, puis Configuration, Exécution durable. Définissez la valeur de la période de conservation en jours (par défaut : 14 jours, minimum : 1 jour, maximum : 90 jours).

Choisissez une période de rétention en fonction de vos exigences de conformité, de vos besoins de débogage et de considérations financières. Des périodes de rétention plus longues permettent de consacrer plus de temps au débogage et à l'audit, mais augmentent les coûts de stockage.

Consultez aussi