Skip to content

Type de ressource : Cloudflare Worker (Microservice FaaS / Middleware)
Fichier source : services/[worker-name]/src/index.ts
Statut : [Actif / Déprécié / En développement]

[Description concise du rîle de ce Worker dans l’architecture L3]

  • [Objectif principal : ex. intercepter toutes les requĂȘtes HTTP pour appliquer les politiques de sĂ©curitĂ©]
  • [BĂ©nĂ©fice pour l’architecture : ex. dĂ©couplage de la logique Edge du framework Astro]
Propriété Valeur
Type [Middleware HTTP / Microservice métier / Cron Trigger / Pages Function]
Trigger [HTTP fetch / Cron / Queue consumer / Les deux]
Route publique https://[worker-name].[subdomain].workers.dev ou sous-domaine dédié
Environnements [Production / Staging / Preview]
Consommateurs [Astro / Sanity / Navigateur / Autres Workers]
[Entrée : Client / Astro / Sanity / Cron]
│
▌
[Cloudflare Worker]
│ ‱ Validation des entrĂ©es
│ ‱ Logique mĂ©tier
│ ‱ Interaction avec les bindings (KV, R2, Queue)
▌
[Services tiers / Storage]
│ ‱ Sanity API / CRM / R2 / KV
▌
[Réponse / Action]
[Client]
│
▌
[Middleware Global] ← (ce Worker, si applicable)
│
▌
[Pages Functions / Autres Workers]
│
▌
[Services tiers]
Composant RĂŽle Type
[Nom] [Description] [Binding / Service tiers / Client]
Variable Description Obligatoire Valeur par défaut
[Variable] [Description] [✅/❌] [Valeur]
Binding Type Nom Description
[Nom] [KV / R2 / Queue / Service / Secret] [Binding name] [Description]
services/[worker-name]/wrangler.toml
name = "[worker-name]"
main = "src/index.ts"
compatibility_date = "2026-09-01"
[vars]
# Variables non-sensibles
[VAR_NAME] = "value"
# Bindings
[[kv_namespaces]]
binding = "KV_BINDING"
id = "your-kv-namespace-id"
[[r2_buckets]]
binding = "R2_BUCKET"
bucket_name = "bucket-name"
[[queues.producers]]
queue = "queue-name"
binding = "QUEUE_BINDING"
[triggers]
crons = ["0 2 * * *"] # Si Cron Trigger
[env.production]
vars = { [VAR_NAME] = "prod-value" }
[env.staging]
vars = { [VAR_NAME] = "staging-value" }
Terminal window
# Injection des secrets via Wrangler CLI
wrangler secret put [SECRET_NAME] --env production
wrangler secret put [SECRET_NAME] --env staging
export interface Env {
// Définition des bindings et variables d'environnement
[BINDING_NAME]: [Type];
}
export default {
// Handler HTTP (si applicable)
async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
// Logique du Worker
return new Response('OK', { status: 200 });
},
// Handler Cron (si applicable)
async scheduled(event: ScheduledEvent, env: Env, ctx: ExecutionContext): Promise<void> {
// Logique du Cron
},
// Handler Queue (si applicable)
async queue(batch: MessageBatch, env: Env, ctx: ExecutionContext): Promise<void> {
// Logique du Queue consumer
},
};
// Types spécifiques au Worker
interface [TypeName] {
// ...
}
Mécanisme Implémentation Rationale
[Mécanisme] [Implémentation] [Rationale]
  • ✅ [RĂšgle de validation 1]
  • ✅ [RĂšgle de validation 2]
  • ✅ [RĂšgle de validation 3]
  • ✅ Les secrets ne sont jamais dans le code source
  • ✅ Injection via wrangler secret put
  • ✅ Rotation rĂ©guliĂšre des secrets (tous les 90 jours recommandĂ©)
Scénario Stratégie Rationale
[Scénario] [Retry / Fallback / Queue] [Rationale]
Lock Condition Action
[Nom] [Condition] [Action]
  • ✅ Timeout global : [X] secondes
  • ✅ Timeout par service tiers : [X] secondes
  • ✅ Fallback en cas de timeout : [Description]
Limite Valeur StratĂ©gie d’optimisation
Mémoire RAM 128 MB [Stratégie : streaming, URLs présignées]
CPU time 30s (Free) / 50s (Paid) [Stratégie]
Nombre de sous-requĂȘtes 50 [StratĂ©gie]
Taille requĂȘte/rĂ©ponse 100 MB [StratĂ©gie]
  • ✅ [Optimisation 1 : ex. streaming HTTP pour Ă©viter OOM]
  • ✅ [Optimisation 2 : ex. URLs prĂ©signĂ©es pour dĂ©porter l’upload]
  • ✅ [Optimisation 3 : ex. debouncing KV pour limiter les exĂ©cutions]
// Format de log recommandé
console.log(JSON.stringify({
worker: '[worker-name]',
action: '[action]',
status: '[success/error]',
duration: 123,
metadata: { /* ... */ }
}));
MĂ©trique Seuil d’alerte Canal
Taux d’erreur 5xx > 1% sur 5 min [PagerDuty / Slack / Email]
Latence p95 > [X]ms [Canal]
[Autre métrique] [Seuil] [Canal]
Terminal window
# Logs en temps réel
wrangler tail [worker-name] --env production
# Vérification des bindings
wrangler deployments list
# Inspection des variables d'environnement
wrangler secret list --env production
Terminal window
# Build
npm run build --workspace=services/[worker-name]
# Déploiement staging
wrangler deploy --env staging
# Déploiement production
wrangler deploy --env production
Terminal window
# Liste des déploiements
wrangler deployments list
# Rollback vers une version précédente
wrangler deployments rollback --deployment-id=[id]
Terminal window
# Test HTTP
curl -X POST "https://[worker-url]" \
-H "Content-Type: application/json" \
-d '{"key": "value"}'
# Test Cron (trigger manuel)
wrangler dev --test-scheduled
# Test Queue
wrangler queues tail [queue-name]
SymptĂŽme Cause probable Solution
[SymptĂŽme] [Cause] [Solution]
Code HTTP / Erreur Signification Action
[Code] [Signification] [Action]
  • ✅ Respecter le principe de responsabilitĂ© unique (un Worker = une mission)
  • ✅ DĂ©coupler la logique Edge du framework Astro
  • ✅ Utiliser les bindings Cloudflare plutĂŽt que des appels HTTP internes
  • ✅ PrĂ©fĂ©rer le streaming HTTP au chargement en mĂ©moire
  • ✅ Typer strictement les bindings et les rĂ©ponses
  • ✅ Valider toutes les entrĂ©es (Zod, schĂ©mas custom)
  • ✅ GĂ©rer explicitement les erreurs (try/catch)
  • ✅ Logger de maniĂšre structurĂ©e (JSON)
  • ✅ Ne jamais exposer les secrets cĂŽtĂ© client
  • ✅ Valider cryptographiquement les webhooks (HMAC)
  • ✅ Utiliser des comparaisons Ă  temps constant pour les secrets
  • ✅ Appliquer une CSP stricte (pour le Middleware)
  • ✅ Minimiser le nombre de sous-requĂȘtes
  • ✅ Utiliser le cache KV pour les donnĂ©es frĂ©quemment lues
  • ✅ DĂ©porter les uploads lourds via URLs prĂ©signĂ©es
  • ✅ Utiliser le streaming pour les gros volumes
  • [Évolution 1]
  • [Évolution 2]
  • [Évolution 3]
  • ❌ [Limitation 1]
  • ❌ [Limitation 2]
  • Documentation Cloudflare Workers : Getting Started
  • Documentation Wrangler : CLI Reference
  • DAT L3 : §[X] - [Section pertinente]
  • Workers associĂ©s :
    • [Liste des Workers liĂ©s ou dĂ©pendants]
  • Fichiers concernĂ©s :
    • services/[worker-name]/src/index.ts
    • services/[worker-name]/wrangler.toml
    • services/[worker-name]/package.json
Date Version Description Auteur
YYYY-MM-DD 1.0 Création initiale [Nom]
YYYY-MM-DD 1.1 [Modification] [Nom]
---
**Points clés de ce template :**
- Couvre les trois types de handlers (HTTP fetch, Cron, Queue consumer)
- Détaille la configuration Wrangler complÚte (bindings, secrets, environnements)
- Inclut les safety locks et mécanismes de résilience (critiques pour les Workers métier)
- Documente les limites Cloudflare et les stratégies d'optimisation
- Fournit les commandes de debug et de rollback
- Sépare clairement les bonnes pratiques par catégorie (architecture, code, sécurité, performance)
- S'adapte Ă  tous les Workers du projet (Middleware, form-handler, cms-webhook-receiver, media-upload, media-cleanup, sanity-backup)
Edit page

Last updated: