

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
<a name="deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk"></a>

*Shashank Shrivastava et Daniel Matuki da Cunha, Amazon Web Services*

## Résumé
<a name="deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk-summary"></a>

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](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html) 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
<a name="deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk-prereqs"></a>

*Conditions préalables*
+ 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](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) dans la AWS CLI documentation.
+ Node.js (18.x\$1) 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](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) dans la `npm` documentation.
+ aws-cdk (2.x\$1), installé et configuré. Pour plus d'informations, consultez la section [Mise en route avec le AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html) dans la AWS CDK documentation.
+ Le référentiel GitHub [aws-dynamodb-kinesisfirehose-s3-ingestion](https://github.com/aws-samples/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
<a name="deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk-architecture"></a>

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.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/e2a9c412-312e-4900-9774-19a281c578e4/images/6e6df998-e6c2-4eaf-b263-ace752194689.png)


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. 

1. 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.

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

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

## Outils
<a name="deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk-tools"></a>

*Services AWS*
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html)est un framework de développement logiciel qui vous aide à définir et à provisionner l'infrastructure cloud AWS sous forme de code.
+ [AWS CDK Toolkit](https://docs.aws.amazon.com/cdk/latest/guide/cli.html) 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)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) est un outil open source qui vous permet d'interagir Services AWS par le biais de commandes dans votre interface de ligne de commande.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)vous 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, de bout Comptes AWS en bout 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](https://github.com/aws-samples/aws-dynamodb-kinesisfirehose-s3-ingestion/).

## Épopées
<a name="deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk-epics"></a>

### Configuration et configuration de l'exemple de code
<a name="set-up-and-configure-the-sample-code"></a>


| Sous-tâche | Description | Compé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 :<pre>cd <project_root>/pattern/aws-dynamodb-kinesisstreams-s3 </pre><pre>npm install && npm run build</pre><pre>cd <project_root>/sample-application/</pre><pre>npm install && npm run build</pre>  | Développeur d'applications, AWS général | 
| Générez le CloudFormation modèle. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk.html) | Développeur d'applications, AWS général, AWS DevOps | 

### Déployez les ressources
<a name="deploy-the-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Vérifiez et déployez les ressources. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk.html) | Développeur d'applications, AWS général, AWS DevOps | 

### Ingérez des données dans la table DynamoDB pour tester la solution
<a name="ingest-data-into-the-dynamodb-table-to-test-the-solution"></a>


| Sous-tâche | Description | Compé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. 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](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SampleData.LoadData.html) 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 [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)la documentation Amazon S3. | Développeur d'applications, AWS général | 

### nettoyer des ressources ;
<a name="clean-up-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| nettoyer les ressources.  | Exécutez la `cdk destroy` commande pour supprimer toutes les ressources utilisées par ce modèle. | Développeur d'applications, AWS général | 

## Ressources connexes
<a name="deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk-resources"></a>
+ [s-3 static-site-stack .ts](https://github.com/awslabs/aws-solutions-constructs/blob/main/source/use_cases/aws-s3-static-website/lib/s3-static-site-stack.ts#L25) (GitHub dépôt)
+ [aws-apigateway-dynamodb module](https://github.com/awslabs/aws-solutions-constructs/tree/main/source/patterns/%40aws-solutions-constructs/aws-apigateway-dynamodb) (GitHub référentiel)
+ [aws-kinesisstreams-kinesisfirehose-sModule 3](https://github.com/awslabs/aws-solutions-constructs/tree/main/source/patterns/%40aws-solutions-constructs/aws-kinesisstreams-kinesisfirehose-s3) (GitHub référentiel)
+ [Modifier la capture des données pour DynamoDB Streams (documentation DynamoDB)](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.html)
+ [Utilisation de Kinesis Data Streams pour capturer les modifications apportées à DynamoDB (documentation DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/kds.html))