Comment Lambda traite les enregistrements provenant de sources d'événements basées sur des flux et des files d'attente - 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.

Comment Lambda traite les enregistrements provenant de sources d'événements basées sur des flux et des files d'attente

Un mappage de source d'événements est une ressource Lambda qui lit des éléments provenant de services basés sur des flux et des files d'attente et invoque une fonction avec des lots d'enregistrements. Les services suivants utilisent des mappages de sources d'événements pour appeler des fonctions Lambda :

Avertissement

Les mappages de sources d'événements Lambda traitent chaque événement au moins une fois, et le traitement des enregistrements peut être dupliqué. Pour éviter les problèmes potentiels liés à des événements dupliqués, nous vous recommandons vivement de rendre votre code de fonction idempotent. Pour en savoir plus, consultez Comment rendre ma fonction Lambda idempotente dans le Knowledge Center. AWS

En quoi les mappages de sources d'événements diffèrent des déclencheurs directs

Certains AWS services peuvent appeler directement des fonctions Lambda à l'aide de déclencheurs. Ces services transmettent les événements à Lambda, et la fonction est invoquée immédiatement lorsque l'événement spécifié se produit. Les déclencheurs conviennent aux événements discrets et au traitement en temps réel. Lorsque vous créez un déclencheur à l'aide de la console Lambda, celle-ci interagit avec le AWS service correspondant pour configurer la notification d'événement sur ce service. Le déclencheur est en fait stocké et géré par le service qui génère les événements, et non par Lambda. Voici quelques exemples de services qui utilisent des déclencheurs pour appeler des fonctions Lambda :

Les mappages de sources d'événements sont des ressources Lambda créées et gérées au sein du service Lambda. Les mappages de sources d'événements sont conçus pour traiter de gros volumes de données en streaming ou de messages provenant de files d'attente. Le traitement par lots des enregistrements d'un flux ou d'une file d'attente est plus efficace que le traitement individuel des enregistrements.

Comportement de traitement par lots

Par défaut, un mappage de source d’événements regroupe des enregistrements dans une même charge utile que Lambda envoie à votre fonction. Pour affiner le comportement du traitement par lots, vous pouvez configurer une fenêtre de traitement par lots (MaximumBatchingWindowInsecondes) et une taille de lot (). BatchSize Une fenêtre de traitement par lots représente l’intervalle de temps maximal pour collecter des enregistrements dans une même charge utile. La taille d’un lot est le nombre maximal d’enregistrements dans un même lot. Lambda invoque votre fonction en présence de l’un des trois critères suivants :

  • La fenêtre de traitement par lots atteint sa valeur maximale. Le comportement par défaut de la fenêtre de traitement par lots varie en fonction de la source d'événement spécifique.

    • Pour les sources d’événements Kinesis, DynamoDB et Amazon SQS : la fenêtre de traitement par lot par défaut est de 0 seconde. Cela signifie que Lambda envoie des lots à votre fonction uniquement lorsque la taille du lot est atteinte ou que la limite de taille de charge utile est atteinte. Pour définir une fenêtre de traitement par lots, configurezMaximumBatchingWindowInSeconds. Vous pouvez définir ce paramètre sur n'importe quelle valeur comprise entre 0 et 300 secondes par incréments de 1 seconde. Si vous configurez une fenêtre de traitement par lots, la fenêtre suivante commence dès que l'appel de fonction précédent est terminé.

    • Pour les sources d’événements Amazon MSK, Apache Kafka autogérées, Amazon MQ et Amazon DocumentDB : la fenêtre de traitement par lots par défaut est de 500 ms. Vous pouvez configurer MaximumBatchingWindowInSeconds à n’importe quelle valeur comprise entre 0 et 300 secondes par incréments de secondes. Une fenêtre de traitement par lots commence dès l’arrivée du premier registre.

      Note

      Comme vous ne pouvez modifier MaximumBatchingWindowInSeconds que par incréments de quelques secondes, vous ne pouvez pas revenir à la fenêtre de traitement par lots par défaut de 500 ms après l'avoir modifiée. Pour restaurer la fenêtre de traitement par lots par défaut, vous devez créer un mappage de source d’événement.

  • La taille du lot est atteinte. La taille minimale du lot est de 1. La taille par défaut et la taille maximale du lot dépendent de la source d’événement. Pour plus de détails sur ces valeurs, consultez les BatchSizespécifications du fonctionnement de l'CreateEventSourceMappingAPI.

  • La taille de la charge utile atteint 6 Mo. Vous ne pouvez pas modifier cette limite.

Le diagramme suivant illustre ces trois conditions. Supposons qu’une fenêtre de traitement par lots commence à t = 7 secondes. Dans le premier scénario, la fenêtre de traitement par lots atteint son maximum de 40 secondes à t = 47 secondes après avoir accumulé 5 enregistrements. Dans le second scénario, la taille du lot atteint 10 avant l’expiration de la fenêtre de traitement par lots, de sorte que la fenêtre de traitement par lots se termine plus tôt. Dans le troisième scénario, la taille maximale de la charge utile est atteinte avant l’expiration de la fenêtre de traitement par lots, de sorte que la fenêtre de traitement par lots se termine plus tôt.

Une fenêtre de traitement par lots expire lorsque l’un des trois critères suivants est satisfait : la fenêtre de traitement par lots atteint sa valeur maximale, la taille du lot est satisfaite ou la taille de la charge utile atteint 6 Mo.

API de mappage de la source d’événement

Pour gérer une source d’événement à l’aide de la AWS Command Line Interface (AWS CLI) ou d’un AWS SDK, vous pouvez utiliser les opérations d’API suivantes :