B
← Les deux kill-switch
Position B - kill-switch CloudflareReversible - rien detruit

Kill-switch
Cloudflare

Cloudflare non plus n'offre pas de plafond en dollars qui coupe le compte. Mais son modele borne deja les couts, et le coupe-circuit qu'on branche est reversible : il suspend le service sans effacer une seule donnee.

Plan gratuitstop a 0 $
limits.cpu_mscap par Worker
Egress R2gratuit
wrangler deployClaude Code
En clair - pour debuter

Un peage, pas un compteur qui s'emballe

Cloudflare facture surtout a la requete, comme un peage : le cout est previsible et suit le trafic. Mieux : le plan gratuit s'arrete net a 100 000 requetes par jour sans jamais te facturer. Et si tu ajoutes un coupe-circuit maison, il ne fait que fermer la barriere - tes donnees restent intactes, tu rouvres quand tu veux. Rien a voir avec le bouton GCP qui, lui, demolit tout sur son passage.

01

Les faits

Fait 01Pas de cap dollar natif

Comme GCP, aucun bouton "max 250 $ et ca s'arrete". Le plan payant facture les depassements sans coupure automatique.

Fait 02Mais un modele borne

Le gratuit s'arrete a 0 $, l'egress R2 est gratuit, et le prix par requete est previsible. La forme de cout est deja plus sage.

Fait 03Le stop se construit - et il est doux

Suspendre une route arrete le service sans detruire KV, R2 ni D1. Un vrai coupe-circuit reversible, pas un extincteur.

02

Le flux du coupe-circuit

Cron Trigger-> Worker planifie-> API GraphQL Analytics-> seuil depasse ?-> API Cloudflare-> Route suspendue

Un Worker planifie interroge a intervalle regulier l'usage reel via l'API GraphQL Analytics. S'il depasse le seuil, il appelle l'API pour desactiver la route qui sert le service de production. Le trafic cesse d'etre servi ; les donnees, elles, ne bougent pas.

03

Le montage, etape par etape

  1. Creer un jeton API scope : lecture Analytics + edition des routes Workers. Jamais la cle globale du compte.
  2. Ecrire un Worker planifie (Cron Trigger) qui lit l'usage via l'API GraphQL (le code est a la section 04).
  3. Brancher l'action de coupe : si l'usage depasse le seuil, appeler l'API pour supprimer la route du Worker de prod.
  4. Deployer avec wrangler deploy depuis le poste, via Claude Code.
  5. Tester avec un seuil bas avant de partir. Comme le coupe-circuit est reversible, le test ne coute rien : tu declenches, tu verifies, tu rouvres.
# wrangler.toml : declencher le gardien toutes les 5 minutes name = "gardien-facturation" main = "gardien.js" [triggers] crons = ["*/5 * * * *"] # deployer depuis le poste npx wrangler deploy
04

Le gardien qui coupe

Un Worker planifie. Il lit les requetes consommees, et si le seuil est franchi, il supprime la route de production. Illustratif : la requete GraphQL exacte est a adapter a ton compte.

export default { async scheduled(evenement, environnement, contexte) { const seuilRequetes = 8_000_000; // couper avant les 10 M inclus const requetesConsommees = await lireRequetesDuMois(environnement); // sous le seuil : on ne touche a rien if (requetesConsommees < seuilRequetes) return; await suspendreLaRoute(environnement); }, }; async function lireRequetesDuMois(environnement) { const reponse = await fetch("https://api.cloudflare.com/client/v4/graphql", { method: "POST", headers: { "Authorization": `Bearer ${environnement.JETON_ANALYTICS}`, "Content-Type": "application/json", }, body: JSON.stringify({ query: REQUETE_USAGE }), }); const donnees = await reponse.json(); return donnees.data.viewer.accounts[0].requetes.sum.requetes; } async function suspendreLaRoute(environnement) { // desactive la route de prod : le service s'arrete, les donnees restent await fetch( `https://api.cloudflare.com/client/v4/zones/${environnement.IDENTIFIANT_ZONE}` + `/workers/routes/${environnement.IDENTIFIANT_ROUTE}`, { method: "DELETE", headers: { "Authorization": `Bearer ${environnement.JETON_ROUTES}` }, } ); }
Non destructif : supprimer une route ne touche ni au code du Worker, ni a KV, R2 ou D1. Pour rouvrir, on recree la route (un appel API ou wrangler deploy). L'arret d'urgence ne se rearme pas tout seul - c'est voulu - mais il ne coute aucune perte.
05

Rayon de souffle

06

Le bon ordre des plafonds

Du plus fiable au dernier recours - et ici, meme le dernier recours est doux :