Skip to content

About

Este projeto é uma função AWS Lambda responsável por processar notificações de certificados gerados. Ele é acionado por mensagens em uma fila SQS, atualiza o status dos certificados e notifica um serviço externo sobre a conclusão.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Certified Builder Notification

Descrição

Este projeto é uma função AWS Lambda responsável por processar notificações de certificados gerados. Ele é acionado por mensagens em uma fila SQS, atualiza o status dos certificados e notifica um serviço externo sobre a conclusão.

Tecnologias Utilizadas

  • Python 3.13
  • AWS Lambda
  • AWS SQS
  • AWS DynamoDB
  • Boto3
  • Pydantic
  • HTTPX
  • Docker

Desenvolvimento e Deploy

  • Local: docker compose up --build expõe a Lambda em http://localhost:9000.
  • Deploy: o workflow .github/workflows/workflow_build.yaml gera um ZIP e atualiza a função tech-floripa-certificates-notification-dev.
  • Infra: a fila SQS continua ligada pela infraestrutura Terraform; apenas o artefato de código mudou de imagem para ZIP.

DynamoDB Single-Table Design

Este projeto utiliza o padrão DynamoDB Single-Table Design. O CertificateRepository opera na mesma tabela que a API.

Estrutura da Tabela (compartilhada)

Atributo Tipo Descrição
PK String Chave de Partição principal
SK String Chave de Ordenação principal
GSI1PK, GSI1SK String GSI1 para Certificate por UUID
GSI2PK, GSI2SK String GSI2 para acesso por email
GSI3PK, GSI3SK String GSI3 para acesso por produto
GSI4PK, GSI4SK String GSI4 para certificados por status
EntityType String Tipo da entidade

GSI4 - Acesso por Status de Sucesso

GSI4PK GSI4SK Uso
SUCCESS#true CERTIFICATE#<uuid> Certificados bem-sucedidos
SUCCESS#false CERTIFICATE#<uuid> Certificados falhados

Repositório de Certificados

O CertificateRepositoryImpl utiliza:

  • GSI1: Busca por UUID do certificado
  • GSI2: Busca por email do participante
  • GSI3: Busca por product_id
  • GSI4: Busca por status de sucesso

Estrutura do Evento

Entrada (SQS)

A função Lambda é acionada por um evento SQS que contém um lote de notificações no corpo da mensagem.

Exemplo de corpo da mensagem SQS:

{
  "notifications": [
    {
      "order_id": 123456,
      "product_id": 42,
      "product_name": "Demo Event",
      "email": "alex@example.test",
      "certificate_key": "certificates/42/123456/Alex_Example_Demo_Event_ABC-123-XYZ.png",
      "success": true
    }
  ]
}

Saída (Notificação Externa)

Após o processamento, o serviço envia uma notificação para um endpoint externo via POST.

Exemplo de corpo da requisição POST:

{
  "product_id": 42,
  "certificates_quantity": 1,
  "certificates": [
    {
      "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
      "order_id": 123456,
      "product_id": 42,
      "product_name": "Demo Event",
      "certificate_url": "https://example.com/certificate.png",
      "success": true
    }
  ]
}

About

Este projeto é uma função AWS Lambda responsável por processar notificações de certificados gerados. Ele é acionado por mensagens em uma fila SQS, atualiza o status dos certificados e notifica um serviço externo sobre a conclusão.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages