Processamento de dados adequado para mover arquvios chegados a um Cloud Storage para outros buckets de destino, de acordo com uma configuração. Este projeto é fundamental para o ganho de logs e boas práticas adequadas antes de chegar no serviço de ETL (caso exista). Por isso, nele é implementado uma CloudFunction responsável por mover arquivos que chegam em um determinado CS para outro bucket de destino e outro bucket de backup (com os horários de processamento). Além disso, caso haja a necessidade do disparo de um taskflow para o serviço de ETL, ele já possui a funcionalidade.
Portanto, observe a infraestrutura abaixo para um melhor entendimento:
Em primeiro momento, crie todos os serviços necessários antes da implementação da Cloud Function. É válido ressaltar que a CF vai ser criada com IaC (terraform), enquanto os outros produtos serão criados no próprio console do GCP, devido a sua facilidade de criação.
-
Crie um projeto para seu ambiente de trabalho chamado
staging-provider
. -
No projeto, crie um Cloud Storage com o nome
staging-provider-bucket
, e crie a pasta STAGE_AREA dentro dele, pois ela que estará sendo analisada para a detecção dos eventos pela Cloud Function. -
Ainda no projeto, crie um Cloud Storage com o nome
bucket-bkp
com as pastasSTAGE_AREA/PROCESSADOS
, na qual ela será responsável por armazenar o nome dos arquivos juntamente com sua hora de processamento. -
Criando uma Tabela de Configuração no Big Query.
É necessário criar uma tabela de configuração que vai ser lida pela Cloud Function no momento da transferência dos arquivos e enviá-los para seus determinados buckets configurados. Além disso, ter um campo de taskflow caso o usuário queira inserir. Sendo assim, é importante ter os seguintes campos de preenchimento, com essa determinada ordem:NOME_ARQUIVO
,BUCKET_DESTINO
,BUCKET_BKP
,TASKFLOW
. Insira a tabela no seguinte caminho:staging-provider/DS_CONFIGURACAO/TB_CONFIGURACAO
. Veja o exemplo abaixo:A imagem acima configura o arquivo
filename.csv
, em que quando ele chega nostaging-provider/staging-provider-bucket/STAGE_AREA
, deve ser movido para os bucketsstaging-destino/bucket-destino
(observe que staging-destino é outro projeto, mas poderia ser qualquer um outro) estaging-provider/bucket-bkp/STAGE_AREA/PROCESSADOS
, respectivamente. Além disso, ele deve disparar o taskflowtkf_teste
para a ETL continuar o processamento (não obrigatório). -
Antes de implementar a Cloud Function, garanta um bucket, em outro projeto, que seja responsável por armazenar arquivos
.tfstate
do terraform. Portanto, crie um projeto com o nomedatalake-terraform
. Não se preocupe com o nome do bucket pois ele será criado automaticamente na execução do IaC. -
Agora basta clonar o repositório e executar os comandos abaixo em sequência:
export GOOGLE_APPLICATION_CREDENTIALS=${caminho do diretório onde você guardou suas chaves de segurança}
cd terraform
terraform init -backend-config=config/dev.gcs.tfbackend
terraform plan -var-file="config/dev.tfvars" -out=.terraform_tmp/plan.create -no-color
terraform apply .terraform_tmp/plan.create
- Por fim, basta testar seu projeto.
- Se configurar um arquivo como
.csv
, ele DEVE vir como.csv
no bucket triggado. Valendo para outras extensões. - O arquivo tem que estar na pasta
STAGE_AREA
para ser processado adequadamente.