Amazon Athena : SQL sans serveur sur S3
Interrogez directement les données S3 avec du SQL standard dans Athena, optimisez-les avec des formats en colonnes comme Parquet et ORC, puis utilisez le partitionnement pour maîtriser les coûts.
Amazon Athena : SQL sans serveur sur S3 est une leçon Cloud & IT Cert Prep gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cloud & IT Cert Prep, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cloud & IT Cert Prep comprend 4 leçons au total.
Qu’est-ce qu’Amazon Athena ?
Amazon Athena est un service de requêtes interactif sans serveur qui vous permet d’exécuter du SQL standard directement sur les données stockées dans Amazon S3. Vous n’avez aucun serveur à mettre en service ni aucun cluster à gérer, et vous ne payez que les données analysées par requête (environ 5 $ par TB analysé). Athena utilise Presto en interne et s’intègre nativement au Catalogue Data Glue pour les métadonnées des tables.
Configurer Athena : groupes de travail et emplacement de sortie
Avant d’exécuter des requêtes, configurez un groupe de travail Athena et indiquez un chemin S3 pour la sortie des résultats. Les groupes de travail permettent de séparer l’historique des requêtes et le suivi des coûts entre les équipes, d’imposer le chiffrement des résultats et de définir des limites de données analysées par requête afin d’éviter les coûts incontrôlés. Chaque résultat de requête est écrit au format CSV dans le bucket S3 de sortie configuré.
# 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
}'Exécuter votre première requête
Associez Athena à une base de données du Catalogue Data Glue et exécutez du SQL ANSI. Athena prend en charge SELECT, JOIN, GROUP BY, les fonctions de fenêtrage et les CTE. Vous pouvez également utiliser CREATE TABLE AS SELECT (CTAS) pour enregistrer les résultats d’une requête dans une nouvelle table au format Parquet, ce qui matérialise efficacement les résultats intermédiaires afin d’accélérer les requêtes ultérieures.
-- 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;Optimisation des coûts : élagage des partitions
Athena facture les données analysées par TB. La réduction des coûts la plus importante consiste à effectuer un élagage des partitions : incluez toujours les colonnes de partition dans votre clause WHERE. Si les données sont partitionnées par year/month/day, le filtrage sur ces colonnes empêche Athena d’analyser les autres partitions. Sans filtre de partition sur une table à l’échelle du pétaoctet, une simple requête peut coûter plusieurs centaines de dollars.
-- 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';Optimisation des coûts : format en colonnes
Stocker les données au format Apache Parquet ou ORC plutôt qu’en CSV ou JSON réduit considérablement la quantité de données analysées par Athena pour chaque requête. Une requête en colonnes qui utilise 3 colonnes sur 50 n’analyse que les données de ces 3 colonnes sur le disque. Associés à la compression intégrée (Snappy, Zstd), les fichiers Parquet sont généralement 5 à 10 fois plus petits que les fichiers CSV équivalents, ce qui multiplie les économies.
-- 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;Requêtes fédérées avec des connecteurs de sources de données
Athena Federated Query étend Athena au-delà de S3 pour interroger des données dans RDS, DynamoDB, Redshift, Elasticsearch et des sources personnalisées à l’aide de connecteurs de sources de données basés sur Lambda. Vous déployez une fonction Lambda de connecteur depuis le Serverless Application Repository, vous l’enregistrez comme source de données Athena, puis vous pouvez interroger les tables S3 et les bases de données en direct dans un même JOIN SQL, sans déplacer les données au préalable.
-- 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';Intégration d’Athena et de QuickSight
Amazon QuickSight se connecte directement à Athena comme source de données, ce qui permet aux analystes métier de créer des tableaux de bord interactifs à partir de données S3 sans base de données intermédiaire. QuickSight utilise SPICE (Super-fast, Parallel, In-memory Calculation Engine) pour mettre en cache les résultats des requêtes Athena et accélérer l’affichage des tableaux de bord. Cette pile BI sans serveur (S3 + Glue + Athena + QuickSight) constitue un schéma courant d’examen pour l’analyse à moindre coût.
Optimiser les performances des requêtes Athena
Au-delà du partitionnement et du format en colonnes, vous pouvez encore optimiser les requêtes Athena en : scindant les fichiers volumineux (visez 128 Mo à 1 Go par fichier pour permettre le traitement parallèle), en utilisant le regroupement en buckets pour les colonnes fréquemment jointes, en évitant SELECT * et en utilisant des fonctions d’agrégation approximatives comme approx_distinct() et approx_percentile() lorsque les valeurs exactes ne sont pas nécessaires. Ces techniques réduisent à la fois les coûts et la latence.
-- 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;Contrôler l’accès à Athena
Athena s’intègre à IAM pour le contrôle des accès : les utilisateurs doivent disposer des autorisations nécessaires pour exécuter des requêtes Athena (athena:StartQueryExecution), accéder au bucket S3 de sortie et lire les données S3 sous-jacentes. Pour un accès précis au niveau des colonnes et des lignes, associez Athena à Lake Formation. Vous pouvez également limiter un groupe de travail à certaines bases de données grâce aux clés de condition IAM portant sur l’ARN du groupe de travail.
# 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": "*"
}Enregistrer les résultats et planifier les requêtes
Les résultats des requêtes Athena sont stockés sous forme de fichiers CSV dans S3 et mis en cache pendant 7 jours. Ainsi, la réexécution d’une requête identique pendant cette période ne réanalyse pas les données. Pour les besoins récurrents de génération de rapports, utilisez Athena Scheduled Queries pour exécuter une requête selon une planification cron et enregistrer les résultats dans un nouvel emplacement S3 ou directement dans une table. Vous pouvez également déclencher une requête Athena depuis une machine d’état Step Functions ou une règle 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 ou Redshift : choisir le bon outil
Pour l’examen SAA-C03, vous devez savoir quand recommander Athena plutôt que Redshift. Choisissez Athena pour des requêtes ponctuelles et peu fréquentes sur S3, sans infrastructure à gérer. Choisissez Redshift lorsque vous avez besoin de temps de réponse inférieurs à la seconde sur des jointures complexes, lorsqu’une équipe d’analyse dédiée exécute des centaines de requêtes simultanées ou lorsque vous souhaitez utiliser Redshift Spectrum pour étendre un entrepôt de données avec des données S3. Le critère essentiel est la fréquence et la complexité des requêtes.
Vérification rapide
Testez votre compréhension des concepts AWS Solutions Architect (SAA-C03) abordés dans cette leçon.
Récapitulatif de la leçon
Dans cette leçon, vous avez appris que Athena facture les données analysées par TB, et que l’élagage des partitions ainsi que le format Parquet sont essentiels pour maîtriser les coûts, qu’Athena Federated Query étend le SQL aux sources de données qui ne sont pas S3 grâce aux connecteurs Lambda, et qu’Athena convient mieux aux requêtes ponctuelles, tandis que Redshift est adapté aux analyses à forte concurrence. Nous allons maintenant découvrir Kinesis pour la diffusion et l’analyse de données en temps réel.
Questions Fréquemment Posées
La leçon « Amazon Athena : SQL sans serveur sur S3 » est-elle gratuite ?
Oui — le texte complet de « Amazon Athena : SQL sans serveur sur S3 » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cloud & IT Cert Prep, passe à CoddyKit PRO. Le cours Cloud & IT Cert Prep comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Amazon Athena : SQL sans serveur sur S3 » ?
Interrogez directement les données S3 avec du SQL standard dans Athena, optimisez-les avec des formats en colonnes comme Parquet et ORC, puis utilisez le partitionnement pour maîtriser les coûts. Tu pratiques Cloud & IT Cert Prep avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Cloud & IT Cert Prep ?
Aucune expérience préalable n'est requise. Cloud & IT Cert Prep sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Amazon Athena : SQL sans serveur sur S3 » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Cloud & IT Cert Prep ?
Oui. Chaque leçon Cloud & IT Cert Prep inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Créer un lac de données sur S3
- AWS Glue : ETL et catalogue de données
- Amazon Athena : SQL sans serveur sur S3
- Flux Kinesis, Firehose et analyse en temps réel