AWS est le cloud dominant pour la data. En entretien, on évalue la capacité à choisir les bons services AWS selon le cas d usage et à les intégrer dans une architecture cohérente.
1Architecture data de référence sur AWS
Question discriminante
Décrivez une architecture data end-to-end sur AWS.
# Architecture AWS typique
INGESTION
├── AWS DMS (Database Migration Service) - CDC depuis RDS
├── Kinesis Data Streams - streaming temps réel
├── S3 Transfer Acceleration - fichiers volumineux
└── Fivetran/Airbyte - connecteurs SaaS
STOCKAGE
└── S3 (lake brut + curated + gold)
CATALOG
└── AWS Glue Data Catalog (Hive Metastore compatible)
TRANSFORMATION
├── AWS Glue ETL (Spark managé)
├── EMR Serverless (Spark/Hive self-managed)
└── dbt + Redshift/Athena
REQUETES ANALYTIQUES
├── Amazon Athena (SQL sur S3, serverless)
└── Amazon Redshift Serverless (data warehouse)
ORCHESTRATION
├── AWS Step Functions
└── MWAA (Managed Airflow)
CONSOMMATION
└── QuickSight / Tableau / Power BI
2S3 : le centre de gravité AWS
Question discriminante
Quelles sont les fonctionnalités S3 que vous utilisez dans un pipeline data ?
- S3 Intelligent-Tiering — transition automatique vers Standard-IA ou Glacier selon les accès. Économie 20-80%
- S3 Lifecycle policies — archiver après 90 jours, supprimer après 7 ans. Automatique
- S3 Event Notifications — déclencher Lambda ou SQS quand un fichier arrive. Ingestion event-driven
- S3 Select — lire uniquement les lignes/colonnes nécessaires d un Parquet/CSV sans télécharger tout le fichier
- S3 Table Buckets — support natif Iceberg sur S3 (2025). Tables managées directement dans S3
3AWS Glue : ETL managé et catalog
Question discriminante
Quand utilisez-vous AWS Glue vs EMR pour les transformations de données ?
## AWS Glue : Spark managé sans cluster à gérer
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from awsglue.context import GlueContext
from awsglue.job import Job
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
glue_context = GlueContext(SparkContext())
sparkSession = glue_context.spark_session
job = Job(glue_context)
# Lire depuis le Glue Data Catalog
dyf = glue_context.create_dynamic_frame.from_catalog(
database='analytics',
table_name='raw_orders'
)
# Transformer
df = dyf.toDF()
df_clean = df.filter('amount > 0').dropDuplicates(['order_id'])
# Écrire dans S3 en Parquet
glue_context.write_dynamic_frame.from_options(
frame=DynamicFrame.fromDF(df_clean, glue_context, 'clean'),
connection_type='s3',
connection_options={'path': 's3://mon-bucket/silver/orders/'},
format='parquet'
)
4Amazon Athena : SQL serverless sur S3
Question discriminante
Dans quels cas Athena est-il plus adapté que Redshift ?
- Athena — serverless, SQL sur S3. Payer uniquement les octets scannés. Idéal pour les requêtes ad-hoc et les analyses exploratoires
- Partitionnement Hive — les tables Athena utilisent le partitionnement S3 pour réduire les coûts (require_partition_filter)
- Athena Federated Query — requêter DynamoDB, RDS, Redshift depuis Athena. Query federation
- Athena pour Iceberg — support natif Iceberg 2.x. Merge, update, delete, time travel
- Quand Redshift — BI interactive (sub-seconde), requêtes complexes répétitives, workloads BI avec concurrence
5Redshift Serverless
Question discriminante
Qu est-ce que Redshift Serverless ? Quand le préférer au Redshift classique ?
- Redshift Serverless — pas de cluster à provisionner. Capacité automatique selon la charge
- Facturation RPU — Redshift Processing Units à la seconde. Plus économique pour les charges variables
- Quand Serverless — charges imprévisibles, équipes petites, pas d expertise Redshift en interne
- Quand Redshift RA3 — charge prévisible et intensive, besoin de contrôle précis, workloads très concurrents
- Data Sharing — partager des données entre clusters Redshift sans les copier. Lecture cross-account
Question discriminante
Qu est-ce que AWS Lake Formation ? Quand l utilisez-vous ?
- Lake Formation — couche de gouvernance centrale sur S3. Gère les permissions au niveau colonne et ligne
- Column-level security — masquer ou supprimer des colonnes PII selon le rôle de l utilisateur. Compatible Athena, Redshift Spectrum, EMR
- Row-level filtering — filtrer les lignes selon des attributs de l utilisateur. Ex : un analyst FR ne voit que les données France
- Governed Tables — tables S3 avec transactions ACID et time travel. Alternative à Delta/Iceberg dans l écosystème AWS
# AWS Data Stack IaC (Terraform)
# Glue Catalog + S3 Data Lake + Redshift + Step Functions
resource "aws_glue_catalog_database" "analytics" {
name = "analytics_prod"
}
resource "aws_glue_crawler" "orders" {
name = "orders_crawler"
role = aws_iam_role.glue_role.arn
database_name = aws_glue_catalog_database.analytics.name
s3_target {
path = "s3://${aws_s3_bucket.datalake.bucket}/orders/"
}
schedule = "cron(0 6 * * ? *)"
}
# Step Functions pour orchestrer ETL
resource "aws_sfn_state_machine" "pipeline" {
name = "data_pipeline"
definition = jsonencode({
Comment: "ETL Pipeline"
StartAt: "RunGlueJob"
States: {
RunGlueJob: {
Type: "Task"
Resource: "arn:aws:states:::glue:startJobRun.sync"
Parameters: {"JobName": "transform_orders"}
Next: "RefreshRedshift"
}
}
})
}
- AWS Glue vs EMR — Glue : serverless, payer à la minute, idéal pour les ETL ponctuels. EMR : cluster managé, meilleur rapport coût/performance pour les workloads Spark continus
- Lake Formation — couche de gouvernance sur S3 : gestion des permissions fine-grained (colonne, row-level), catalog centralisé, audit des accès
- Redshift Serverless — pas de cluster à provisionner, facturation par RPU-second. Pour les charges variables. Redshift classique pour les charges prévisibles et continues
- Step Functions pour l'orchestration — orchestrateur natif AWS pour les pipelines simples. Pour les workflows complexes : MWAA (Airflow managé sur AWS) ou Step Functions + Lambda
- Cost optimization — S3 Intelligent-Tiering pour les données dont l'accès est imprévisible. Glue jobs en spot. EMR Spot instances pour les workers (économie 70-90%)
7Grille par niveau
| Niveau | Maitrise | Signal GO | NO-GO |
|---|
| Confirmé | S3, Glue Catalog, Athena, IAM basique | A déployé un pipeline S3 → Glue → Athena, utilise le partitionnement Athena | Ne sait pas ce qu est le Glue Data Catalog |
| Senior | Lake Formation, Redshift Serverless, architecture complète, cost optimization | A configuré Lake Formation avec column-level security, justifie Athena vs Redshift | Ne sait pas la différence entre Athena et Redshift |
1Reference data architecture on AWS
Discriminating question
Describe an end-to-end data architecture on AWS.
# Architecture AWS typique
INGESTION
├── AWS DMS (Database Migration Service) - CDC depuis RDS
├── Kinesis Data Streams - streaming temps réel
├── S3 Transfer Acceleration - fichiers volumineux
└── Fivetran/Airbyte - connecteurs SaaS
STOCKAGE
└── S3 (lake brut + curated + gold)
CATALOG
└── AWS Glue Data Catalog (Hive Metastore compatible)
TRANSFORMATION
├── AWS Glue ETL (Spark managé)
├── EMR Serverless (Spark/Hive self-managed)
└── dbt + Redshift/Athena
REQUETES ANALYTIQUES
├── Amazon Athena (SQL sur S3, serverless)
└── Amazon Redshift Serverless (data warehouse)
ORCHESTRATION
├── AWS Step Functions
└── MWAA (Managed Airflow)
CONSOMMATION
└── QuickSight / Tableau / Power BI
2S3: the AWS center of gravity
Discriminating question
What S3 features do you use in a data pipeline?
- S3 Intelligent-Tiering — automatic transition to Standard-IA or Glacier based on access patterns. 20-80% savings
- S3 Lifecycle policies — archive after 90 days, delete after 7 years. Automatic
- S3 Event Notifications — trigger Lambda or SQS when a file arrives. Event-driven ingestion
- S3 Select — read only the necessary rows/columns from a Parquet/CSV without downloading the entire file
- S3 Table Buckets — native Iceberg support on S3 (2025). Tables managed directly in S3
3AWS Glue: managed ETL and catalog
Discriminating question
When do you use AWS Glue vs EMR for data transformations?
## AWS Glue : Spark managé sans cluster à gérer
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from awsglue.context import GlueContext
from awsglue.job import Job
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
glue_context = GlueContext(SparkContext())
sparkSession = glue_context.spark_session
job = Job(glue_context)
# Lire depuis le Glue Data Catalog
dyf = glue_context.create_dynamic_frame.from_catalog(
database='analytics',
table_name='raw_orders'
)
# Transformer
df = dyf.toDF()
df_clean = df.filter('amount > 0').dropDuplicates(['order_id'])
# Écrire dans S3 en Parquet
glue_context.write_dynamic_frame.from_options(
frame=DynamicFrame.fromDF(df_clean, glue_context, 'clean'),
connection_type='s3',
connection_options={'path': 's3://mon-bucket/silver/orders/'},
format='parquet'
)
4Amazon Athena: serverless SQL on S3
Discriminating question
In which cases is Athena more suitable than Redshift?
- Athena — serverless, SQL on S3. Pay only for bytes scanned. Ideal for ad-hoc queries and exploratory analysis
- Hive partitioning — Athena tables use S3 partitioning to reduce costs (require_partition_filter)
- Athena Federated Query — query DynamoDB, RDS, Redshift from Athena. Query federation
- Athena for Iceberg — native Iceberg 2.x support. Merge, update, delete, time travel
- When Redshift — interactive BI (sub-second), repetitive complex queries, BI workloads with concurrency
5Redshift Serverless
Discriminating question
What is Redshift Serverless? When should you prefer it over classic Redshift?
- Redshift Serverless — no cluster to provision. Automatic capacity based on load
- RPU billing — Redshift Processing Units per second. More cost-effective for variable workloads
- When Serverless — unpredictable workloads, small teams, no in-house Redshift expertise
- When Redshift RA3 — predictable and intensive workload, need for precise control, highly concurrent workloads
- Data Sharing — share data between Redshift clusters without copying it. Cross-account reads
Discriminating question
What is AWS Lake Formation? When do you use it?
- Lake Formation — central governance layer on S3. Manages permissions at the column and row level
- Column-level security — mask or remove PII columns based on user role. Compatible with Athena, Redshift Spectrum, EMR
- Row-level filtering — filter rows based on user attributes. Ex: a FR analyst only sees French data
- Governed Tables — S3 tables with ACID transactions and time travel. Alternative to Delta/Iceberg in the AWS ecosystem
# AWS Data Stack IaC (Terraform)
# Glue Catalog + S3 Data Lake + Redshift + Step Functions
resource "aws_glue_catalog_database" "analytics" {
name = "analytics_prod"
}
resource "aws_glue_crawler" "orders" {
name = "orders_crawler"
role = aws_iam_role.glue_role.arn
database_name = aws_glue_catalog_database.analytics.name
s3_target {
path = "s3://${aws_s3_bucket.datalake.bucket}/orders/"
}
schedule = "cron(0 6 * * ? *)"
}
# Step Functions pour orchestrer ETL
resource "aws_sfn_state_machine" "pipeline" {
name = "data_pipeline"
definition = jsonencode({
Comment: "ETL Pipeline"
StartAt: "RunGlueJob"
States: {
RunGlueJob: {
Type: "Task"
Resource: "arn:aws:states:::glue:startJobRun.sync"
Parameters: {"JobName": "transform_orders"}
Next: "RefreshRedshift"
}
}
})
}
- AWS Glue vs EMR — Glue: serverless, pay per minute, ideal for one-off ETL jobs. EMR: managed cluster, better cost/performance ratio for continuous Spark workloads
- Lake Formation — governance layer on S3: fine-grained permission management (column, row-level), centralized catalog, access auditing
- Redshift Serverless — no cluster to provision, billing per RPU-second. For variable workloads. Classic Redshift for predictable and continuous workloads
- Step Functions for orchestration — native AWS orchestrator for simple pipelines. For complex workflows: MWAA (managed Airflow on AWS) or Step Functions + Lambda
- Cost optimization — S3 Intelligent-Tiering for data with unpredictable access patterns. Glue jobs on spot. EMR Spot instances for workers (70-90% savings)
7Level grid
| Level | Mastery | GO signal | NO-GO |
|---|
| Mid-level | S3, Glue Catalog, Athena, basic IAM | Has deployed an S3 → Glue → Athena pipeline, uses Athena partitioning | Does not know what the Glue Data Catalog is |
| Senior | Lake Formation, Redshift Serverless, full architecture, cost optimization | Has configured Lake Formation with column-level security, justifies Athena vs Redshift | Does not know the difference between Athena and Redshift |