Exemplos
URL base: https://mhysmr3rl9.execute-api.us-east-1.amazonaws.com/prod
· Header obrigatório: x-api-key.
Exemplo usado abaixo: audits filtrando por user_id=42, action=update,
entre 2026-05-01 e 2026-05-30.
- cURL
- Ruby
curl -s -G 'https://mhysmr3rl9.execute-api.us-east-1.amazonaws.com/prod/' \
-H 'x-api-key: SUA_CHAVE' \
--data-urlencode 'query=audits' \
--data-urlencode 'user_id=42' \
--data-urlencode 'action=update' \
--data-urlencode 'inicio=2026-05-01' \
--data-urlencode 'fim=2026-05-30'
require "net/http"
require "json"
base = ENV.fetch("ATHENA_LAMBDA_URL") # invoke_url do API Gateway (termina em /prod)
uri = URI(base)
uri.query = URI.encode_www_form(
query: "audits",
user_id: 42,
action: "update",
inicio: "2026-05-01",
fim: "2026-05-30"
)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.read_timeout = 65 # > timeout da Lambda (55s)
req = Net::HTTP::Get.new(uri)
req["x-api-key"] = ENV.fetch("ATHENA_LAMBDA_API_KEY")
res = http.request(req)
data = JSON.parse(res.body)
data["rows"] # => [{ "id" => "10", ... }]
Resposta (200)
{
"query": "audits",
"count": 1,
"next_cursor": null,
"columns": ["id", "auditable_id", "user_id", "action", "created_at"],
"rows": [
{
"id": "10",
"auditable_id": "55",
"user_id": "42",
"action": "update",
"created_at": "2026-05-01 12:00:00"
}
]
}
:::tip Valores são string
O Athena devolve tudo como texto. Faça o cast no consumidor (ex.: row["user_id"].to_i
no Ruby) quando precisar de número ou data.
:::
:::info Mais de 1000 linhas?
A resposta vem paginada. Se next_cursor não for null, há mais páginas — veja
Paginação.
:::