Este projeto implementa uma função AWS Lambda em Go para processar arquivos PDF enviados para um bucket S3. A função extrai informações específicas (CPF e valores monetários) e armazena os dados processados em uma tabela DynamoDB. A infraestrutura é gerenciada via Terraform.
- Trigger Automático: Execução iniciada por eventos de upload no S3 (
s3:ObjectCreated:*). - Processamento de PDF: Leitura e extração de texto de arquivos PDF.
- Extração de Dados: Identificação de padrões de CPF e valores monetários (R$) via expressões regulares.
- Persistência: Armazenamento dos dados extraídos no DynamoDB com ID único gerado via hash (SHA256).
O fluxo de dados segue a seguinte arquitetura:
- Usuário/Sistema faz upload de um arquivo
.pdfno bucket S3 configurado. - O S3 envia uma mensagem para o SQS.
- A função Lambda mapeia a fila do SQS e inicia a processamento da fila
- A função Lambda baixa o arquivo na memória e processa o conteúdo.
- Os dados extraídos (CPF, Valor) são salvos na tabela DynamoDB.
Para executar e implantar este projeto, você precisará das seguintes ferramentas instaladas:
- Go (versão 1.26 ou superior)
- Terraform (versão 1.0 ou superior)
- AWS CLI configurado com credenciais apropriadas
.
├── cmd/
│ └── lambda-pdf/ # Código fonte da função Lambda (main.go)
├── infra/ # Código Terraform para provisionamento
├── internal/ # Lógica de negócio e serviços internos
│ ├── models/ # Estruturas de dados
│ └── services/ # Lógica de extração e persistência
├── pkg/ # Pacotes utilitários (hashing)
└── go.mod # Definição de dependências Go
git clone <url-do-repositorio>
cd LambdaA função Lambda utiliza o runtime provided.al2023 em arquitetura arm64. É necessário compilar o binário com as flags corretas e nomeá-lo como bootstrap.
GOOS=linux GOARCH=arm64 go build -o cmd/lambda-pdf/bootstrap cmd/lambda-pdf/main.goNota: O Terraform espera encontrar o arquivo
bootstrapno diretóriocmd/lambda-pdf/.
Navegue até o diretório de infraestrutura e execute os comandos do Terraform.
cd infra
# Inicializar o Terraform (baixa providers)
terraform init
# Visualizar o plano de execução
terraform plan
# Aplicar a infraestrutura
terraform applyAtenção: Verifique o nome do bucket S3 no arquivo
infra/s3.tf. Buckets S3 devem ter nomes globalmente únicos. Pode ser necessário alterar o valor antes de aplicar.
Após a implantação bem-sucedida:
- Faça upload de um arquivo PDF contendo um CPF (formato
000.000.000-00) e um valor monetário (formatoR$ 0,00) para o bucket S3 criado. - A função Lambda será acionada automaticamente.
- Verifique os logs da execução no AWS CloudWatch.
- Consulte a tabela DynamoDB (
lambda-go-test) para ver os dados extraídos.
Para remover todos os recursos criados e evitar custos adicionais na AWS:
cd infra
terraform destroy