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. Il fournit les primitives dont vous avez besoin pour contrôler la progression des points, gérer les nouvelles tentatives et gérer le flux d'exécution. Le SDK est disponible pour JavaScript/TypeScript Python et Java. Pour une documentation complète sur le SDK, y compris des références d'API, des didacticiels de démarrage rapide et des guides spécifiques à une langue, 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 Lambda durable, utilisant un point de contrôle et un mécanisme de relecture pour suivre la progression de la logique métier, suspendre l'exécution et récupérer en cas de défaillance. Lorsque les fonctions reprennent après une suspension ou des interruptions, les points de contrôle précédemment complétés sont rejoués et la fonction continue à s'exécuter.

Le cycle de vie peut inclure plusieurs appels d'une fonction Lambda pour terminer l'exécution, en particulier après une suspension ou une reprise après un échec. 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 conserve un journal de toutes les opérations durables (étapes, attentes et autres opérations) pendant l'exécution de votre fonction. Lorsque votre fonction doit faire une pause ou rencontre une interruption, Lambda enregistre ce journal des 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 remplaçant les valeurs stockées par les 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 pendant 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 pendant la rediffusion et provoquer 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 Lambda 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 àDurableContext, 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 reprend depuis la dernière étape terminée après une interruption.

  • Les temps d'attente sont des pauses planifiées au cours desquelles votre fonction s'arrête 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 interroger 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 obtenir la référence linguistique complète de toutes les opérations durables disponibles, consultez la section Référence du SDK dans le Guide du développeur du SDK AWS Durable Execution.

Configuration fonctionnelle durable

Les fonctions durables disposent de 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. Ceci 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 s'exécuter.

Une exécution durable peut couvrir plusieurs appels de fonctions Lambda au fur et à mesure de sa progression à travers les points de contrôle, les attentes et les rediffusions. Le délai d'exécution s'applique au temps total écoulé pendant l'exécution durable, et non aux appels de fonctions individuels.

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 la durée totale 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 les étapes, attend et se rétablit en cas d'é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 appel de fonction doit être terminé 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 : 86 400 secondes/24 heures, minimum : 60 secondes, maximum : 31536 000 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. Le délai d'expiration de la fonction Lambda 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 rétention 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.

À l'expiration de la période de conservation, Lambda supprime l'historique des exécutions 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 rétention 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 conservation plus longues permettent de consacrer plus de temps au débogage et à l'audit, mais augmentent les coûts de stockage.

Consultez aussi