Fournissez des enregistrements DynamoDB à Amazon S3 à l'aide de Kinesis Data Streams et Firehose avec AWS CDK - Recommandations AWS

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.

Fournissez des enregistrements DynamoDB à Amazon S3 à l'aide de Kinesis Data Streams et Firehose avec AWS CDK

Créé par Shashank Shrivastava (AWS) et Daniel Matuki da Cunha () AWS

Référentiel de code : ingestion d'Amazon DynamoDB dans Amazon S3

Environnement : PoC ou pilote

Technologies : sans serveur ; lacs de données ; bases de données ; stockage et sauvegarde

AWSservices : Amazon DynamoDB AWS CDK ; Amazon Data Firehose ; Amazon Kinesis Data Streams ; Lambda ; Amazon S3 AWS

Récapitulatif

Ce modèle fournit un exemple de code et une application permettant de transmettre des enregistrements d'Amazon DynamoDB à Amazon Simple Storage Service (Amazon S3) à l'aide d'Amazon Kinesis Data Streams et d'Amazon Data Firehose. L'approche du modèle utilise des constructions AWS Cloud Development Kit (AWS CDK) L3 et inclut un exemple de la manière d'effectuer une transformation des données AWS Lambda avant que les données ne soient livrées au compartiment S3 cible sur le cloud Amazon Web Services (AWS).

Kinesis Data Streams enregistre les modifications apportées au niveau des éléments dans les tables DynamoDB et les réplique dans le flux de données Kinesis requis. Vos applications peuvent accéder au flux de données Kinesis et afficher les modifications au niveau élément en quasi-temps réel. Kinesis Data Streams donne également accès à d'autres services Amazon Kinesis, tels que Firehose et Amazon Managed Service pour Apache Flink. Cela signifie que vous pouvez créer des applications qui fournissent des tableaux de bord en temps réel, génèrent des alertes, mettent en œuvre des prix et des publicités dynamiques et effectuent des analyses de données sophistiquées.

Vous pouvez utiliser ce modèle pour vos cas d'utilisation en matière d'intégration de données. Par exemple, les véhicules de transport ou les équipements industriels peuvent envoyer de gros volumes de données vers une table DynamoDB. Ces données peuvent ensuite être transformées et stockées dans un lac de données hébergé dans Amazon S3. Vous pouvez ensuite interroger et traiter les données et prévoir tout défaut potentiel en utilisant des services sans serveur tels qu'Amazon Athena, Amazon Redshift Spectrum, Amazon Rekognition et. AWS Glue

Conditions préalables et limitations

Prérequis

  • Un actif Compte AWS.

  • AWS Command Line Interface (AWS CLI), installé et configuré. Pour plus d'informations, consultez la section Mise en route avec le AWS CLI dans la AWS CLI documentation.

  • Node.js (18.x+) et npm, installés et configurés. Pour plus d'informations, consultez la section Téléchargement et installation de Node.js et de npm dans la npm documentation.

  • aws-cdk (2.x+), installé et configuré. Pour plus d'informations, consultez la section Mise en route avec le AWS CDK dans la AWS CDK documentation.

  • Le référentiel GitHub aws-dynamodb-kinesisfirehose-s3-ingestion, cloné et configuré sur votre machine locale.

  • Exemples de données existants pour la table DynamoDB. Les données doivent utiliser le format suivant : {"SourceDataId": {"S": "123"},"MessageData":{"S": "Hello World"}}

Architecture

Le schéma suivant montre un exemple de flux de travail permettant de transférer des enregistrements de DynamoDB vers Amazon S3 à l'aide de Kinesis Data Streams et Firehose.

Exemple de flux de travail pour transmettre des enregistrements de DynamoDB à Amazon S3 à l'aide de Kinesis Data Streams et Firehose.

Le schéma suivant illustre le flux de travail suivant :

  1. Les données sont ingérées à l'aide d'Amazon API Gateway en tant que proxy pour DynamoDB. Vous pouvez également utiliser n'importe quelle autre source pour ingérer des données dans DynamoDB. 

  2. Les modifications au niveau des articles sont générées en temps quasi réel dans Kinesis Data Streams pour être transmises à Amazon S3.

  3. Kinesis Data Streams envoie les enregistrements à Firehose pour transformation et livraison. 

  4. Une fonction Lambda convertit les enregistrements d'un format d'enregistrement DynamoDB en un format qui contient uniquement les noms JSON et les valeurs des attributs des éléments d'enregistrement.

Outils

AWS services

  • AWS Cloud Development Kit (AWS CDK)est un framework de développement logiciel qui vous aide à définir et à provisionner l'infrastructure AWS cloud sous forme de code.

  • AWS CDK Toolkit est un kit de développement cloud en ligne de commande qui vous permet d'interagir avec votre AWS CDK application.

  • AWS Command Line Interface (AWS CLI) est un outil open source qui vous permet d'interagir AWS services par le biais de commandes dans votre interface de ligne de commande.

  • AWS CloudFormationvous aide à configurer les AWS ressources, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie à travers Comptes AWS et Régions AWS.

Référentiel de code

Le code de ce modèle est disponible dans le référentiel GitHub aws-dynamodb-kinesisfirehose-s3-ingestion.

Épopées

TâcheDescriptionCompétences requises

Installez les dépendances.

Sur votre machine locale, installez les dépendances à partir des package.json fichiers des sample-application répertoires pattern/aws-dynamodb-kinesisstreams-s3 et en exécutant les commandes suivantes :

cd <project_root>/pattern/aws-dynamodb-kinesisstreams-s3
npm install && npm run build
cd <project_root>/sample-application/
npm install && npm run build

 

Développeur d'applications, général AWS

Générez le CloudFormation modèle.

  1. Exécutez la commande cd <project_root>/sample-application/.

  2. Exécutez la cdk synth commande pour générer le CloudFormation modèle.

  3. La AwsDynamodbKinesisfirehoseS3IngestionStack.template.json sortie est stockée dans le cdk.out répertoire.

  4. Utilisez AWS CDK ou AWS Management Console pour traiter le modèle dans CloudFormation.

Développeur d'applications, généralAWS, AWS DevOps
TâcheDescriptionCompétences requises

Vérifiez et déployez les ressources.

  1. Exécutez la cdk diff commande pour identifier les types de ressources créés par la AWS CDK construction.

  2. Exécutez la cdk deploy commande pour déployer les ressources.

Développeur d'applications, généralAWS, AWS DevOps
TâcheDescriptionCompétences requises

Ingérez vos exemples de données dans la table DynamoDB.

Envoyez une demande à votre table DynamoDB en exécutant la commande suivante dans : AWS CLI

aws dynamodb put-item --table-name <your_table_name> --item '{"<table_partition_key>": {"S": "<partition_key_ID>"},"MessageData":{"S": "<data>"}}'

exemple :

aws dynamodb put-item --table-name SourceData_table --item '{"SourceDataId": {"S": "123"},"MessageData":{"S": "Hello World"}}'

Par défaut, le put-item ne renvoie aucune valeur en sortie si l'opération réussit. Si l'opération échoue, elle renvoie une erreur. Les données sont stockées dans DynamoDB puis envoyées à Kinesis Data Streams et Firehose. 

Remarque : Vous utilisez différentes approches pour ajouter des données dans une table DynamoDB. Pour plus d'informations, consultez la section Charger des données dans des tables dans la documentation DynamoDB.

Développeur d'applications

Vérifiez qu'un nouvel objet est créé dans le compartiment S3.

Connectez-vous au compartiment S3 AWS Management Console et surveillez-le pour vérifier qu'un nouvel objet a été créé avec les données que vous avez envoyées. 

Pour plus d'informations, consultez GetObjectla documentation Amazon S3.

Développeur d'applications, général AWS
TâcheDescriptionCompétences requises

Nettoyez les ressources.

Exécutez la cdk destroy commande pour supprimer toutes les ressources utilisées par ce modèle.

Développeur d'applications, général AWS

Ressources connexes