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á.
Implante e gerencie um data lake de tecnologia sem servidor na Nuvem AWS usando a infraestrutura como código
Criado por Kirankumar Chandrashekar (AWS) e Abdel Jaidi (AWS)
Resumo
Aviso: CodeCommit A AWS não está mais disponível para novos clientes. Os clientes atuais da AWS CodeCommit podem continuar usando o serviço normalmente. Saiba mais
Este padrão descreve como usar a computação de tecnologia sem servidor
A SDLF é uma coleção de recursos reutilizáveis que aceleram a entrega de data lakes corporativos na Nuvem AWS 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.
O SDLF implementa 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 serviços da AWS, como AWS, AWS e CodePipeline AWS. CodeBuild CodeCommit
Esse padrão usa vários serviços de tecnologia sem servidor da AWS para simplificar o gerenciamento de data lake. Isso inclui o Amazon Simple Storage Service (Amazon S3) e o Amazon DynamoDB para armazenamento, o AWS Lambda e o AWS Glue para computação e o Amazon Events, o Amazon Simple Queue Service (Amazon SQS) CloudWatch e o AWS Step Functions para orquestração.
A AWS CloudFormation e os serviços de código da AWS 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 AWS ativa
AWS Command Line Interface (AWS CLI), instalada e configurada.
Um cliente Git, instalado e configurado.
O workshop da SDLF
, 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.

Depois que um arquivo é adicionado ao bucket do S3 de dados brutos, uma notificação de evento do Amazon S3 é colocada em uma fila do SQS. Cada notificação é entregue como um arquivo JSON, que contém metadados como o nome do bucket do S3, a chave do objeto ou o timestamp.
Essa notificação é consumida por uma função do 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 do Lambda no processo de ETL, 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 fila do SQS 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 foram entregues à fila SQS da fase ETL anterior. Se uma mensagem foi entregue, a função do Lambda inicia a segunda função do AWS Step Functions no processo de ETL.
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 etapa do Amazon EMR ou um notebook da Amazon. SageMaker Os metadados da tabela são extraídos dos arquivos de saída usando um crawler do AWS Glue, que atualiza o catálogo do AWS Glue. 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
AWS Lambda
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 recursos da AWS.
AWS CloudFormation — CloudFormation ajuda a criar e provisionar implantações de infraestrutura da AWS de forma previsível e repetida.
AWS CodeBuild — CodeBuild é um serviço de construção totalmente gerenciado que compila seu código-fonte, executa testes unitários e produz artefatos prontos para implantação.
AWS CodeCommit — CodeCommit é um serviço de controle de versão hospedado pela 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 de banco de dados NoSQL totalmente gerenciado que fornece uma performance rápida e previsível com escalabilidade.
AWS Glue: o AWS Glue é um serviço de ETL totalmente gerenciado que facilita a preparação e o carregamento de dados para análise.
AWS Lambda: o Lambda é compatível com 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.
AWS Step Functions: o AWS Step Functions é um orquestrador de funções de tecnologia sem servidor que facilita o sequenciamento de funções do Lambda na AWS e a multiplicação dos serviços da AWS em aplicativos essenciais para os negócios.
Amazon SQS: o Amazon Simple Queue Service (Amazon SQS) é um serviço de enfileiramento de mensagens totalmente gerenciado que ajuda você a desacoplar e escalar microsserviços, sistemas distribuídos e aplicativos de tecnologia 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 Console de Gerenciamento da AWS 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 Deploying the foundations (Implantação dos fundamentos 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 CloudFormation modelos da AWS na CloudFormation documentação da AWS. | 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. ImportanteSe você usa a CLI do AWS SAM em CodeBuild, execute os comandos | DevOps engenheiro |
Recursos relacionados
Configure o pipeline de CI/CD para provisionar IaC
Controle de versão do IaC
Outros recursos