[Video] DynamoDB Streams avec AWS Lambda SAA
Objectifs
- Activer DynamoDB Streams sur une table DynamoDB.
- Déclencher une fonction AWS Lambda lorsqu’un changement est détecté dans la table.
- Stocker les événements dans Amazon S3 ou les afficher dans CloudWatch Logs.
- Envoyer les événements capturés à une file Amazon SQS.
Cliquer sur le bouton ci dessous pour télécharger le template cloudformation
Étape 1 : Déploiement de l’infrastructure avec AWS CloudFormation
- Ouvrir la console AWS et accéder à CloudFormation.
- Déployer le template YAML : template-lab-dynamo-streams.yaml.
- Une fois le déploiement terminé, explorer les ressources créées.
Vérification des ressources créées
1. Table DynamoDB
- Aller dans AWS > DynamoDB > Tables et ouvrir la table OrdersTable.
- Vérifier que DynamoDB Streams est actuellement désactivé.
2. Rôle IAM
- Aller dans AWS > IAM > Roles et rechercher le rôle LambdaDynamoDBSQSPublisher.
- Vérifier les permissions existantes.
- Modifier ce rôle pour ajouter la permission AWSLambdaInvocation-DynamoDB, permettant à Lambda d’interagir avec DynamoDB.
3. Fonction AWS Lambda
- Aller dans AWS > Lambda et rechercher la fonction DynamoDBStreamProcessor.
- Vérifier qu’elle n’a pas encore de trigger ni de rôle IAM associé (ils seront configurés plus tard).
- Explorer le code et la variable d’environnement associée.
4. File Amazon SQS
- Aller dans AWS > SQS et vérifier que la file DynamoDBEventQueue a bien été créée.
Étape 2 : Configuration de la fonction Lambda
Ajout d’un déclencheur sur DynamoDB Streams
- Accéder à AWS Lambda > DynamoDBStreamProcessor.
- Cliquer sur Ajouter un déclencheur.
- Configurer le déclencheur avec les paramètres suivants :
- Source de déclenchement : DynamoDB.
- Table : OrdersTable.
- Stream : Activer DynamoDB Streams sur la table.
- Mode de traitement : Lecture en continu (désactiver la lecture en batch).
- Cliquer sur Ajouter pour finaliser la configuration.
Étape 3 : Tester l’injection de données dans DynamoDB via AWS CLI
Ajout d’un élément dans DynamoDB
aws dynamodb put-item --table-name OrdersTable --item '{
"OrderID": {"S": "1001"},
"Customer": {"S": "Alice"},
"Total": {"N": "250"}
}'
Suppression d’un élément
aws dynamodb delete-item --table-name OrdersTable --key '{"OrderID": {"S": "1001"}}'
Étape 4 : Vérification du pipeline DynamoDB → Lambda → SQS
Récupérer le message dans SQS
1. Exécuter la commande suivante pour recevoir le message depuis Amazon SQS :
aws sqs receive-message --queue-url
2. Remplacer <SQS_QUEUE_URL> par l’URL de la file récupérée à l’étape 1.
Étape 5 : Nettoyage des ressources
Suppression des ressources pour éviter des frais
aws cloudformation delete-stack --stack-name DynamoDBCDCStack
Vérification de la suppression du stack
aws cloudformation describe-stacks --stack-name DynamoDBCDCStack
Conclusion
Dans ce lab, nous avons :
✅ Activé DynamoDB Streams et configuré une fonction AWS Lambda pour capturer les événements en temps réel.
✅ Stocké ces événements dans Amazon SQS.
✅ Vérifié la transmission des événements en testant l’insertion, la mise à jour et la suppression de données dans DynamoDB.
Ce mécanisme permet de mettre en place un Change Data Capture (CDC) évolutif et réactif pour alimenter des pipelines de données ou déclencher des workflows automatisés.