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.
Intégration de DynamoDB à Amazon EventBridge
Amazon DynamoDB propose DynamoDB Streams pour la capture des données de modification, ce qui permet de capturer les modifications au niveau des éléments dans les tables DynamoDB. DynamoDB Streams peut invoquer des fonctions Lambda pour traiter ces modifications, ce qui permet une intégration basée sur les événements à d’autres services et applications. DynamoDB Streams prend également en charge le filtrage, ce qui permet un traitement des événements efficace et ciblé.
DynamoDB Streams prend en charge jusqu’à deux consommateurs simultanés par partition et prend en charge le filtrage via le filtrage des événements Lambda, de sorte que seuls les éléments répondant à des critères spécifiques soient traités. Certains clients peuvent avoir besoin de prendre en charge plus de deux clients. D’autres peuvent avoir besoin d’enrichir les événements de modification avant qu’ils ne soient traités, ou d’utiliser un filtrage et un routage plus avancés.
L’intégration de DynamoDB à EventBridge peut répondre à ces exigences.
Amazon EventBridge est un service sans serveur qui utilise des événements pour connecter les composants de l’application entre eux, ce qui vous permet de créer plus facilement des applications évolutives axées sur des événements. EventBridge propose une intégration native à Amazon DynamoDB via EventBridge Pipes, permettant ainsi un flux de données transparent entre DynamoDB et un bus EventBridge. Ce bus peut ensuite être diffusé vers plusieurs applications et services via un ensemble de règles et de cibles.
Fonctionnement
L’intégration entre les canaux DynamoDB et EventBridge utilise DynamoDB Streams pour capturer une séquence chronologique des modifications au niveau des éléments dans une table DynamoDB. Chaque enregistrement capturé de cette manière contient les données modifiées dans la table.
Un canal EventBridge utilise les événements provenant de DynamoDB Streams et les achemine vers une cible telle qu’un bus EventBridge (un bus d’événements est un routeur qui reçoit des événements et les transmet à des destinations, également appelées cibles). La livraison dépend des règles qui correspondent au contenu de l’événement. Le canal offre également la possibilité d’effectuer un filtrage sur des événements spécifiques et d’enrichir leurs données d’événement avant de les envoyer à la cible.
Bien qu’EventBridge prenne en charge plusieurs types de cibles, il est courant d’utiliser une fonction Lambda comme cible lors de la mise en œuvre d’une conception en éventail. L’exemple suivant démontre une intégration à une fonction Lambda cible.
Mise à jour d’une intégration via la console
Suivez les étapes ci-dessous pour créer une intégration via la AWS Management Console.
-
Activez DynamoDB Streams sur la table source en suivant les étapes décrites dans la section Activation d’un flux du guide du développeur DynamoDB. Si DynamoDB Streams est déjà activé dans la table source, vérifiez qu’il y a actuellement moins de deux consommateurs. Les consommateurs peuvent être des fonctions Lambda, des tables globales DynamoDB, des intégrations zéro ETL d’Amazon DynamoDB à Amazon OpenSearch Service ou des applications qui lisent directement à partir de flux, par exemple via l’adaptateur DynamoDB Streams Kinesis.
-
Créez un bus d’événements EventBridge en suivant les étapes décrites dans la section Création d’un bus d’événements Amazon EventBridge du Guide de l’utilisateur d’EventBridge.
-
Lors de la création du bus d’événements, activez la découverte de schémas.
-
-
Créez un canal EventBridge en suivant les étapes décrites dans la section Création d’un canal Amazon EventBridge du Guide de l’utilisateur d’EventBridge.
-
Lors de la configuration de la source, dans le champ Source, sélectionnez DynamoDB et dans le champ DynamoDB Streams, sélectionnez le nom du flux de table source.
-
Lors de la configuration de la cible, dans le champ Service cible, sélectionnez le Bus d’événements EventBridge et dans le champ Bus d’événements comme cible, sélectionnez le bus d’événements créé à l’étape 2.
-
-
Écrivez un exemple d’élément dans la table DynamoDB source pour déclencher un événement. Cela permettra à EventBridge de déduire le schéma à partir de l’exemple d’élément. Ce schéma peut être utilisé pour créer des règles pour les événements de routage. Par exemple, si vous implémentez un modèle de conception qui implique de surcharger les attributs, vous souhaiterez peut-être déclencher des règles différentes en fonction de la valeur de votre clé de tri. Vous trouverez des informations sur la manière d’écrire un élément dans DynamoDB dans la section Working with items and attributes du Guide du développeur DynamoDB.
-
Créez un exemple de fonction Lambda Python à utiliser comme cible en suivant les étapes décrites dans la section Building Lambda functions with Python du Guide du développeur Lambda. Lors de la création de votre fonction, vous pouvez utiliser l’exemple de code ci-dessous pour démontrer l’intégration. Lorsqu’elle est invoquée, les éléments
NewImageetOldImagereçus avec l’événement, qui peut être consulté dans CloudWatch Logs, sont imprimés.import json def lambda_handler(event, context): dynamodb = event.get('detail', {}).get('dynamodb', {}) new_image = dynamodb.get('NewImage') old_image = dynamodb.get('OldImage') if new_image: print("NewImage:", json.dumps(new_image, indent=2)) if old_image: print("OldImage:", json.dumps(old_image, indent=2)) return {'statusCode': 200, 'body': json.dumps(event)} -
Créez une règle EventBridge qui acheminera les événements vers votre nouvelle fonction Lambda en suivant les étapes décrites dans la section Création d’une règle qui réagit aux événements du Guide de l’utilisateur EventBridge.
-
Lorsque vous définissez le détail de la règle, sélectionnez le nom du bus d’événements que vous avez créé à l’étape 2 en tant que bus d’événements.
-
Lorsque vous créez le modèle d’événement, suivez le guide du schéma existant. Ici, vous pouvez sélectionner le registre de schémas découverts et le schéma découvert pour votre événement. Cela vous permet de configurer un modèle d’événement spécifique à votre cas d’utilisation qui achemine uniquement les messages correspondant à des attributs spécifiques. Par exemple, si vous souhaitez associer uniquement sur les éléments DynamoDB où le kit SK commence par
“user#”, vous devez utiliser une configuration comme celle-ci.
-
Cliquez sur Générer un modèle d’événement au format JSON une fois que vous avez fini de concevoir un modèle par rapport à votre schéma. Si vous souhaitez plutôt associer tous les événements qui apparaissent sur DynamoDB Streams, utilisez le JSON suivant pour le modèle d’événement.
{ "source": ["aws.dynamodb"] } -
Lorsque vous sélectionnez des cibles, suivez le guide du service AWS. Pour Sélectionner une cible, choisissez « Fonction Lambda ». Dans le champ Fonction, sélectionnez la fonction Lambda que vous avez créée à l’étape 5.
-
-
Vous pouvez désormais arrêter la découverte de schémas sur le bus d’événement en suivant les étapes de la section the Starting or stopping schema discovery on event buses guide de l’utilisateur EventBridge.
-
Écrivez un deuxième exemple d’élément dans la table DynamoDB source pour déclencher un événement. Vérifiez que l’événement a été correctement traité à chaque étape.
-
Consultez la métrique CloudWatch PutEventsApproximateSuccessCount pour le bus d’événements en suivant la section Monitoring Amazon EventBridge Guide de l’utilisateur EventBridge.
-
Consultez les journaux des fonctions de votre fonction Lambda en suivant la section Monitoring and troubleshooting Lambda functions du guide du développeur Lambda. Si la fonction Lambda utilise l’exemple de code fourni, les flux
NewImageetOldImageprovenant de DynamoDB Streams devraient être imprimés dans le groupe de journaux CloudWatch Logs. -
Consultez la mesure Nombre d’erreurs et taux de réussite (%) de la fonction Lambda en suivant la section Monitoring and troubleshooting Lambda functions du Guide du développeur Lambda.
-
Étapes suivantes
Cet exemple présente une intégration de base avec une seule fonction Lambda en tant que cible. Pour mieux comprendre les configurations plus complexes, telles que la création de règles multiples, la création de cibles multiples, l’intégration à d’autres services et l’enrichissement des événements, consultez le guide utilisateur EventBridge complet Getting started with EventBridge.
Note
Soyez conscient des quotas EventBridge susceptibles d’être pertinents pour votre application. Bien que la capacité de DynamoDB Streams évolue en fonction de votre table, les quotas d’EventBridge sont distincts. Les quotas courants à prendre en compte dans une application de grande taille sont les suivants : Invocations throttle limit in transactions per second et PutEvents throttle limit in transactions per second. Ces quotas spécifient le nombre d’invocations qui peuvent être envoyées aux cibles et le nombre d’événements par seconde qui peuvent être placés dans le bus.