Le compte est prêt, et la CLI est installée. On attaque maintenant la première étape d'un projet data et c'est la collecte, et donc faire atterrir la donnée brute dans AWS.

En mission, on a généralement un ERP qui dépose des exports CSV chaque nuit, une API de tracking qui crache du JSON etc.... Notre travail, c'est de faire atterrir tout ça au même endroit, dans S3. Et il y a trois façons de le faire, la console pour le ponctuel, la CLI pour les volumes, et Python avec boto3 pour l'automatisation. On fait les trois dans cet article, sur un vrai jeu de données.

Le dataset de la série

On va utiliser dans tous les articles de la série le même jeu de données, celui d'un petit e-commerce. Quatre fichiers.

  • clients.csv, 200 clients avec ville et date d'inscription.
  • produits.csv, 32 produits répartis en 5 catégories.
  • commandes.csv, un peu plus de 1 000 commandes sur 6 mois.
  • evenements_web.json, 300 événements de tracking web au format JSON imbriqué, comme en sortirait une vraie API.

Et je te préviens tout de suite, les données ont des défauts, et c'est volontaire. Des doublons dans les commandes, des montants vides, des emails manquants. C'est ce qu'on reçoit en vrai, et c'est exactement ce qu'on apprendra à détecter avec Athena puis à nettoyer avec Glue dans les prochains modules.

Télécharge le zip et décompresse-le dans un dossier, par exemple C:\data\ecommerce.

Créer le bucket

Il nous faut une destination. On crée un bucket simple pour recevoir les fichiers, et on construira la vraie structure du data lake (les zones raw, clean, curated) dans le module stockage.

Depuis la console, ouvre le service S3, clique sur "Create bucket", donne-lui un nom unique au monde du style ibdata-datalake-formation, vérifie que la région est bien eu-west-3, et laisse tout le reste par défaut ("Block all public access" doit rester coché).

Méthode 1, la console

Le drag & drop, pour dépanner ou déposer un fichier isolé.

  1. Ouvre ton bucket et clique sur "Upload".
  2. Glisse clients.csv dans la zone, puis clique sur "Upload" en bas.

Le fichier apparaît dans le bucket. C'est simple, mais impossible à automatiser et pénible dès qu'il y a du volume.

Méthode 2, la CLI

Deux commandes à connaître, cp pour copier un fichier, sync pour synchroniser un dossier entier.

# Copier un fichier
aws s3 cp C:\data\ecommerce\produits.csv s3://ibdata-datalake-formation/

# Synchroniser tout le dossier local vers le bucket
aws s3 sync C:\data\ecommerce s3://ibdata-datalake-formation/
aws s3 sync

La vraie valeur, c'est sync. Elle compare le dossier local et le bucket, et ne transfère que ce qui a changé. Relance la commande, rien ne part, tout est déjà à jour. C'est l'outil parfait pour pousser un dossier d'exports chaque jour, ou pour rapatrier un bucket en local.

💡
sync fonctionne dans les deux sens. aws s3 sync s3://mon-bucket C:\backup ramène le bucket sur le poste. Pratique pour sauvegarder ou récupérer le travail d'un collègue.

Méthode 3, Python et boto3 (l'automatisation)

Un script pour récupérer un export par exemple et le pousser dans S3 chaque nuit, lancé par un planificateur. C'est le rôle de boto3, le SDK AWS de Python. Il lit automatiquement les identifiants du dossier .aws configuré dans l'article précédent, donc zéro configuration en plus.

pip install boto3

Le script, version minimale avec la date du jour dans le chemin de destination.

import boto3
from datetime import date

s3 = boto3.client("s3")

BUCKET = "ibdata-datalake-formation"
aujourd_hui = date.today().isoformat()  # 2026-08-16

fichiers = ["clients.csv", "produits.csv", "commandes.csv"]

for f in fichiers:
    destination = f"exports/{aujourd_hui}/{f}"
    s3.upload_file(f"C:/data/ecommerce/{f}", BUCKET, destination)
    print(f"OK -> s3://{BUCKET}/{destination}")
OK -> s3://ibdata-datalake-formation/exports/2026-07-15/clients.csv
OK -> s3://ibdata-datalake-formation/exports/2026-07-15/produits.csv
OK -> s3://ibdata-datalake-formation/exports/2026-07-15/commandes.csv

et si on regarde dans S3 :

Le chemin de destination, exports/2026-08-16/clients.csv. Donc chaque jour d'export a son dossier daté et c'est la convention à adopter dès le premier jour, car elle permet de rejouer une journée précise, et de comparer deux exports, et surtout de partitionner par date plus tard dans Athena. Un dossier où tous les exports s'écrasent les uns les autres, c'est l'erreur classique qu'on paye des mois après.

💡
On ne remplace jamais un fichier source entrant, on empile des versions datées et le tri se fera dans les zones du lake, jamais à la source.

Et pour les cas plus lourds ? Une base de données entière à répliquer vers S3, c’est le service DMS. Un flux en temps réel (comme par exemple capteurs ou logs), c’est Kinesis, qu’on verra plus tard dans la formation. Mais retiens que les fichiers et les API couvrent généralement 80 % des besoins.

La checklist finale

  • [ ] Dataset téléchargé et décompressé en local.
  • [ ] Bucket créé en eu-west-3, accès public bloqué.
  • [ ] Un upload réussi par la console.
  • [ ] Le dossier complet poussé avec aws s3 sync.
  • [ ] Le script boto3 exécuté, avec les fichiers rangés dans un préfixe daté.

Combien ça coûte ?

Quasiment 0 €. Nos fichiers pèsent moins de 200 Ko, et S3 facture le stockage autour de 0,023 $ par Go et par mois. Il faudrait 5 000 fois notre dataset pour atteindre le premier centime.

La suite ?

La donnée est dans AWS. Dans le prochain article, on structure le data lake, dans la même logique que l'architecture médaillon (bronze, silver, gold), le versioning et les règles de cycle de vie.

SPONSORED

Abonne-toi à la newsletter pour le recevoir directement dans ta boîte mail ;)

S'inscrire à la newsletter →

Aller plus loin

Tu prépares la certification AWS Certified Data Engineer Associate (DEA-C01) ? L'ingestion de données (S3, boto3, DMS, Kinesis) est un des domaines de l'examen. Pour t'entraîner, j'ai créé des questions d'examen blanc en français.

👉 S'entraîner sur DataCertification.fr

Tu veux que je t'accompagne sur ton projet data (AWS, Snowflake, dbt, modélisation, coûts) ?

👉 Réserver un appel de 30 minutes

Questions fréquentes

Quelle méthode utiliser pour envoyer des fichiers dans S3 ?

La console pour un fichier ponctuel, la CLI (cp et sync) pour les volumes et les transferts manuels, boto3 pour tout ce qui doit tourner automatiquement.

C'est quoi boto3 ?

Le SDK officiel AWS pour Python. Il donne accès à tous les services AWS depuis du code, et lit automatiquement les identifiants configurés par aws configure.

Pourquoi mettre la date dans le chemin des fichiers S3 ?

Pour empiler les exports au lieu de les écraser. Un préfixe daté du type exports/2026-08-16/ permet de rejouer une journée, de comparer deux exports, et prépare le partitionnement par date dans Athena.

Quelle différence entre aws s3 cp et aws s3 sync ?

cp copie ce qu'on lui donne, à chaque fois. sync compare la source et la destination et ne transfère que les fichiers nouveaux ou modifiés. Pour un dossier qui évolue, sync fait gagner du temps et de la bande passante.

Quand utiliser DMS ou Kinesis plutôt que des fichiers ?

DMS pour répliquer une base de données entière vers S3, avec la capture des changements en continu. Kinesis pour du flux temps réel comme des clics ou des logs. Pour des exports fichiers ou des appels d'API, un script boto3 suffit.