Pular para o conteúdo principal

Athena Query API

API HTTPS que executa queries nomeadas sobre tabelas de logs/auditoria no AWS Athena (database datalake_logs) e devolve o resultado em JSON. Foi feita para o app Rails consultar o datalake sem precisar assinar requisições SigV4 — basta um header com a chave de API.

Arquitetura

Rails --GET ?query=... + x-api-key--> API Gateway (valida a key) --> Lambda
├─ StartQueryExecution
├─ poll (~até 55s)
├─ GetQueryResults
└─ 200 { query, count, columns, rows }
  • Endpoint: API Gateway REST (regional, us-east-1) na frente de uma Lambda Python 3.12.
  • Auth: o API Gateway valida o x-api-key; o handler revalida o mesmo segredo (defense in depth). Sem SigV4.
  • Queries: nomeadas e parametrizadas — sem SQL cru, sem SQL injection.

Conceitos

ConceitoDescrição
QueryNome que seleciona a tabela a consultar: csps, audits ou access_logs. Único parâmetro obrigatório.
FiltrosDemais parâmetros da query string. Colunas inteiras filtram por igualdade; colunas string por LIKE '%valor%' case-insensitive.
Datasinicio/fim filtram created_at (horário de Brasília): um só → aquele dia inteiro; os dois → intervalo de até 30 dias. Opcionais, mas recomendados — veja Filtro de datas.
PaginaçãoResposta traz no máximo 1000 linhas + next_cursor. Para a próxima página, repita a requisição com ?cursor=<next_cursor> — veja Paginação.
RespostaObjeto { query, count, next_cursor, columns, rows }. Todos os valores das linhas vêm como string.

URL base

https://mhysmr3rl9.execute-api.us-east-1.amazonaws.com/prod

A query vai na query string de um GET na raiz (/). Exemplo:

GET /?query=audits&user_id=42&action=update&inicio=2026-05-01&fim=2026-05-15
Header: x-api-key: <sua-chave>

Próximos passos

  • Autenticação — como obter e enviar a chave.
  • Queries — tabelas e todas as colunas filtráveis.
  • Filtro de datas — semântica de inicio/fim, fuso e limite de 30 dias.
  • Paginação — cursor (next_cursor).
  • Exemplos — curl, Ruby, Node, Python, Go.
  • Erros — todos os códigos de status.
  • Referência interativa — teste a API direto no navegador.