Stream Amazon DynamoDB en tant que source pour Pipes EventBridge - Amazon EventBridge

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.

Stream Amazon DynamoDB en tant que source pour Pipes EventBridge

Vous pouvez utiliser EventBridge Pipes pour recevoir des enregistrements dans un flux DynamoDB. Ensuite, vous pouvez éventuellement filtrer ou améliorer ces enregistrements avant de les envoyer à une cible pour être traités. Il existe des paramètres spécifiques à Amazon DynamoDB Streams que vous pouvez sélectionner lors de la configuration du canal. EventBridge Pipes conserve l'ordre des enregistrements du flux de données lors de l'envoi de ces données vers la destination.

Important

La désactivation d’un flux DynamoDB qui est la source d’un canal rend ce canal inutilisable, même si vous réactivez le flux par la suite. Cela se produit pour les raisons suivantes :

  • Vous ne pouvez pas arrêter, démarrer ou mettre à jour un canal dont la source est désactivée.

  • Vous ne pouvez pas mettre à jour un canal avec une nouvelle source après sa création. Lorsque vous réactivez un flux DynamoDB, un nouveau nom de ressource Amazon ARN () lui est attribué et n'est plus associé à votre canal.

Si vous réactivez le flux DynamoDB, vous devrez alors créer un nouveau canal en utilisant le nouveau flux. ARN

Exemple d’évènement

L’exemple d’événement suivant montre les informations reçues par le canal. Vous pouvez utiliser cet événement pour créer et filtrer vos modèles d’événements, ou pour définir la transformation d’entrée. Tous les champs ne peuvent pas être filtrés. Pour plus d’informations sur les champs que vous pouvez filtrer, consultez Filtrage des événements dans Amazon EventBridge Pipes.

[ { "eventID": "1", "eventVersion": "1.0", "dynamodb": { "Keys": { "Id": { "N": "101" } }, "NewImage": { "Message": { "S": "New item!" }, "Id": { "N": "101" } }, "StreamViewType": "NEW_AND_OLD_IMAGES", "SequenceNumber": "111", "SizeBytes": 26 }, "awsRegion": "us-west-2", "eventName": "INSERT", "eventSourceARN": "arn:aws:dynamodb:us-east-1:111122223333:table/EventSourceTable", "eventSource": "aws:dynamodb" }, { "eventID": "2", "eventVersion": "1.0", "dynamodb": { "OldImage": { "Message": { "S": "New item!" }, "Id": { "N": "101" } }, "SequenceNumber": "222", "Keys": { "Id": { "N": "101" } }, "SizeBytes": 59, "NewImage": { "Message": { "S": "This item has changed" }, "Id": { "N": "101" } }, "StreamViewType": "NEW_AND_OLD_IMAGES" }, "awsRegion": "us-west-2", "eventName": "MODIFY", "eventSourceARN": "arn:aws:dynamodb:us-east-1:111122223333:table/EventSourceTable", "eventSource": "aws:dynamodb" } ]

Flux d’interrogation et de mise en lots

EventBridge interroge les partitions de votre flux DynamoDB à la recherche d'enregistrements à une fréquence de base de quatre fois par seconde. Lorsque les enregistrements sont disponibles, EventBridge traite l'événement et attend le résultat. Si le traitement aboutit, EventBridge reprend le sondage jusqu'à ce qu'il reçoive d'autres enregistrements.

Par défaut, EventBridge invoque votre canal dès que les enregistrements sont disponibles. Si le lot qui EventBridge lit à partir de la source ne contient qu'un seul enregistrement, un seul événement est traité. Pour éviter de traiter un petit nombre d’enregistrements, vous pouvez indiquer au canal de les mettre en mémoire tampon pendant cinq minutes maximum en configurant une fenêtre de traitement par lots. Avant de traiter les événements, EventBridge continue de lire les enregistrements depuis la source jusqu'à ce que le lot soit complet, que la fenêtre de traitement par lots expire ou que le lot atteigne la limite de charge utile de 6 Mo.

Vous pouvez également augmenter la simultanéité en traitant plusieurs lots de chaque partition en parallèle. EventBridge peut traiter simultanément jusqu'à 10 lots par partition. Si vous augmentez le nombre de lots simultanés par partition, vous garantissez EventBridge toujours le traitement dans l'ordre au niveau de la clé de partition.

Configurez le paramètre ParallelizationFactor pour traiter une partition d’un flux de données Kinesis ou DynamoDB avec plusieurs exécutions de canal simultanément. Vous pouvez spécifier le nombre de lots simultanés qui partent d'une EventBridge partition via un facteur de parallélisation compris entre 1 (par défaut) et 10. Par exemple, lorsque vous définissez cette valeur ParallelizationFactor sur 2, vous pouvez avoir 200 exécutions de EventBridge Pipe simultanées au maximum pour traiter 100 fragments de données Kinesis. Cela permet d’augmenter le débit de traitement quand le volume de données est volatil et que la valeur du paramètre IteratorAge est élevée. Notez que le facteur de parallélisation ne fonctionnera pas si vous utilisez l’agrégation Kinesis.

Position de départ du sondage et du stream

Sachez que l’interrogation des sources de flux lors de la création et des mises à jour du canal est finalement cohérente.

  • Lors de la création du canal, le démarrage de l’interrogation des événements depuis le flux peut prendre plusieurs minutes.

  • Lors des mises à jour du canal dans la configuration d’interrogation des sources, l’arrêt et le redémarrage de l’interrogation des événements depuis le flux peuvent prendre plusieurs minutes.

Cela signifie que si vous spécifiez LATEST comme position de départ du flux, le canal peut manquer des événements envoyés lors de la création ou des mises à jour du canal. Pour vous assurer de ne manquer aucun événement, définissez la position de départ du flux sur TRIM_HORIZON.

Signalement des échecs d’articles par lots

Lorsqu'il EventBridge consomme et traite des données en streaming à partir d'une source, il vérifie par défaut le numéro de séquence le plus élevé d'un lot, mais uniquement lorsque le lot est totalement réussi. Pour éviter de retraiter les messages dont le traitement a réussi dans un lot ayant échoué, vous pouvez configurer votre enrichissement ou votre cible de sorte à renvoyer un objet en indiquant les messages qui ont réussi et ceux qui ont échoué. C’est ce que l’on appelle une réponse partielle de lot.

Pour plus d’informations, consultez Défaillance partielle d’un lot.

Conditions de réussite et d’échec

Si vous renvoyez l'un des éléments suivants, EventBridge considère un lot comme une réussite totale :

  • Une liste batchItemFailure vide

  • Une liste batchItemFailure nulle

  • Une EventResponse vide

  • Une EventResponse nulle

Si vous renvoyez l'un des éléments suivants, EventBridge considère un lot comme un échec total :

  • Une chaîne itemIdentifier vide

  • Un itemIdentifier nul

  • Un itemIdentifier avec un nom de clé incorrect

EventBridge les nouvelles tentatives échouent en fonction de votre stratégie de relance.