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
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
Uma conta da AWS ativa.
AWSInterface de linha de comando (AWSCLI), instalada e configurada.
Um cliente Git, instalado e configurado.
O SDLFworkshop
, aberto em uma janela do navegador da web e pronto para uso.
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.](images/pattern-img/f4fc3ad2-1c4f-45ea-bc86-2db13105a173/images/e0cfff30-f0f8-4fc1-8e84-a152ef615c58.png)
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.
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.
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
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.
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
Tarefa | Descrição | Habilidades 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 | DevOps engenheiro |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Clone o CodeCommit repositório em sua máquina local. | Siga as etapas da seção Implantando as fundações 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 | DevOps engenheiro |
Recursos relacionados
Configure o pipeline de CI/CD para provisionar IaC
Controle de versão do IaC
Outros recursos