Entregue registros de DynamoDB a Amazon S3 mediante Kinesis Data Streams y Firehose con AWS CDK - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Entregue registros de DynamoDB a Amazon S3 mediante Kinesis Data Streams y Firehose con AWS CDK

Creado por Shashank Shrivastava () y Daniel Matuki da Cunha () AWS AWS

Repositorio de código: incorporación de Amazon DynamoDB a Amazon S3

Entorno: PoC o piloto

Tecnologías: sin servidor; lagos de datos; bases de datos; almacenamiento y copia de seguridad

AWSservicios: Amazon DynamoDB AWSCDK; Amazon Data Firehose; Amazon Kinesis Data Streams; Lambda; Amazon S3 AWS

Resumen

Este patrón proporciona un código de muestra y una aplicación para entregar registros de Amazon DynamoDB a Amazon Simple Storage Service (Amazon S3) mediante Amazon Kinesis Data Streams y Amazon Data Firehose. El enfoque del patrón utiliza construcciones de AWS Cloud Development Kit (AWS CDK) nivel 3 e incluye un ejemplo de cómo realizar la transformación de datos AWS Lambda antes de que los datos se entreguen al depósito S3 de destino en la nube de Amazon Web Services (AWS).

Kinesis Data Streams captura modificaciones a nivel de elemento en cualquier tabla de DynamoDB y las replica en una secuencia de datos de Kinesis. Sus aplicaciones pueden acceder al flujo de datos de Kinesis y ver los cambios a nivel de elemento casi en tiempo real. Kinesis Data Streams también proporciona acceso a otros servicios de Amazon Kinesis, como Firehose y Amazon Managed Service para Apache Flink. Puede crear aplicaciones que proporcionen paneles en tiempo real, generen alertas, apliquen precios y publicidad dinámicos y realicen análisis de datos sofisticados.

Puede usar este patrón para sus casos de uso de integración de datos. Por ejemplo, los vehículos de transporte o equipos industriales pueden enviar grandes volúmenes de datos a una tabla de DynamoDB. Estos datos se pueden transformar y almacenar en un lago de datos alojado en Amazon S3. A continuación, puede consultar y procesar los datos y predecir cualquier posible defecto mediante servicios sin servidor como Amazon Athena, Amazon Redshift Spectrum, Amazon Rekognition y. AWS Glue

Requisitos previos y limitaciones

Requisitos previos 

  • Un activo. Cuenta de AWS

  • AWS Command Line Interface (AWS CLI), instalado y configurado. Para obtener más información, consulte Primeros pasos con AWS CLIél en la AWS CLI documentación.

  • Node.js (18.x+) y npm, instalados y configurados. Para obtener más información, consulte Descargar e instalar Node.js y npm en la documentación de npm.

  • aws-cdk (2.x+), instalado y configurado. Para obtener más información, consulte Primeros pasos con el en la documentación. AWS CDK AWS CDK

  • El repositorio GitHub aws-dynamodb-kinesisfirehose-sde 3 ingestas, clonado y configurado en su máquina local.

  • Datos de ejemplo existentes para la tabla de DynamoDB. Los datos deben utilizar el siguiente formato: {"SourceDataId": {"S": "123"},"MessageData":{"S": "Hello World"}}

Arquitectura

El siguiente diagrama muestra un ejemplo de flujo de trabajo para entregar registros de DynamoDB a Amazon S3 mediante Kinesis Data Streams y Firehose.

Un ejemplo de flujo de trabajo para entregar registros de DynamoDB a Amazon S3 mediante Kinesis Data Streams y Firehose.

En el diagrama, se muestra el siguiente flujo de trabajo:

  1. Los datos se ingieren mediante Amazon API Gateway como proxy para DynamoDB. También puede usar cualquier otro origen para incorporar datos en DynamoDB. 

  2. Los cambios a nivel de elemento se generan prácticamente en tiempo real en Kinesis Data Streams para su entrega a Amazon S3.

  3. Kinesis Data Streams envía los registros a Firehose para su transformación y entrega. 

  4. Una función Lambda convierte los registros de un formato de registro de DynamoDB a un formato que contiene solo los nombres y JSON valores de los atributos de los elementos del registro.

Herramientas

Servicios de AWS

  • AWS Cloud Development Kit (AWS CDK)es un marco de desarrollo de software que le ayuda a definir y aprovisionar la infraestructura de AWS la nube en código.

  • AWS CDK Toolkit es un kit de desarrollo en la nube de línea de comandos que le ayuda a interactuar con su AWS CDK aplicación.

  • AWS Command Line Interface (AWS CLI) es una herramienta de código abierto que te ayuda a interactuar Servicios de AWS mediante los comandos de tu shell de línea de comandos.

  • AWS CloudFormationle ayuda a configurar AWS los recursos, aprovisionarlos de forma rápida y coherente y gestionarlos a lo largo de su ciclo de vida en todo el territorio y. Cuentas de AWS Regiones de AWS

Repositorio de código

El código de este patrón está disponible en el repositorio de GitHub aws-dynamodb-kinesisfirehose-s3 ingestas.

Epics

TareaDescripciónHabilidades requeridas

Instale las dependencias.

En su máquina local, instale las dependencias de los archivos package.json en los directorios pattern/aws-dynamodb-kinesisstreams-s3 y sample-application ejecutando los siguientes comandos:

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

 

Desarrollador de aplicaciones, general AWS

Genera la CloudFormation plantilla.

  1. Ejecute el comando cd <project_root>/sample-application/.

  2. Ejecute el cdk synth comando para generar la CloudFormation plantilla.

  3. Los resultados AwsDynamodbKinesisfirehoseS3IngestionStack.template.json quedan almacenados en el directorio cdk.out.

  4. Utilice AWS CDK o AWS Management Console para procesar la plantilla CloudFormation.

Desarrollador de aplicaciones, generalAWS, AWS DevOps
TareaDescripciónHabilidades requeridas

Compruebe e implemente los recursos.

  1. Ejecute el cdk diff comando para identificar los tipos de recursos que crea la AWS CDK construcción.

  2. Ejecute el comando cdk deploy para implementar los recursos.

Desarrollador de aplicaciones, generalAWS, AWS DevOps
TareaDescripciónHabilidades requeridas

Incorpore sus datos de muestra en la tabla de DynamoDB.

Envíe una solicitud a la tabla de DynamoDB ejecutando el siguiente comando en: AWS CLI

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

ejemplo:

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

De forma predeterminada, put-item no devuelve ningún valor como resultado si la operación se realiza correctamente. Si la operación falla, devuelve un error. Los datos se almacenan en DynamoDB y, a continuación, se envían a Kinesis Data Streams y Firehose. 

Nota: Puede adoptar diferentes enfoques para añadir datos a una tabla de DynamoDB. Para obtener más información, consulte Cargar datos en tablas en la documentación de DynamoDB.

Desarrollador de aplicaciones

Verifique que se crea un objeto nuevo en el bucket de S3.

Inicie sesión en el bucket de S3 AWS Management Console y supervise el mismo para comprobar que se ha creado un objeto nuevo con los datos que ha enviado. 

Para obtener más información, consulte GetObjectla documentación de Amazon S3.

Desarrollador de aplicaciones, general AWS
TareaDescripciónHabilidades requeridas

Limpiar recursos.

Ejecute el comando cdk destroy para eliminar todos los recursos usados por este patrón.

Desarrollador de aplicaciones, General AWS

Recursos relacionados