Introduction
AWS Glue est un service ETL serverless d'AWS qui simplifie l'extraction, la transformation et le chargement de données. Il permet aux entreprises de cataloguer leurs données et d'exécuter des jobs sans gérer d'infrastructure. En 2026, maîtriser Glue est essentiel pour tout data engineer débutant souhaitant automatiser ses pipelines. Ce tutoriel vous guide pas à pas pour créer un job ETL fonctionnel.
Prérequis
- Compte AWS avec permissions Glue et S3
- AWS CLI installé et configuré
- Connaissances de base en Python
- Un bucket S3 contenant des données CSV
Configuration IAM
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:ListBucket",
"glue:*"
],
"Resource": "*"
}
]
}Cette politique IAM accorde les permissions minimales nécessaires à Glue pour lire et écrire dans S3 et gérer les métadonnées.
Création du crawler
aws glue create-crawler \
--name mon-premier-crawler \
--role arn:aws:iam::123456789012:role/GlueServiceRole \
--database-name glue-demo-db \
--targets '{"S3Targets":[{"Path":"s3://mon-bucket-donnees/raw/"}]}' \
--table-prefix demo_Cette commande CLI crée un crawler qui analyse automatiquement les données CSV dans S3 et génère le schéma dans le catalogue Glue.
Script ETL Python
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)
datasource = glueContext.create_dynamic_frame.from_catalog(
database="glue-demo-db",
table_name="demo_raw_data"
)
transformed = ApplyMapping.apply(
frame=datasource,
mappings=[("id", "int", "id", "int"), ("name", "string", "nom", "string")]
)
glueContext.write_dynamic_frame.from_options(
frame=transformed,
connection_type="s3",
connection_options={"path": "s3://mon-bucket-donnees/processed/"},
format="parquet"
)
job.commit()Ce script complet lit les données via le catalogue, applique une transformation simple et écrit le résultat en Parquet dans S3.
Création du job Glue
aws glue create-job \
--name mon-job-etl \
--role arn:aws:iam::123456789012:role/GlueServiceRole \
--command Name=glueetl,ScriptLocation=s3://mon-bucket-scripts/etl_job.py,PythonVersion=3 \
--glue-version 4.0 \
--default-arguments '{"--job-language":"python"}'Cette commande enregistre le job ETL dans AWS Glue en pointant vers le script Python stocké dans S3.
Exécution du job
aws glue start-job-run --job-name mon-job-etlLance l'exécution du job ETL. Surveillez la progression dans la console AWS Glue ou via CloudWatch.
Bonnes pratiques
- Utilisez toujours le catalogue de données pour éviter les schémas codés en dur
- Préférez le format Parquet pour les données transformées
- Activez les bookmarks pour traiter uniquement les nouvelles données
- Surveillez les coûts avec les tags et les alertes CloudWatch
Erreurs courantes à éviter
- Oublier d'accorder les permissions IAM correctes au rôle Glue
- Ne pas configurer de bookmarks sur les sources S3
- Utiliser des versions de Glue obsolètes (privilégiez 4.0+)
- Ignorer la journalisation CloudWatch pour le débogage
Pour aller plus loin
Approfondissez vos compétences ETL avec nos formations Learni dédiées à AWS et aux pipelines de données modernes.