Sécurisez et optimisez vos transferts de fichiers avec les signed URLs Cloud Storage

En tant qu'architecte cloud, je vois encore trop souvent une anti-pattern tenace dans le développement d'applications web : le streaming de fichiers à travers le serveur backend.
Le scénario est classique : un utilisateur doit uploader une photo de profil ou télécharger une facture PDF. L'application reçoit le fichier sur le serveur API, le met en mémoire tampon, puis l'envoie vers Google Cloud Storage (GCS).
Pourquoi est-ce une mauvaise idée ?
-
Goulot d'étranglement : Votre serveur API (Compute Engine, Cloud Run ou GKE) consomme de la CPU et de la RAM pour du simple transit de données.
-
Latence : Vous ajoutez un saut supplémentaire (Client -> Serveur -> GCS).
-
Coûts : Vous payez pour la bande passante et le temps de calcul de votre serveur, alors que GCS est conçu pour ingérer des pétaoctets à moindre coût.
La solution architecturale élégante ? Les URL signées.
Dans cet article, nous allons voir comment déléguer le transfert de fichiers directement au client (le navigateur) de manière totalement sécurisée, en utilisant Python et le SDK GCP.