Back to flin
flin

Backends R2 et Google Cloud Storage

Comment FLIN implémente les backends Cloudflare R2 et Google Cloud Storage -- astuces de compatibilité S3, échange de jetons OAuth2 et URL signées V4 construites à partir de zéro en Rust.

Juste A. Gnimavo (Thales) & Claude | March 26, 2026 3 min flin
EN/ FR/ ES
flinr2gcscloudflaregoogle-cloudstorage

Implémenter un backend de stockage cloud vous apprend le protocole. En implémenter deux vous apprend comment les protocoles divergent sous la surface. Cloudflare R2 et Google Cloud Storage stockent et servent tous deux des fichiers, mais leurs modèles d'authentification, algorithmes de signature d'URL et conventions API diffèrent de manières qui testent les limites d'une abstraction unifiée.

Cloudflare R2 : S3 avec une variante

L'argument de vente de R2 est la compatibilité S3. Il parle le même protocole et accepte les mêmes appels SDK. L'implémentation utilise le crate rust-s3 avec l'adressage par chemin (path-style) requis par R2 et la région « auto ».

R2 utilise "auto" au lieu d'une région spécifique -- Cloudflare route les requêtes vers le centre de données le plus proche automatiquement. Les requêtes HEAD sur R2 sont gratuites, rendant la déduplication essentiellement sans coût.

Google Cloud Storage : un monde différent

GCS ne parle pas S3. Il a sa propre API REST, son propre système d'authentification (OAuth2 avec comptes de service) et son propre algorithme d'URL signées (V4 avec RSA-SHA256). L'implémentation du backend GCS a nécessité substantiellement plus de code que R2.

L'authentification GCS utilise des fichiers JSON de comptes de service avec un flux en six étapes : charger le JSON, créer un JWT, signer avec la clé privée RSA, échanger contre un jeton OAuth2, mettre en cache le jeton et le rafraîchir avant expiration.

Les URL signées V4 de GCS utilisent un algorithme en quatre étapes impliquant une requête canonique, un hash SHA-256, une signature RSA et des paramètres de requête. FLIN implémente cet algorithme à partir de zéro en utilisant les crates rsa et pkcs8.

Résumé comparatif

AspectR2GCS
ProtocoleCompatible S3API REST personnalisée
AuthentificationClé d'accès + secretCompte de service + OAuth2
SignatureURL présignées S3V4 RSA-SHA256
Taille d'implémentation282 lignes580 lignes
Coûts de sortieZéroTarifs standard

R2 est l'implémentation plus simple car elle s'appuie sur l'écosystème de S3. GCS est plus complexe car elle nécessite une authentification et une signature personnalisées. Les deux sont des citoyens de première classe dans le système de stockage de FLIN, et passer de l'un à l'autre ne nécessite de changer qu'une valeur de configuration.


Ceci est la partie 128 de la série « Comment nous avons construit FLIN », documentant comment un CEO à Abidjan et un CTO IA ont conçu et construit un langage de programmation à partir de zéro.

Navigation de la série : - [127] Le patron de trait StorageBackend - [128] Backends R2 et Google Cloud Storage (vous êtes ici) - [129] Grants de téléchargement et clés d'accès

Share this article:

Responses

Write a response
0/2000
Loading responses...

Related Articles

Thales & Claude thales

Treize agents, quarante-trois minutes : la première session Workflow de Claude Fable 5, et ce qu'un script d'orchestration déterministe change aux builds multi-agents

Un prompt, treize agents, quarante-trois minutes : la première session de production avec Claude Fable 5 et l'outil Workflow de Claude Code a livré un site web de production complet de sept pages plus un endpoint backend de capture de leads, en un seul commit. Le carnet de bord : le script d'orchestration déterministe, le patron d'injection de contrat entre les phases, l'économie par agent du fan-out parallèle, et le suspense de la limite de session que le journal de reprise a transformé en non-événement.

23 min Jun 12, 2026
claude-fable-5claude-codeworkflow-toolmulti-agent +10
Thales & Claude casp

La porte a détecté sa propre dérive : une journée dans CASP avec Claude Fable 5

Nous avons confié au modèle Claude le plus autonome à ce jour les clés de CASP — le CLI open source qui garde les agents de code IA honnêtes face à git — avec l'autorité de rejeter notre propre roadmap. Il a rejeté cinq choses, trouvé deux vrais bugs dans le validateur en le dogfoodant, les a corrigés sous une porte à deux auditeurs, et a laissé casp check entièrement vert sur son propre dépôt pour la première fois. CASP 0.3.0 en est le résultat.

16 min Jun 10, 2026
caspzerosuiteworkflowai-cto +9
Thales & Claude zerosuite

La transplantation du CASP : comment la discipline des six fichiers est passée de Conductor à un ERP transport anti-fraude, ce que la compétence /next ajoute quand l'opérateur tape juste « next », et pourquoi le coût d'une dérive du CASP grimpe quand le projet, c'est l'argent des autres

La discipline du CASP qui a piloté trente-cinq sessions de Conductor est agnostique au produit. Le carnet de bord de sa transplantation sur KASSIA, un ERP transport anti-fraude pour un exploitant de flotte en Côte d'Ivoire : ce qui a migré, ce qui n'a pas migré (le validateur sur mesure — et ce que son absence coûte), ce que la compétence /next ajoute quand l'opérateur tape un seul mot, et là où le CASP s'arrête — le bug de déploiement qu'il ne pouvait pas voir parce qu'il enregistre l'intention, pas la réalité de l'infrastructure.

23 min Jun 8, 2026
kassiaerp-kassia-transport-logistiquezerosuiteCASP +15