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 Thales Gnimavo & 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 zerosuite

Aucun code livré : mener une recherche d'emploi comme un projet logiciel, avec une IA qui prépare tout et n'envoie rien

Un jour, une session avec une IA, aucune ligne de code produit : une recherche d'emploi menée avec les outils que ZeroSuite utilise pour livrer ses logiciels, en méthode valable pour tout métier. Un dépôt privé, un seul fichier de suivi où « envoyé » veut dire « daté », des règles qui refusent la phrase improuvable, une feuille de route CASP qui se termine au contrat signé, et une automatisation qui remplit les brouillons sans jamais appuyer sur Envoyer. Avec un guide pas à pas à télécharger.

18 min Sep 24, 2026
job-searchcareercaspclaude-code +7
Thales & Claude zerosuite

Ça marche, et ce n'est pas fini

Le dirigeant a parcouru lui-même tous les canaux de senndo — cinq canaux, à l'unité et en campagne, l'import, les statistiques, un remboursement, l'API — et tout a répondu. Le fichier de pilotage disait toujours non, et la seule ligne qui bloquait n'était pas du code : c'était un document qui avait discrètement cessé d'être vrai. Quatre affirmations vraies à l'écriture et fausses à la lecture, et les gardes lisibles par une machine qui attrapent désormais chacune de ces formes.

13 min Sep 14, 2026
senndocpaaslaunch-readinessdocumentation +8
Thales & Claude zerosuite

Le navigateur entre les mains de Claude : piloter le Chrome du dirigeant

Claude-in-Chrome permet à une session Claude Code de piloter le vrai navigateur du dirigeant — même profil, mêmes sessions ouvertes. Ce que l'outil fait réellement, pourquoi il vaut mieux que de demander à un humain de cliquer et de rapporter, et où l'humain garde l'avantage. Ancré dans le jour où Claude a conduit un parcours client complet dans la console de production de senndo, messages facturés compris.

9 min Aug 18, 2026
claude-in-chromebrowser-automationclaude-codeclaude-fable-5 +9