Implemente e gerencie um data lake sem servidor na AWS nuvem usando a infraestrutura como código - 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á.

Implemente e gerencie um data lake sem servidor na AWS nuvem usando a infraestrutura como código

Criado por Kirankumar Chandrashekar () e Abdel Jaidi () AWS AWS

Ambiente: produção

Tecnologias: DataLakes; Análise; Sem servidor; DevOps

Workload: todas as outras workloads

AWSserviços: Amazon S3; AmazonSQS; AWS CloudFormation AWS Glue; Amazon; CloudWatch AWS Lambda; Step AWS Functions; Amazon DynamoDB

Resumo

Esse padrão descreve como usar a computação sem servidor e a infraestrutura como código (IaC) para implementar e administrar um data lake na nuvem da Amazon Web Services (). AWS Esse padrão é baseado no workshop serverless data lake framework (SDLF) desenvolvido por. AWS

SDLFé uma coleção de recursos reutilizáveis que aceleram a entrega de lagos de dados corporativos na AWS nuvem e ajudam a acelerar a implantação na produção. Ela é usada para implementar a estrutura básica de um data lake seguindo as práticas recomendadas.

SDLFimplementa um processo de integração contínua/implantação contínua (CI/CD) em toda a implantação do código e da infraestrutura usando AWS serviços como AWS CodePipeline, e. AWS CodeBuild AWS CodeCommit

Esse padrão usa vários serviços AWS sem servidor para simplificar o gerenciamento do data lake. Isso inclui Amazon Simple Storage Service (Amazon S3) e Amazon DynamoDB para armazenamento, AWS Lambda e AWS Glue para computação e Amazon CloudWatch Events, Amazon Simple Queue Service (AmazonSQS) e Step Functions para orquestração. AWS

AWS CloudFormation e os serviços de AWS código atuam como a camada de IaC para fornecer implantações rápidas e reproduzíveis com operações e administração fáceis.

Pré-requisitos e limitações

Pré-requisitos

Arquitetura

O diagrama de arquitetura ilustra um processo orientado por eventos com as etapas a seguir. 

Implementando e administrando um data lake na AWS nuvem.
  1. Depois que um arquivo é adicionado ao bucket do S3 de dados brutos, uma notificação de evento do Amazon S3 é colocada em SQS uma fila. Cada notificação é entregue como um JSON arquivo, que contém metadados, como o nome do bucket do S3, a chave do objeto ou o carimbo de data/hora.

  2. Essa notificação é consumida por uma função Lambda que roteia o evento para o processo correto de extração, transformação e carregamento (ETL) com base nos metadados. A função do Lambda também pode usar configurações contextuais armazenadas em uma tabela do Amazon DynamoDB. Essa etapa permite o desacoplamento e o escalonamento para vários aplicativos no data lake.

  3. O evento é roteado para a primeira função Lambda ETL no processo, que transforma e move dados da área de dados brutos para a área de preparação do data lake. A primeira etapa é atualizar o catálogo abrangente. Essa é uma tabela do DynamoDB que contém todos os metadados do arquivo do data lake. Cada linha nessa tabela contém metadados operacionais sobre um único objeto armazenado no Amazon S3. Uma chamada síncrona é feita para uma função do Lambda que executa uma transformação leve, que é uma operação computacionalmente barata (como converter um arquivo de um formato para outro), no objeto S3. Como um novo objeto foi adicionado ao bucket temporário do S3, o catálogo abrangente é atualizado e uma mensagem é enviada para a SQS fila aguardando a próxima fase no. ETL

  4. Uma regra de CloudWatch eventos aciona uma função Lambda a cada 5 minutos. Essa função verifica se as mensagens da ETL fase anterior foram entregues à SQS fila. Se uma mensagem foi entregue, a função Lambda inicia a segunda função de AWSStep Functions no ETL processo.

  5. Uma transformação intensa é então aplicada em um lote de arquivos. Essa transformação pesada é uma operação computacionalmente cara, como uma chamada síncrona para uma tarefa do AWS Glue, uma tarefa do AWS Fargate, uma EMR etapa da Amazon ou um notebook da Amazon. SageMaker Os metadados da tabela são extraídos dos arquivos de saída usando um rastreador AWS Glue, que atualiza o catálogo do Glue. AWS Os metadados do arquivo também são adicionados à tabela abrangente do catálogo no DynamoDB. Por fim, uma etapa de qualidade de dados aproveitando o Deequ também é executada.

Pilha de tecnologia

  • CloudWatch Eventos da Amazon

  • AWS CloudFormation

  • AWS CodePipeline

  • AWS CodeBuild

  • AWS CodeCommit

  • Amazon DynamoDB

  • AWS Glue

  • AWSLambda

  • Amazon S3

  • Amazon SQS

  • AWS Step Functions

Ferramentas

  • Amazon CloudWatch Events — CloudWatch Events fornece um fluxo quase em tempo real de eventos do sistema que descrevem mudanças nos AWS recursos.

  • AWS CloudFormation— CloudFormation ajuda a criar e provisionar implantações de AWS infraestrutura de forma previsível e repetida.

  • AWS CodeBuild— CodeBuild é um serviço de compilação totalmente gerenciado que compila seu código-fonte, executa testes de unidade e produz artefatos prontos para serem implantados.

  • AWS CodeCommit— CodeCommit é um serviço de controle de versão hospedado por AWS que você pode usar para armazenar e gerenciar ativos de forma privada (como código-fonte e arquivos binários).

  • AWS CodePipeline— CodePipeline é um serviço de entrega contínua que você pode usar para modelar, visualizar e automatizar as etapas necessárias para liberar suas alterações de software continuamente.

  • Amazon DynamoDB — O DynamoDB é um serviço sem banco de dados totalmente SQL gerenciado que fornece desempenho rápido e previsível com escalabilidade. 

  • AWSGlue — O AWS Glue é um ETL serviço totalmente gerenciado que facilita a preparação e o carregamento de dados para análise.

  • AWSLambda — O Lambda suporta a execução de código sem provisionar ou gerenciar servidores. O Lambda executa o código somente quando necessário e dimensiona automaticamente, desde algumas solicitações por dia até milhares por segundo. 

  • Amazon S3: o Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos altamente escalável. O Amazon S3 pode ser usado para uma ampla variedade de soluções de armazenamento, incluindo sites, aplicativos móveis, backups e data lakes.

  • AWSStep AWS Functions - Step Functions é um orquestrador de funções sem servidor que facilita o sequenciamento de funções AWS Lambda e vários serviços em aplicativos essenciais para os negócios. AWS

  • Amazon SQS — O Amazon Simple Queue Service (AmazonSQS) é um serviço de enfileiramento de mensagens totalmente gerenciado que ajuda você a desacoplar e escalar microsserviços, sistemas distribuídos e aplicativos sem servidor.

  • Deequ: o Deequ é uma ferramenta que ajuda você a calcular métricas de qualidade de dados para grandes conjuntos de dados, definir e verificar restrições de qualidade de dados e se manter informado sobre mudanças na distribuição de dados.

Repositório de código

O código-fonte e os recursos do SDLF estão disponíveis no GitHub repositório do AWS Labs.

Épicos

TarefaDescriçãoHabilidades necessárias

Configure o pipeline de CI/CD para gerenciar o IaC para o data lake.

Faça login no AWS Management Console e siga as etapas da seção Configuração inicial do SDLF workshop. Isso cria os recursos iniciais de CI/CD, como CodeCommit repositórios, CodeBuild ambientes e CodePipeline pipelines que provisionam e gerenciam a IaC para o data lake.

DevOps engenheiro
TarefaDescriçãoHabilidades necessárias

Clone o CodeCommit repositório em sua máquina local.

Siga as etapas da seção Implantando as fundações do SDLF workshop. Isso ajuda você a clonar o repositório Git que hospeda o IaC em seu ambiente local. 

Para obter mais informações, consulte Conexão com CodeCommit repositórios na CodeCommit documentação.

DevOps engenheiro

Modifique os CloudFormation modelos.

Use sua estação de trabalho local e um editor de código para modificar os CloudFormation modelos de acordo com seus casos de uso ou requisitos. Confirme-os no repositório Git clonado localmente. 

Para obter mais informações, consulte Como trabalhar com AWS CloudFormation modelos da AWS CloudFormation documentação.

DevOps engenheiro

Envie as alterações para o CodeCommit repositório.

Seu código de infraestrutura agora está sob controle de versão e as modificações em sua base de código são rastreadas. Quando você envia uma alteração para o CodeCommit repositório, a aplica CodePipeline automaticamente à sua infraestrutura e a entrega para CodeBuild. 

Importante: Se você usar o AWS SAM CLI in CodeBuild, execute os sam deploy comandos sam package e. Se você usar AWSCLI, execute aws cloudformation package os aws cloudformation deploy comandos e.

DevOps engenheiro

Recursos relacionados

Configure o pipeline de CI/CD para provisionar IaC

Controle de versão do IaC 

Outros recursos