Skip to content

[Nom de la Ressource de Stockage Cloudflare]

Type de ressource : Bucket Cloudflare R2 / BibliothĂšque Cloudflare Stream
Fichier source : services/[worker-name]/wrangler.toml ou configuration associée
Statut : [Actif / Déprécié / En développement]
Slice : [Numéro de la tranche verticale]
Version : 1.0


[Description concise du rîle de cette ressource de stockage dans l’architecture du site]

  • [Objectif principal : ex. stocker les images du blog et du portfolio]
  • [BĂ©nĂ©fice pour l’architecture : ex. dĂ©couplage des mĂ©dias du CMS Sanity]
Type de médias Statut
Images [✅/❌]
VidĂ©os [✅/❌]
Documents [✅/❌]
Backups [✅/❌]
AccĂšs Statut
Public [✅/❌]
PrivĂ© [✅/❌]
URLs signĂ©es [✅/❌]
Consommateur Statut
Sanity [✅/❌]
Astro [✅/❌]
Workers L3 [✅/❌]

[Sanity Studio]
│ (upload via Worker L3)
▌
[Worker media-upload (L3)]
│ ‱ GĂ©nĂ©ration URL prĂ©signĂ©e R2
▌
[Cloudflare R2]
│ ‱ Stockage structurĂ©
▌
[Sanity]
│ ‱ Stocke uniquement URL + mĂ©tadonnĂ©es
▌
[Astro / Site]
│ ‱ Consomme les URLs R2
▌
[Utilisateur final]
Composant RĂŽle Couche
Bucket R2 Stockage des médias Infrastructure
Worker media-upload GĂ©nĂ©ration d’URLs prĂ©signĂ©es L3
Worker media-cleanup Nettoyage des orphelins L3
Worker sanity-backup Backups vers R2 L3
Sanity Stockage des métadonnées + URLs L1
Astro Consommation des URLs L2

Variable Description Obligatoire Valeur par défaut
R2_ACCOUNT_ID ID du compte Cloudflare ✅ -
R2_BUCKET_NAME Nom du bucket ✅ -
R2_ACCESS_KEY_ID ClĂ© d’accĂšs API R2 ✅ -
R2_SECRET_ACCESS_KEY ClĂ© secrĂšte API R2 ✅ -
R2_PUBLIC_DOMAIN Domaine public ✅ -
services/media-upload/wrangler.toml
name = "media-upload"
main = "src/index.ts"
compatibility_date = "2026-09-01"
[[r2_buckets]]
binding = "R2_BUCKET"
bucket_name = "pub-medias"
preview_bucket_name = "pub-medias-staging"
[vars]
R2_ACCOUNT_ID = "your-account-id"
R2_BUCKET_NAME = "pub-medias"
R2_PUBLIC_DOMAIN = "pub-medias.votredomaine.com"
Terminal window
wrangler secret put R2_ACCESS_KEY_ID --env production
wrangler secret put R2_SECRET_ACCESS_KEY --env production

ParamĂštre Type Validation
file File Type MIME valide
filename string Extension valide
ÉlĂ©ment Type Description
url string URL publique du fichier

Scénario Description Résultat attendu
Upload Fichier valide URL générée
Download URL valide Fichier retourné
Scénario Dépendances Description Résultat attendu
Flux upload Worker + R2 Upload → Stockage Fichier stockĂ©

Composant Type RĂŽle MĂ©thode d’intĂ©gration
Sanity L1 Stockage métadonnées URL stockée dans schéma
Astro L2 Consommation URL utilisée dans <img>
Workers L3 Gestion R2 binding
  • Les credentials ne doivent jamais ĂȘtre exposĂ©s
  • Les URLs doivent ĂȘtre accessibles publiquement
  • Le bucket doit ĂȘtre configurĂ© avec le bon domaine
  • Le bucket est créé
  • Les credentials sont valides
  • Les uploads fonctionnent
  • Les tĂ©lĂ©chargements fonctionnent

  • ✅ Credentials injectĂ©s via secrets
  • ✅ HTTPS forcĂ©
  • ✅ CORS configurĂ©
  • ✅ Ne jamais exposer les credentials
  • ✅ Valider les types MIME
  • ✅ Configurer les permissions correctement

Limite Valeur
Taille max fichier 5 TB
RequĂȘtes par seconde IllimitĂ© (facturĂ©)
  • ✅ CDN Cloudflare
  • ✅ Compression automatique
  • ✅ Cache Edge

SymptĂŽme Cause probable Solution
Upload échoue Credentials invalides Vérifier les secrets
403 Forbidden Permissions incorrectes Configurer les permissions
Terminal window
# Lister les buckets
wrangler r2 bucket list
# Télécharger un fichier
wrangler r2 object get bucket-name key

  • ✅ Organisation hiĂ©rarchique des fichiers
  • ✅ Noms de fichiers cohĂ©rents
  • ✅ Lifecycle rules
  • ✅ Surveiller l’utilisation
  • ✅ Nettoyer les fichiers orphelins
  • ✅ Configurer les lifecycle rules

  • [Évolution 1]
  • [Évolution 2]
  • ❌ [Limitation 1]
  • ❌ [Limitation 2]

  • Documentation Cloudflare : R2

Date Version Description Auteur
YYYY-MM-DD 1.0 Création initiale [Nom]
Edit page

Last updated: