Frais de trafic S3 à 1 000 $/mois ? Migrer vers R2 en 3 étapes et économiser 90 % (cas réels)

En ouvrant la facture AWS : stockage 230 $, trafic 4 500 $ — 50 To de trafic, et le budget fond. Des amis en vidéo et hébergement d’images subissent les mêmes frais de trafic S3. Un SaaS : 10 To/mois, facture 891 $, stockage 15 $ — le trafic représente 98 %.
Avec Cloudflare R2 ? Zéro frais de trafic sortant : mêmes 10 To, seulement 15 $ de stockage. Cet article partage calculs de coûts réels, tests de compatibilité API, tutoriel en 30 minutes et pièges vécus. Si votre trafic dépasse 500 Go/mois, vous pouvez économiser des milliers à des dizaines de milliers de dollars par an.
Pourquoi migrer de S3 vers R2 ? Les chiffres
Le piège des coûts cachés S3
La tarification AWS est trompeuse. Stockage à 0,023 $/Go semble bon marché — jusqu’à ce que le trafic sortant à 0,09 $/Go prenne le dessus.
Exemple : site vidéo, 10 To stockés, 50 To de trafic mensuel :
- Stockage : 10 To × 23 $/To = 230 $/mois
- Trafic : 50 To × 90 $/To = 4 500 $/mois
- Total : 4 730 $/mois
Le trafic représente ~95 %. Et c’est au tarif 0,09 $/Go ; les petits volumes n’ont pas toujours de remise.
Un ami en hébergement d’images : 20 To/mois, ~20 676 $/an sur S3. « Stockage 276 $, le reste c’est du trafic — on travaille pour AWS. »
L’avantage coût de R2
L’atout majeur de Cloudflare R2 : zéro frais de trafic sortant.
Pas une réduction — gratuit. Que ce soit 1 To ou 100 To de trafic : 0 $.
Détail :
- Stockage : 0,015 $/Go, soit 15 $/To (-35 % vs S3)
- Trafic sortant : 0 $ (S3 : 90 $/To)
- Opérations : Class A 4,50 $/million, Class B 0,36 $/million
Quota gratuit R2 :
- 10 Go de stockage
- 1 million d’opérations Class A (écriture, listes)
- 10 millions d’opérations Class B (lectures)
Pour un blog perso ou petit projet, tout peut tenir dans le gratuit.
Comparaison de cas réels
| Scénario | Stockage | Trafic/mois | S3/mois | R2/mois | Économie/an |
|---|---|---|---|---|---|
| Blog perso | 50 Go | 500 Go | 50 $ | 0,75 $ | 591 $ |
| Application SaaS | 1 To | 10 To | 923 $ | 15 $ | 10 896 $ |
| Plateforme vidéo | 10 To | 50 To | 4 730 $ | 150 $ | 54 960 $ |
Même besoin SaaS : 10 896 $/an en moins — l’équivalent d’un junior. Plateforme vidéo : 54 960 $/an à réinvestir.
Quand ne pas migrer
R2 n’est pas universel :
- Écosystème AWS profond : Lambda, Athena, EMR — refonte coûteuse.
- Conformité avancée : Object Lock, Legal Hold — R2 ne les offre pas encore.
- Trafic très faible : < 100 Go/mois — économies négligeables.
- Localisation stricte : S3 a 33 régions ; R2 moins de choix — vérifier les contraintes pays.
Mon critère : trafic > 500 Go/mois → migration rentable. En dessous, selon votre sensibilité au coût.
Compatibilité API R2 et S3 (pièges)
Jusqu’où R2 est compatible
Question clé : l’app va-t-elle casser ? Combien de code à changer ?
R2 couvre 80-90 % de l’API S3 — les opérations du quotidien passent.
Cloudflare a implémenté l’essentiel :
- Base : PutObject, GetObject, DeleteObject, ListObjects (~99 % des usages)
- Avancé : Multipart Upload, Presigned URLs, CORS
- Droits : Bucket policies, clés type IAM
Souvent : changer endpoint et credentials suffit.
Exemple AWS SDK JavaScript — 3 lignes modifiées :
// Config S3 d'origine
const s3 = new AWS.S3({
region: 'us-east-1'
});
// Migration R2 (endpoint + credentials)
const r2 = new AWS.S3({
endpoint: `https://${ACCOUNT_ID}.r2.cloudflarestorage.com`,
accessKeyId: R2_ACCESS_KEY_ID,
secretAccessKey: R2_SECRET_ACCESS_KEY,
signatureVersion: 'v4',
});
Upload, download, delete : inchangés. Deux semaines de tests sans souci de compatibilité.
Fonctions non supportées
Avant migration, vérifier si vous utilisez :
1. S3 Select (SQL sur objets)
Non sur R2 — télécharger puis traiter, ou autre solution.
2. Object Lock / Legal Hold (WORM)
Finance, santé : R2 ne les a pas — ne migrez pas si l’audit l’exige.
3. Versioning
Support limité sur R2 — tester si vous dépendez du rollback de versions.
4. S3 Inventory, S3 Object Lambda
Non disponibles sur R2.
Conseil : lister les API S3 utilisées et les comparer à la doc officielle Cloudflare. La plupart des apps n’utilisent que le socle.
Outils testés
| Outil | Compatibilité | Note |
|---|---|---|
| AWS CLI | ✅ Parfait | Configurer l’endpoint |
| rclone | ✅ Parfait | v1.59+, support R2 natif |
| s3cmd | ✅ Parfait | Fichier de config |
| AWS SDK (JS/Python/Go) | ✅ Parfait | Endpoint + credentials |
| Cyberduck | ✅ Parfait | Interface graphique |
rclone ≥ 1.59 — les anciennes versions ont des soucis d’authentification.
Piège vécu
Une app utilisait ListObjectsV2 avec StartAfter pour la pagination. Après migration, comportement légèrement différent — données manquantes.
Correction : passer à ContinuationToken. Tester largement après migration, y compris les cas limites.
3 méthodes de migration : laquelle choisir ?
Cloudflare propose Super Slurper et Sippy ; la communauté utilise rclone.
Méthode 1 : Super Slurper (débutants, ponctuel)
Outil officiel « tout migrer d’un coup ».
Avantages :
- Quelques formulaires
- Métadonnées conservées (metadata, content-type)
- Source intacte — zéro risque de perte
- Gratuit (frais Class A R2 minimes)
- Depuis 2024 : vitesse ×5
Limites :
- Migration unique, pas de sync incrémentale
- Nouveaux fichiers sur S3 pendant la migration non copiés automatiquement
- Objets < 50 Go recommandés (gros fichiers parfois problématiques)
Pour qui : < 10 To, courte maintenance acceptable, bascule totale vers R2.
Mon premier projet : 100 Go en ~30 min. Fenêtre 3 h du matin — utilisateurs peu impactés.
Méthode 2 : Sippy (sans interruption, progressif)
Zéro downtime.
Principe : l’app pointe vers R2. À la demande d’un fichier :
- R2 cherche localement
- Si présent → réponse directe
- Sinon → fetch S3, copie vers R2, prochaine fois depuis R2
Données chaudes d’abord, froides ensuite.
Avantages :
- Aucune interruption
- Baisse des frais S3 (trafic chaud sur R2)
- Retour S3 possible pendant la transition
Limites :
- Premier accès à un fichier froid plus lent (pull S3)
- Config plus complexe
- Profils d’accès chaud/froid clairs recommandés
Pour qui : production 24/7, > 10 To, test de stabilité avant bascule complète.
Un ami CDN : 50 To via Sippy, deux mois, service intact.
Méthode 3 : rclone (flexible)
Outil open source en ligne de commande.
Avantages :
- Gratuit
- Reprise sur erreur
- Sync planifiée (ex. chaque nuit)
- Vérification MD5/SHA256
- Limitation de débit
Limites :
- Courbe d’apprentissage CLI
- Scripts de suivi à écrire
- Trafic sortant S3 pendant le transfert (depuis mars 2024, AWS ne facture plus le trafic de sortie pour migration)
Pour qui : contrôle total, double écriture temporaire S3+R2, intégrité stricte.
Exemple :
rclone copy s3:my-bucket r2:my-bucket \
--progress \
--checksum \
--transfers 32 \
--s3-chunk-size 64M
--checksum vérifie le MD5 ; --transfers 32 accélère.
Décision rapide
Interruption possible ?
├─ Oui → < 10 To ?
│ ├─ Oui → Super Slurper (le plus simple)
│ └─ Non → rclone (rapide, contrôlé)
└─ Non → Sippy (zéro interruption)
Fort en technique + contrôle → rclone
Pour la majorité : Super Slurper suffit. Sippy ou rclone si pas une minute d’arrêt ou > 50 To.
Migration S3 vers R2 (Super Slurper)
Migration sans risque en 30 minutes — de la préparation à la validation et la bascule
Estimated time: PT30M
-
1
Step 1: Préparation : compte R2 et utilisateur IAM
Préparation : -
2
Step 2: • Nom
r2-migration-readonly -
3
Step 3: • Permission
AmazonS3ReadOnlyAccess ou politique bucket ciblé -
4
Step 4: Exécution : configurer Super Slurper
Étapes : -
5
Step 5: • Overwrite existing objects
recommandé -
6
Step 6: • Path prefix
optionnel -
7
Step 7: Suivi
Progression : -
8
Step 8: • 100 Go
~30 min -
9
Step 9: • 1 To
4-6 h -
10
Step 10: • 10 To
2-3 jours -
11
Step 11: Validation
Vérifications : -
12
Step 12: • ETag
aws s3api head-object -
13
Step 13: • MD5 R2
rclone md5sum -
14
Step 14: Bascule application
Configuration :
Tutoriel : migration sans risque en 30 minutes (Super Slurper)
Étape 1 : préparation (5 minutes)
1. Compte Cloudflare et R2
Cloudflare Dashboard → R2 Object Storage → activer.
R2 demande une carte ; quota gratuit — petits projets souvent à 0 $.
2. Créer un bucket R2
Create bucket :
- Nom (aligné sur S3 si possible)
- Location hint (UE si conformité, sinon Automatic)
⚠️ Location hint et restrictions juridictionnelles non modifiables après création. Automatic suffit en général.
3. Utilisateur IAM lecture seule AWS
Ne pas utiliser les clés du compte principal.
IAM → Users → Add User :
- Nom :
r2-migration-readonly - Programmatic access
- AmazonS3ReadOnlyAccess
Ou politique ciblée :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::your-bucket-name",
"arn:aws:s3:::your-bucket-name/*"
]
}
]
}
Copier Access Key ID et Secret — affichage unique.
4. Token API R2
R2 → Manage R2 API Tokens → Create :
- Nom :
migration-token - Object Read & Write
- Bucket concerné
Sauvegarder les clés.
Étape 2 : migration (15 min de config)
1. Data Migration → Migrate Files
2. Super Slurper (pas Sippy pour migration ponctuelle)
3. Source S3 : Provider Amazon S3, nom, région, clés → Verify Connection
4. Cible R2 : bucket, clés R2
5. Options : Overwrite recommandé ; Path prefix si dossier partiel (images/)
6. Review → Start Migration
Progression : débit, fichiers, ETA. Fermer la page possible — tâche en arrière-plan.
Durées : 100 Go ~30 min ; 1 To 4-6 h ; 10 To 2-3 jours.
Étape 3 : validation (10 minutes)
Ne supprimez pas S3 tout de suite.
1. Comparer le nombre d’objets.
2. MD5 échantillon :
aws s3api head-object --bucket my-bucket --key test.jpg --query 'ETag' --output text
rclone md5sum r2:my-bucket/test.jpg
3. Tester téléchargement via URL publique ou API.
4. Vérifier métadonnées :
aws s3api head-object --bucket my-bucket --key test.jpg
Étape 4 : basculer l’application
Déploiement progressif recommandé.
# S3
S3_ENDPOINT=https://s3.amazonaws.com
S3_BUCKET=my-bucket
S3_ACCESS_KEY=xxx
S3_SECRET_KEY=xxx
S3_REGION=us-east-1
# R2
S3_ENDPOINT=https://YOUR_ACCOUNT_ID.r2.cloudflarestorage.com
S3_BUCKET=my-bucket
S3_ACCESS_KEY=R2_xxx
S3_SECRET_KEY=R2_xxx
S3_REGION=auto
10 % → 50 % → 100 %. Surveiller erreurs, latence, facture.
Garder S3 30 jours. Depuis mars 2024, trafic de sortie migration gratuit côté AWS.
{
"Rules": [
{
"Status": "Enabled",
"Expiration": {
"Days": 30
}
}
]
}
Suppression automatique après 30 jours.
Optimisation et monitoring après migration
Performance
1. CDN Cloudflare
R2 → Public Access → Connect Domain (domaine sur Cloudflare) → cache CDN.
2. Cache-Control
// Statique : 1 an
s3.upload({
Bucket: 'my-bucket',
Key: 'image.jpg',
Body: fileBuffer,
CacheControl: 'public, max-age=31536000, immutable'
});
// Contenu variable : 1 h
s3.upload({
// ...
CacheControl: 'public, max-age=3600'
});
3. Domaine personnalisé
De https://xxx.r2.cloudflarestorage.com/file.jpg à https://cdn.yoursite.com/file.jpg.
Coûts
1. Infrequent Access (IA)
0,01 $/Go stockage vs 0,015 $ standard ; lecture IA 0,01 $/Go — archives, backups.
2. Taille des parts Multipart
Chaque part = une opération Class A :
- < 100 Mo : upload simple
- 100 Mo-1 Go : 64 Mo
-
1 Go : 128 Mo
rclone copy s3:bucket r2:bucket --s3-chunk-size 64M
3. Class A / B
Écriture 4,50 $/M ; lecture 0,36 $/M — surveiller les pics d’écriture.
Monitoring
1. Analytics R2 — requêtes, trafic, erreurs, top fichiers.
2. Alertes — Notifications → R2 storage usage (ex. > 50 $/mois).
3. APM — erreurs < 0,1 %, latence moyenne < 100 ms, P99 < 500 ms.
4. Comparer factures S3 avant / R2 après chaque mois.
Conclusion : migrer vers R2, ça vaut le coup ?
Si trafic > 500 Go/mois, oui.
- Économies réelles : zéro egress — facture -50 à -90 %. SaaS : 10 000 $+/an ; vidéo : 50 000 $+ courant.
- Migration simple : Super Slurper ~30 min de config ; 80-90 % API ; souvent endpoint seulement.
- Risque maîtrisé : source conservée, bascule progressive, rollback possible ; trafic migration AWS gratuit.
Limites : écosystème AWS profond, Object Lock, trafic < 100 Go/mois.
Conseil : quota gratuit R2 pour tester ; Sippy pour migration progressive à faible risque.
Un ami hébergeur d’images : 1 800 $/mois S3 → 18 $ R2. L’économie a financé un designer — optimiser les coûts, c’est réallouer vers ce qui compte.
Actions :
- Calculateur R2
- Tester avec le quota gratuit
- Choisir Super Slurper / Sippy / rclone
- Bascule progressive
- Profiter de la facture allégée
Questions en commentaires — bonne migration.
FAQ
Combien peut-on économiser en migrant de S3 vers R2 ?
Application SaaS (1 To stockage, 10 To trafic) :
• S3 : 923 $/mois, R2 : 15 $/mois, économie annuelle 10 896 $
Plateforme vidéo (10 To stockage, 50 To trafic) :
• Économie annuelle 54 960 $
Analyse des coûts :
• Les frais de trafic S3 représentent ~95 % (10 To stockage 230 $/mois, 50 To trafic 4 500 $/mois)
• R2 : zéro frais de trafic sortant, stockage 15 $/To (35 % moins cher que S3)
Critères :
• Migration rentable si trafic mensuel > 500 Go
• ROI faible si trafic < 100 Go/mois
Quelle est la compatibilité API entre R2 et S3 ?
Fonctions supportées :
• Opérations de base (PutObject/GetObject/DeleteObject/ListObjects) : compatibilité complète
• Fonctions avancées (Multipart Upload, Presigned URLs, CORS) : supportées
• Gestion des droits (Bucket policies, clés type IAM) : supportées
Il suffit de modifier l'endpoint et les credentials ; le code change peu.
Non supporté :
• S3 Select
• Object Lock et Legal Hold
• Versioning limité
• S3 Inventory et S3 Object Lambda
Avant migration : lister les fonctions S3 utilisées et vérifier la liste de compatibilité officielle.
Comment choisir une méthode de migration ?
1) Super Slurper (recommandé débutants, migration ponctuelle) :
• Données < 10 To, courte interruption acceptable, bascule complète vers R2
• Interface simple, métadonnées conservées, source non supprimée
• ~30 minutes pour 100 Go
2) Sippy (progressif sans interruption) :
• Production sans arrêt, > 10 To, test de stabilité avant bascule
• Zéro interruption, migration à la demande des données chaudes
3) rclone (le plus flexible) :
• Forte compétence technique, synchronisation continue, intégrité stricte
• Reprise sur erreur, sync planifiée, vérification d'intégrité
Arbre de décision :
• Interruption OK et < 10 To → Super Slurper
• Pas d'interruption → Sippy
• Contrôle total → rclone
Comment exécuter une migration Super Slurper ?
• Compte Cloudflare + R2, créer un bucket R2
• Utilisateur IAM AWS en lecture seule (r2-migration-readonly, AmazonS3ReadOnlyAccess)
• Token API R2 (Object Read & Write)
Migration :
1. Console R2 → Data Migration → Migrate Files
2. Choisir Super Slurper
3. Bucket source (Provider: Amazon S3, nom, région, Access Key)
4. Bucket cible (nom, clés R2)
5. Options (Overwrite existing objects recommandé)
6. Review puis Start Migration
Durées estimées :
• 100 Go : ~30 minutes
• 1 To : 4-6 heures
• 10 To : 2-3 jours
Comment valider et basculer après migration ?
• Nombre d'objets identique S3/R2
• Échantillon d'intégrité (ETag S3 via aws s3api head-object, MD5 R2 via rclone md5sum)
• Test d'accès et métadonnées
Bascule application :
• S3_ENDPOINT → endpoint R2, clés R2, S3_REGION=auto
Déploiement progressif :
• 10 % → 50 % → 100 %
• Logs, taux d'erreur, retours utilisateurs
Indicateurs :
• Taux d'erreur API, latence, frais de trafic en forte baisse
Conserver S3 30 jours (règle de cycle de vie pour nettoyage automatique).
Quand ne pas migrer vers R2 ?
1) Écosystème AWS profond :
• Usage intensif Lambda, Athena, EMR — coût de migration élevé
2) Conformité avancée :
• Object Lock, Legal Hold (finance, santé) — R2 ne les supporte pas encore
3) Trafic très faible :
• < 100 Go/mois — économies minimes
4) Exigences géographiques strictes :
• S3 : 33 régions ; R2 moins de choix — vérifier la localisation des données
Critère : trafic > 500 Go/mois → ROI intéressant ; sinon selon sensibilité au coût. Tester d'abord le quota gratuit R2.
Comment optimiser performances et coûts R2 après migration ?
1) CDN Cloudflare :
• Public Access → Connect Domain — cache CDN automatique
2) Cache-Control adapté :
• Ressources statiques : 1 an
• Contenu variable : 1 heure
3) Domaine personnalisé R2 :
• URL plus propre, meilleures perfs CDN
Coûts :
1) Classe Infrequent Access pour données froides :
• 0,01 $/Go vs 0,015 $/Go standard
• Archives, sauvegardes
2) Taille des parts Multipart Upload :
• < 100 Mo : upload simple
• 100 Mo-1 Go : 64 Mo
• > 1 Go : 128 Mo
3) Surveiller opérations Class A/B :
• Class A écriture 4,50 $/million
• Class B lecture 0,36 $/million
Monitoring :
• Analytics Cloudflare, alertes de coût
• Erreurs et latence côté application
9 min de lecture · Publié le: 1 déc. 2025 · Mis à jour le: 27 juil. 2026
Cloudflare Full Stack
Si vous arrivez depuis la recherche, le plus rapide est de passer à l’article précédent ou suivant de cette série.
Précédent
Hébergeur d'images gratuit : Cloudflare R2 + PicGo pour une solution stable
Guide pas à pas pour créer un hébergeur d'images personnel entièrement gratuit avec Cloudflare R2 : accès public, domaine personnalisé, plugin S3 PicGo — configuration en 30 minutes avec solutions aux problèmes courants.
Partie 13 sur 23
Suivant
Workers + KV : raccourcisseur maison, du débutant à la pratique
Un service de liens courts tiers fermé du jour au lendemain et des centaines d'URL mortes ? Guide pas à pas pour construire le vôtre avec Cloudflare Workers + KV : codes courts personnalisés, statistiques de visites, déploiement simple, accélération mondiale, largement gratuit.
Partie 15 sur 23



Commentaires
Connectez-vous avec GitHub pour laisser un commentaire