Skip to content

Toolkit de Exploração de Dados na AWS


datadelivery-logo

Visão Geral

O datadelivery é um módulo Terraform que permite com que seus usuários criem recursos de infraestrutura em suas respectivas contas AWS visando aprimorar os primeiros passos na exploração de dados utilizando serviços de Analytics. Isto é feito através de processos já embarcados no módulo, tais como:

  • 🪣 Criação de buckets S3 seguindo uma arquitetura Data Mesh ou arquitetura medalhão
  • 🎲 Upload automático de datasets públicos em bucket S3
  • 📦 Upload opcional de datasets customizados fornecidos pelo usuário
  • ⏳ Agendamento automático de um Glue Crawler para criação de tabelas para os datasets
  • 🔒 Criação de policies e roles IAM para execução do Glue Crawler
  • 📈 Criação de um workgroup do Athena para facilitar a execução de queries

Um ambiente de bolso! Como um módulo Terraform, todos os recursos proporcionados pelo datadelivery podem ser implantados através de um único comando (terraform apply). Da mesma forma, os usuários podem simplesmente eliminar todos estes recursos sempre que quiserem também com um único comando (terraform destroy).

Pré Requisitos

Para utilizar o datadelivery, usuários precisam: In order to start using datadelivery, users will need:

Chamando o Módulo

Com o ambiente preparado, usuários podem criar um arquivo Terraform de extensão .tf e chamar o módulo datadelivery no seguinte formato:

# Chamando o módulo datadelivery com as configurações padrão
module "datadelivery" {
  source = "git::https://github.com/ThiagoPanini/datadelivery"
}

Dica: se você tem dúvidas sobre como configurar um projeto Terraform para a chamada de módulos, expanda o bloco abaixo para visualizar demonstrações práticas em um passo a passo completo utilizando o módulo datadelivery.

Configuração básica de um projeto Terraform (passo a passo datadelivery)

Para quem possui pouca experiência com o Terraform e precisa de um guia detalhado sobre como utilizar o módulo datadelivery na prática, o processo poderia ser resumido nos seguintes passos:

  1. Criação de um diretório para organizar seu projeto Terraform
  2. Criação de um arquivo Terraform neste diretório (ex: arquivo main.tf)
  3. Escrever o código Terraform neste arquivo para chamar o módulo datadelivery (ver código acima)
  4. Usando um terminal ou uma IDE, execute o comando terraform init para inicializar os módulos chamados
  5. Para visualizar os recursos a serem criados em sua conta AWS, execute o comando terraform plan
  6. Por fim, para implantar os recursos, execute o comando terraform apply

Um módulo Terraform pode ser chamado através de uma série de origens em qualquer projeto Terraform.

Um projeto Terraform pode ser qualquer diretório que possua arquivos Terraform e que, nada mais são, do que arquivos de extensão .tf onde os recursos de infraestrutura são configurados através de uma linguagem declarativa chamada HCL (Hashicorp Configuration Language).

Assim, vamos estruturar este passo a passo criando um arquivo Terraform chamado main.tf para armazenar nosso código Terraform.

Criando um projeto Terraform

Criando arquivo main.tf em um projeto Terraform

Uma vez criado o projeto Terraform (isto é, pelo menos um arquivo .tf em um diretório qualquer), podemos declarar os recursos a serem implantados. Neste caso, os recursos estão encapsulados em um módulo Terraform. A chamada de módulos exige, essencialmente, apontar para a origem onde o código fonte do módulo está armazenado e isto pode ser diretórios locais, URLs HTTP, repositórios no GitHub, buckets no S3 e muitos outros.

O código fonte do módulo datadelivery está hospedado em um repositório no GitHub e, dessa forma, sua chamada pode ser realizada conforme o exemplo abaixo:

Chamando o módulo datadelivery

Declarando um bloco de chamada de módulo para implantar os recursos encapsulados no módulo datadelivery

E assim, podemos executar os comandos Terraform para obter os recursos encapsulados no módulo datadelivery na conta AWS alvo. O primeiro desses comandos atua como uma espécie de "aperte play para continuar" e auxilia os usuários a obterem toda a lógica do módulo em seu diretório/workspace de trabalho. Trata-se do terraform init e veremos como ele funciona no exemplo abaixo:

Inicializando o módulo com terraform init

Inicializando o módulo com terraform init

Após isso, nós podemos verificar exatamente quais recursos AWS serão criados, alterados ou até mesmo eliminados através da chamada deste módulo. O comando para ter essa visão é o terraform plan e seu retorno é um verdadeiro plano de implantação do Terraform no provider alvo.

Planejamento a implantação com terraform plan

Planejamento a implantação com terraform plan

Por fim, após inicializar o módulo e validar o plano de implantação, podemos seguir, de fato, com a implantação através do comando terraform apply.

Implantando os recursos com terraform apply

Implantando os recursos com terraform apply

E é assim que podemos criar um projeto Terraform e chamar módulos em qualquer ambiente de trabalho. No caso do datadelivery, o usuário poderá, após sua implantação, navegar até sua conta AWS e verificar os recursos criados para facilitar a jornada de exploração de dados com serviços de Analytics, tais como buckets no S3, tabelas no Glue Data Catalog, entre outros.

Recursos Implantados

Uma vez chamado o módulo datadelivery, por padrão, alguns recursos são disponibilizados instantaneamente na conta AWS alvo da chamada. O GIF abaixo demonstra uma navegação em uma conta AWS através do management console e passa por alguns dos recursos criados pelo módulo.

Recursos criados pelo módulo datadelivery

Recursos implantados na conta AWS alvo

O GIF acima, apesar de extenso, mostra toda uma navegação no AWS Management Console e evidencia os recursos criados, tais quais:

  • Buckets no S3 (guidados pela variável var.bucket_names_map do módulo)
  • Arquivos físicos separados em diferentes prefixos e que simulam datasets públicos previamente escolhidos
  • Glue Crawler agendado automaticamente (delay de agendamento guiado pela variável var.delay_to_run_crawler do módulo)
  • Tabelas no Glue Data Catalog geradas através da execução do Glue Crawler

Variáveis do Módulo

O módulo datadelivery possui variáveis que podem ser configuradas pelos usuários para personalizar os recursos a serem implantados na conta AWS alvo. Para visualizar quais variáveis são aceitas e suas respectivas descrições, navegue até a página de variáveis desta documentação.