Google Cloud Storage (GCS) est une excellente solution pour permettre aux applications de gérer leurs données non structurées à très faible coût. Les applications peuvent s'appuyer sur les API GCS pour s'intégrer ou partager une URL GCS directe afin d'uploader ou de télécharger des fichiers de données. GCS permet également d'uploader des données en plusieurs parties/chunks grâce aux uploads reprenables.

Des uploads fiables vers Google Cloud Storage
L'intérêt d'un upload reprenable par rapport à un upload unique, c'est que les applications gagnent en résilience face aux aléas du réseau : elles peuvent uploader des morceaux de données quand le réseau est disponible, puis mettre en pause dès qu'il devient indisponible. Vous réduisez ainsi vos coûts de bande passante, puisque vous n'avez plus à reprendre depuis le début l'upload des gros fichiers.
Prenons l'exemple d'un upload de photos ou de documents depuis une application mobile vers le serveur, uniquement en WiFi : l'application peut automatiquement mettre l'upload en pause lorsque l'appareil bascule sur les données cellulaires, et le reprendre dès qu'il retrouve le WiFi.
Les buckets GCS exposent une URL d'endpoint pour effectuer les appels API, comme ci-dessous :

Il est toujours recommandé de masquer aux utilisateurs finaux les détails d'implémentation et les outils utilisés au sein d'une application. Le même principe s'applique aux buckets GCS dans notre application : nous recommandons de les exposer via une URL personnalisée.
Pour accéder aux buckets GCS via des URL personnalisées telles que https://mydrive.
Étapes pour connecter un Backend Bucket à un bucket GCS
- Connectez-vous à la console GCP et sélectionnez Network Services -> Load Balancing dans la barre de navigation à gauche.

2. Cliquez sur Create Load Balancer.

3. Sélectionnez HTTP(S) Load Balancing, puis cliquez sur Start Configuration.

4. Sélectionnez From Internet to my VMs, puisque ce sont des clients Internet qui interagiront avec le bucket.

5. Donnez un nom à votre load balancer et choisissez Backend buckets comme Backend configuration.

6. Donnez un nom à votre backend bucket et sélectionnez le bucket Cloud Storage avec lequel ce service backend doit interagir. Dans mon cas, le bucket GCS est ouvert publiquement afin de simplifier la récupération et la transmission du token d'autorisation dans les appels API.

7. Une fois le Backend bucket créé, la liste des Backend buckets doit s'afficher.

8. La Frontend configuration relie l'adresse IP statique au load balancer afin que nos services puissent interagir avec le bucket GCS.

9. Vérifiez et finalisez la configuration.

10. Le service Backend bucket doit alors être créé, comme ci-dessous.

Une fois le service Backend bucket et le load balancer reliés via une adresse IP statique, vous pouvez exécuter les API GCS en utilisant votre adresse IP personnalisée (ou votre URL si l'adresse IP est associée à un nom de domaine).
Récupérer la liste des objets d'un bucket
Exécutez la commande curl ci-dessous :

Corps de la réponse renvoyée :

Uploader un objet unique dans un bucket
Commande curl pour uploader map.png sous le nom worldmap_001.png dans le bucket GCS.

Récupérez la liste des objets pour vérifier la présence de worldmap_001.png dans le bucket GCS.
Uploader un fichier en plusieurs parties avec une URL reprenable
Découpez le fichier map.png de 312806 octets en deux parties, chacune étant un multiple de 256 kilo-octets. L'API d'URL reprenable de Google Cloud Storage exige que chaque partie uploadée soit un multiple de 256 Ko, à l'exception de la dernière.

- Appelez l'API uploadType=resumable pour récupérer l'URL de location depuis le client REST POSTMAN ou tout autre client REST.

2. Récupérez l'URL de location dans la réponse pour uploader les différentes parties.

3. Uploadez la 1re partie, xaa, dans le bucket à l'aide du client POSTMAN. Veillez à ce que la valeur de l'en-tête Content-Range soit définie de 0 à (Content-Length - 1).

4. Statut de réponse reçu lors de l'appel d'upload, avec le code HTTP 308 Resume Incomplete.

5. Uploadez la 2e partie (la dernière), xab, dans le bucket.

6. Code HTTP 200 OK reçu après l'upload de la dernière partie.

7. Vérifiez dans le bucket la présence de l'image uploadée (map.png).
