Entregue registros do DynamoDB para o Amazon S3 usando o Kinesis Data Streams e o Firehose com AWS CDK - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Entregue registros do DynamoDB para o Amazon S3 usando o Kinesis Data Streams e o Firehose com AWS CDK

Criado por Shashank Shrivastava (AWS) e Daniel Matuki da Cunha () AWS

Repositório de código: ingestão do Amazon DynamoDB no Amazon S3

Ambiente: PoC ou piloto

Tecnologias: sem servidor; lagos de dados; bancos de dados; armazenamento e backup

AWSserviços: AWSCDK; Amazon DynamoDB; Amazon Data Firehose; Amazon AWS Kinesis Data Streams; Lambda; Amazon S3

Resumo

Esse padrão fornece um código de amostra e um aplicativo para entrega de registros do Amazon DynamoDB para o Amazon Simple Storage Service (Amazon S3) usando o Amazon Kinesis Data Streams e o Amazon Data Firehose. A abordagem do padrão usa construções AWS Cloud Development Kit (AWS CDK) L3 e inclui um exemplo de como realizar a transformação de dados AWS Lambda antes que os dados sejam entregues ao bucket S3 de destino na Amazon Web Services ()AWS Cloud.

O Kinesis Data Streams registra alterações no nível de item em tabelas do DynamoDB e as replica no fluxo de dados do Kinesis requerido. Seus aplicativos podem acessar o fluxo de dados do Kinesis e visualizar as alterações no nível do item em tempo quase real. O Kinesis Data Streams também fornece acesso a outros serviços do Amazon Kinesis, como Firehose e Amazon Managed Service para Apache Flink. Isso significa desenvolver aplicativos para fornecer painéis em tempo real, gerar alertas, implementar definições de preço e de publicidade dinâmicas, além de executar análises de dados sofisticadas.

Você pode usar esse padrão para seus casos de uso de integração de dados. Por exemplo, veículos de transporte ou equipamentos industriais podem enviar grandes volumes de dados para uma tabela do DynamoDB. Esses dados podem então ser transformados e armazenados em um data lake hospedado no Amazon S3. Em seguida, você pode consultar e processar os dados e prever possíveis defeitos usando serviços sem servidor, como Amazon Athena, Amazon Redshift Spectrum, Amazon Rekognition e. AWS Glue

Pré-requisitos e limitações

Pré-requisitos

  • Um ativo Conta da AWS.

  • AWS Command Line Interface (AWS CLI), instalado e configurado. Para obter mais informações, consulte Introdução ao AWS CLI na AWS CLI documentação.

  • Node.js (18.x+) e npm, instalados e configurados. Para obter mais informações, consulte Como baixar e instalar o Node.js e o npm na documentação do npm.

  • aws-cdk (2.x+), instalado e configurado. Para obter mais informações, consulte Introdução ao AWS CDK na AWS CDK documentação.

  • O repositório GitHub aws-dynamodb-kinesisfirehose-sde 3 ingestões, clonado e configurado em sua máquina local.

  • Dados de amostra existentes para a tabela do DynamoDB. Deve usar o seguinte formato: {"SourceDataId": {"S": "123"},"MessageData":{"S": "Hello World"}}

Arquitetura

O diagrama a seguir mostra um exemplo de fluxo de trabalho para entrega de registros do DynamoDB para o Amazon S3 usando o Kinesis Data Streams e o Firehose.

Um exemplo de fluxo de trabalho para entrega de registros do DynamoDB para o Amazon S3 usando o Kinesis Data Streams e o Firehose.

O diagrama mostra o seguinte fluxo de trabalho:

  1. Os dados são ingeridos usando o Amazon API Gateway como proxy para o DynamoDB. Você também pode usar qualquer outra origem para ingerir dados no DynamoDB. 

  2. As alterações no nível do item são geradas quase em tempo real no Kinesis Data Streams para entrega ao Amazon S3.

  3. O Kinesis Data Streams envia os registros para a Firehose para transformação e entrega. 

  4. Uma função Lambda converte os registros de um formato de registro do DynamoDB em JSON formato, que contém somente os nomes e valores dos atributos do item de registro.

Ferramentas

Serviços da AWS

  • AWS Cloud Development Kit (AWS CDK)é uma estrutura de desenvolvimento de software que ajuda você a definir e provisionar a infraestrutura de AWS nuvem em código.

  • AWS CDK O Toolkit é um kit de desenvolvimento em nuvem de linha de comando que ajuda você a interagir com seu AWS CDK aplicativo.

  • AWS Command Line Interface (AWS CLI) é uma ferramenta de código aberto que ajuda você a interagir Serviços da AWS por meio de comandos em seu shell de linha de comando.

  • AWS CloudFormationajuda você a configurar AWS recursos, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em Contas da AWS e. Regiões da AWS

Repositório de código

O código desse padrão está disponível no repositório de GitHub aws-dynamodb-kinesisfirehose-s3 ingestões.

Épicos

TarefaDescriçãoHabilidades necessárias

Instale as dependências.

Em sua máquina local, instale as dependências dos arquivos package.json nos diretórios pattern/aws-dynamodb-kinesisstreams-s3 e sample-application e executando os seguintes comandos:

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

 

Desenvolvedor de aplicativos, Geral AWS

Gere o CloudFormation modelo.

  1. Execute o comando cd <project_root>/sample-application/.

  2. Execute o cdk synth comando para gerar o CloudFormation modelo.

  3. A saída AwsDynamodbKinesisfirehoseS3IngestionStack.template.json é armazenada no diretório cdk.out.

  4. Use AWS CDK ou o AWS Management Console para processar o modelo em CloudFormation.

Desenvolvedor de aplicativos, geralAWS, AWS DevOps
TarefaDescriçãoHabilidades necessárias

Verifique e implante os recursos.

  1. Execute o cdk diff comando para identificar os tipos de recursos criados pela AWS CDK construção.

  2. Execute o comando cdk deploy para implantar os recursos.

Desenvolvedor de aplicativos, geralAWS, AWS DevOps
TarefaDescriçãoHabilidades necessárias

Inclua dados de amostra na tabela do DynamoDB.

Envie uma solicitação para sua tabela do DynamoDB executando o seguinte comando em: AWS CLI

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

exemplo:

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

Por padrão, o put-item não retornará nenhum valor como saída se a operação for bem-sucedida. Se a operação falhar, ela retornará um erro. Os dados são armazenados no DynamoDB e depois enviados para o Kinesis Data Streams e o Firehose. 

Observação: você usa abordagens diferentes para adicionar dados em uma tabela do DynamoDB. Para obter mais informações, consulte Carregar dados em tabelas na documentação do DynamoDB.

Desenvolvedor de aplicativos

Verifique se um novo objeto é criado no bucket do S3.

Faça login AWS Management Console e monitore o bucket do S3 para verificar se um novo objeto foi criado com os dados que você enviou. 

Para obter mais informações, consulte GetObjecta documentação do Amazon S3.

Desenvolvedor de aplicativos, Geral AWS
TarefaDescriçãoHabilidades necessárias

Limpar os recursos.

Execute o comando cdk destroy para excluir todos os recursos usados por esse padrão.

Desenvolvedor de aplicativos, Geral AWS

Recursos relacionados