Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Des uploads fiables dans Google Cloud Storage (GCS)

By Vinay GandhiApr 13, 20205 min read

Cette page est également disponible en English, Deutsch, Español, Italiano, 日本語 et Português.

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..com, Google fournit un service Backend Bucket configurable via un load balancer GCP. Les étapes détaillées sont décrites ci-dessous.

Étapes pour connecter un Backend Bucket à un bucket GCS

  1. 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.

  1. 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).

Références

Choosing a load balancer | Load Balancing | Google Cloud \ This document helps you determine which Google Cloud load balancer best meets your needs. To decide which load balancer…\ cloud.google.com

Adding backend buckets to load balancers | Load Balancing \ Backend buckets allow you to use Google Cloud Storage buckets with HTTP(S) Load Balancing. An external HTTP(S) load…\ cloud.google.com

Making data public | Cloud Storage | Google Cloud \ This page shows you how to make objects you own readable to everyone on the public internet. To learn how to access…\ cloud.google.com

Performing resumable uploads | Cloud Storage | Google Cloud \ This page describes how to make a resumable upload request in the Cloud Storage JSON and XML API. This protocol allows…\ cloud.google.com

JSON API: Performing a multipart upload | Cloud Storage | Google Cloud \ This page describes how to make a multipart upload request in the Cloud Storage JSON API. A multipart upload request…\ cloud.google.com

Resumable uploads | Cloud Storage | Google Cloud \ This page discusses Cloud Storage resumable uploads in JSON API and XML API. To learn how to perform a resumable…\ cloud.google.com

POST Object | Cloud Storage | Google Cloud \ Uploads objects by using HTML forms. For tips on uploading to Cloud Storage, see best practices. Unless you need to use…\ cloud.google.com

Resumable uploads | Cloud Storage | Google Cloud \ This page discusses Cloud Storage resumable uploads in JSON API and XML API. To learn how to perform a resumable…\ cloud.google.com

Requests \ You can send requests in Postman to connect to APIs you are working with. Your requests can retrieve, add, delete, and…\ learning.postman.com