Amazon Athena: SQL sem servidor no S3
Consulte dados do S3 diretamente com SQL padrão no Athena, otimize as consultas com formatos colunares como Parquet e ORC e use partições para controlar custos.
Amazon Athena: SQL sem servidor no S3 é uma aula grátis de Cloud & IT Cert Prep no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cloud & IT Cert Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.
O que é o Amazon Athena?
O Amazon Athena é um serviço de consulta interativo e sem servidor que permite executar SQL padrão diretamente sobre dados armazenados no Amazon S3. Não é necessário provisionar servidores nem gerenciar clusters, e você paga apenas pelos dados examinados em cada consulta (aproximadamente US$ 5 por TB examinado). O Athena usa o Presto internamente e integra-se nativamente ao Glue Data Catalogue para obter os metadados das tabelas.
Configuração do Athena: grupos de trabalho e local de saída
Antes de executar consultas, configure um Athena Workgroup e especifique um caminho do S3 para a saída dos resultados das consultas. Os grupos de trabalho permitem separar o histórico de consultas e o acompanhamento de custos entre equipes, impor criptografia aos resultados e definir limites de exame de dados por consulta para evitar custos excessivos. Cada resultado de consulta é gravado como CSV no bucket de saída do S3 configurado.
# Create a workgroup with an encrypted output location
aws athena create-work-group \
--name analytics-team \
--configuration '{
"ResultConfiguration": {
"OutputLocation": "s3://athena-results-123/analytics-team/",
"EncryptionConfiguration": {"EncryptionOption": "SSE_S3"}
},
"EnforceWorkGroupConfiguration": true,
"PublishCloudWatchMetricsEnabled": true,
"BytesScannedCutoffPerQuery": 10737418240
}'Executando sua primeira consulta
Indique ao Athena um banco de dados do Glue Data Catalogue e execute SQL ANSI. O Athena oferece suporte a SELECT, JOIN, GROUP BY, funções de janela e CTEs. Você também pode usar CREATE TABLE AS SELECT (CTAS) para salvar os resultados de uma consulta como uma nova tabela no formato Parquet, materializando efetivamente resultados intermediários para acelerar consultas posteriores.
-- Query total sales by month from partitioned S3 data
SELECT
year,
month,
SUM(order_total) AS monthly_revenue
FROM my_db.curated_sales
WHERE year = '2024'
GROUP BY year, month
ORDER BY month;
-- CTAS: materialise result as Parquet for reuse
CREATE TABLE my_db.monthly_revenue
WITH (format = 'PARQUET', external_location = 's3://my-data-lake-123/curated/monthly_revenue/')
AS
SELECT year, month, SUM(order_total) AS revenue
FROM my_db.curated_sales
GROUP BY year, month;Otimização de custos: eliminação de partições
O Athena cobra por TB de dados examinados. A redução de custos mais significativa é a eliminação de partições: sempre inclua as colunas de partição na cláusula WHERE. Se os dados estiverem particionados por year/month/day, filtrar por essas colunas impede que o Athena examine outras partições. Sem um filtro de partição em uma tabela na escala de petabytes, uma consulta simples pode custar centenas de dólares.
-- EXPENSIVE: No partition filter -> scans all data
SELECT * FROM my_db.curated_sales WHERE customer_id = '12345';
-- CHEAP: Partition filter applied -> scans only Jan 2024
SELECT * FROM my_db.curated_sales
WHERE year = '2024' AND month = '01' AND customer_id = '12345';Otimização de custos: formato colunar
Armazenar dados em Apache Parquet ou ORC, em vez de CSV ou JSON, reduz drasticamente a quantidade de dados examinados pelo Athena em cada consulta. Uma consulta colunar que acessa 3 de 50 colunas examina apenas os dados dessas 3 colunas no disco. Combinados à compactação integrada (Snappy, Zstd), os arquivos Parquet costumam ser de 5 a 10 vezes menores que arquivos CSV equivalentes, ampliando a economia de custos.
-- After converting raw CSV to Parquet:
-- CSV version: 500 GB table, query scans 500 GB -> $2.50
-- Parquet version: same data compressed to 50 GB,
-- query reads only 2 columns -> scans ~2 GB -> $0.01
-- Verify table format in Glue Catalogue
SHOW CREATE TABLE my_db.curated_sales;Consultas federadas com conectores de fontes de dados
O Athena Federated Query amplia o Athena para além do S3, permitindo consultar dados no RDS, DynamoDB, Redshift, Elasticsearch e fontes personalizadas usando conectores de fontes de dados baseados em Lambda. Você implanta uma função Lambda de conector do Serverless Application Repository, registra-a como uma fonte de dados do Athena e, então, consulta tabelas do S3 e bancos de dados ativos em um único JOIN SQL — sem precisar mover os dados primeiro.
-- Federated query: join S3 Parquet with live RDS table
SELECT s.order_id, s.total, c.email
FROM my_db.curated_sales s
JOIN rds_lambda.prod_db.customers c
ON s.customer_id = c.id
WHERE s.year = '2024' AND s.month = '01';Integração do Athena com o QuickSight
O Amazon QuickSight conecta-se diretamente ao Athena como uma fonte de dados, permitindo que analistas de negócios criem painéis interativos a partir de dados do S3 sem nenhum banco de dados intermediário. O QuickSight usa o SPICE (mecanismo de cálculo super-rápido, paralelo e em memória) para armazenar em cache os resultados das consultas do Athena e renderizar painéis rapidamente. Essa pilha de BI sem servidor (S3 + Glue + Athena + QuickSight) é um padrão comum de prova para análises econômicas.
Ajuste de desempenho das consultas do Athena
Além do particionamento e do formato colunar, ajuste ainda mais as consultas do Athena: divida arquivos grandes (procure usar de 128 MB a 1 GB por arquivo para permitir o processamento paralelo), use particionamento em buckets para colunas frequentemente usadas em junções, evite SELECT * e use funções agregadas aproximadas, como approx_distinct() e approx_percentile(), quando não forem necessários valores exatos. Essas técnicas reduzem tanto os custos quanto a latência.
-- Use approx_distinct for fast cardinality estimate
SELECT
year,
approx_distinct(customer_id) AS approx_unique_customers
FROM my_db.curated_sales
WHERE year = '2024'
GROUP BY year;Controle de acesso ao Athena
O Athena integra-se ao IAM para o controle de acesso: os usuários precisam de permissões para executar consultas do Athena (athena:StartQueryExecution), acessar o bucket de saída do S3 e ler os dados subjacentes do S3. Para obter acesso detalhado por coluna e por linha, combine o Athena com o Lake Formation. Você também pode restringir um grupo de trabalho a bancos de dados específicos usando chaves de condição do IAM no ARN do grupo de trabalho.
# Minimum IAM policy for an Athena analyst
{
"Effect": "Allow",
"Action": [
"athena:StartQueryExecution",
"athena:GetQueryExecution",
"athena:GetQueryResults",
"athena:StopQueryExecution",
"glue:GetDatabase",
"glue:GetTable",
"glue:GetPartitions",
"s3:GetObject",
"s3:PutObject"
],
"Resource": "*"
}Salvamento de resultados de consultas e consultas agendadas
Os resultados das consultas do Athena são armazenados como arquivos CSV no S3 e mantidos em cache por 7 dias; assim, executar novamente a mesma consulta nesse período não examina os dados outra vez. Para necessidades recorrentes de relatórios, use Athena Scheduled Queries para executar uma consulta segundo uma agenda cron e salvar os resultados em um novo local do S3 ou diretamente em uma tabela. Como alternativa, acione uma consulta do Athena a partir de uma máquina de estados do Step Functions ou de uma regra do EventBridge.
# Start an Athena query via CLI and retrieve results
QUERY_ID=$(aws athena start-query-execution \
--query-string 'SELECT COUNT(*) FROM my_db.curated_sales WHERE year=2024' \
--work-group analytics-team \
--query 'QueryExecutionId' --output text)
# Wait and fetch results
aws athena get-query-results --query-execution-id $QUERY_IDAthena versus Redshift: escolhendo a ferramenta certa
Para a prova SAA-C03, saiba quando recomendar Athena em vez de Redshift. Escolha o Athena para consultas ad hoc e pouco frequentes no S3, sem infraestrutura para gerenciar. Escolha o Redshift quando precisar de tempos de resposta inferiores a um segundo em junções complexas, tiver uma equipe dedicada de análise executando centenas de consultas simultâneas ou quiser usar o Redshift Spectrum para ampliar um armazém de dados com dados do S3. O principal indicador é a frequência e a complexidade das consultas.
Verificação rápida
Teste sua compreensão dos conceitos de AWS Solutions Architect (SAA-C03) desta lição.
Resumo da lição
Nesta lição, você aprendeu que: o Athena cobra por TB examinado, portanto a eliminação de partições e o formato Parquet são controles essenciais de custos, o Athena Federated Query estende o SQL a fontes de dados que não são do S3 por meio de conectores Lambda e o Athena é mais indicado para consultas ad hoc, enquanto o Redshift é adequado para análises com alta simultaneidade. Em seguida, exploraremos o Kinesis para transmissão e análise de dados em tempo real.
Perguntas Frequentes
A aula “Amazon Athena: SQL sem servidor no S3” é grátis?
Sim — o texto completo de “Amazon Athena: SQL sem servidor no S3” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cloud & IT Cert Prep, atualize para CoddyKit PRO. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.
O que vou aprender em “Amazon Athena: SQL sem servidor no S3”?
Consulte dados do S3 diretamente com SQL padrão no Athena, otimize as consultas com formatos colunares como Parquet e ORC e use partições para controlar custos. Você pratica Cloud & IT Cert Prep com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Cloud & IT Cert Prep?
Nenhuma experiência prévia é necessária. Cloud & IT Cert Prep no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Amazon Athena: SQL sem servidor no S3”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Cloud & IT Cert Prep?
Sim. Cada aula de Cloud & IT Cert Prep inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Criação de um data lake no S3
- AWS Glue: ETL e catálogo de dados
- Amazon Athena: SQL sem servidor no S3
- Streams do Kinesis, Firehose e análise em tempo real