Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Upload a prova di errore su Google Cloud Storage (GCS)

By Vinay GandhiApr 13, 20205 min read

Questa pagina è disponibile anche in English, Deutsch, Español, Français, 日本語 e Português.

Google Cloud Storage (GCS) è una soluzione eccellente per le applicazioni che devono gestire dati non strutturati a costi molto contenuti. Le applicazioni possono integrarsi tramite le API di GCS oppure condividere direttamente un URL GCS per caricare o scaricare i file. GCS consente inoltre di caricare i dati suddividendoli in più parti tramite i resumable upload.

Upload affidabili su Google Cloud Storage

Il vantaggio di un resumable upload rispetto a un upload singolo è la resilienza alle interruzioni di rete: l'applicazione carica le parti quando la connessione è disponibile e mette in pausa l'operazione se questa viene a mancare improvvisamente. Di conseguenza si riducono anche i costi di banda, perché non occorre riavviare da zero il caricamento dei file di grandi dimensioni.

Pensi, ad esempio, al caricamento di foto o documenti da un'app mobile verso il server solo tramite WiFi: l'app può mettere in pausa automaticamente l'upload quando il dispositivo passa alla rete cellulare e riprenderlo non appena il WiFi torna disponibile.

I bucket GCS espongono un endpoint URL per le chiamate API come quello qui sotto:

In un'applicazione software è sempre buona norma nascondere agli utenti finali i dettagli implementativi e gli strumenti utilizzati. Lo stesso principio vale per i bucket GCS all'interno della nostra applicazione: la scelta consigliata è esporli tramite un URL personalizzato.

Per accedere ai bucket GCS tramite URL personalizzati come https://mydrive..com, Google offre un servizio configurabile chiamato "Backend Bucket" tramite un load balancer GCP. Di seguito i passaggi dettagliati.

Come collegare un Backend Bucket a un bucket GCS

  1. Acceda alla console GCP e selezioni Network Services -> Load Balancing dalla barra di navigazione a sinistra.

2. Faccia clic su "Create Load Balancer".

3. Selezioni "HTTP(S) Load Balancing" e faccia clic su "Start Configuration".

4. Selezioni "From Internet to my VMs", poiché saranno i client su internet a interagire con il bucket.

5. Assegni un nome al load balancer e selezioni come Backend configuration l'opzione Backend buckets.

6. Assegni un nome al backend bucket e selezioni un bucket Cloud Storage da associare a questo backend service. Nel mio caso, il bucket GCS è pubblicamente accessibile per ridurre la complessità del recupero e della trasmissione del token di autorizzazione nelle chiamate API.

7. Una volta creato correttamente il Backend bucket, comparirà l'elenco dei Backend bucket disponibili.

8. La Frontend configuration collega l'indirizzo IP statico al load balancer, in modo che i nostri servizi possano interagire con il bucket GCS.

9. Riveda e finalizzi la configurazione.

10. A questo punto il servizio Backend bucket risulterà creato correttamente, come mostrato qui sotto.

Una volta che il servizio Backend bucket e il load balancer sono collegati tramite un indirizzo IP statico, possiamo eseguire le API GCS utilizzando il nostro indirizzo IP personalizzato (oppure un URL, se l'indirizzo IP è stato associato a un nome di dominio).

Recuperare l'elenco degli oggetti di un bucket

Esegua il comando curl come segue:

Body della risposta restituita:

Caricare un singolo oggetto in un bucket

Comando curl per caricare "map.png" come "worldmap_001.png" nel bucket GCS.

Recuperi l'elenco degli oggetti per verificare la presenza di "worldmap_001.png" nel bucket GCS.

Caricare un file in più parti con URL resumable

Suddivida il file "map.png", da 312806 byte, in due parti che siano multipli di 256 kilobyte. L'API resumable URL di Google Cloud Storage richiede che ogni parte caricata sia un multiplo di 256kb, fatta eccezione per l'ultima.

  1. Invochi l'API "uploadType=resumable" per ottenere la location URL tramite POSTMAN o un altro client REST API.

2. Estragga dalla risposta ricevuta la location URL da utilizzare per caricare le parti.

3. Carichi la prima parte, "xaa", nel bucket utilizzando il client POSTMAN. Si assicuri che il valore dell'header "Content-Range" sia impostato da 0 a ("Content-Length" - 1).

4. Stato della risposta restituito dalla chiamata di upload, con codice HTTP "308 Resume Incomplete".

5. Carichi la seconda parte (parte finale) "xab" nel bucket.

6. Codice HTTP "200 OK" ricevuto dopo il caricamento dell'ultima parte.

7. Verifichi nel bucket l'immagine caricata (map.png).

Riferimenti

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