Cloud Storage supporta lo streaming dei dati in un bucket senza richiedere che i dati vengano prima salvati in un file. Ciò è utile quando vuoi caricare dati ma non conosci le dimensioni finali all'inizio del caricamento, ad esempio quando generi i dati di caricamento da un processo o quando comprimi un oggetto al volo.
Utilizzo della convalida del checksum durante lo streaming
Poiché un checksum può essere fornito solo nella richiesta iniziale di un caricamento, spesso non è fattibile utilizzare la convalida del checksum di Cloud Storage durante lo streaming. Ti consigliamo di utilizzare sempre la convalida del checksum e puoi farlo manualmente al termine di un caricamento in streaming. Tuttavia, la convalida al termine del trasferimento significa che tutti i dati danneggiati sono accessibili durante il tempo necessario per confermare il danneggiamento e rimuoverli.
Se richiedi la convalida del checksum prima del completamento del caricamento e dell'accesso ai dati, non devi utilizzare un caricamento in streaming. Ti consigliamo di utilizzare un'opzione di caricamento diversa che esegue la convalida del checksum prima di finalizzare l'oggetto.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per lo streaming dei caricamenti, chiedi all'amministratore di concederti uno dei seguenti ruoli:
Per i caricamenti che includono un blocco della conservazione degli oggetti, chiedi all'amministratore di concederti il ruolo IAM Amministratore oggetti Storage (
roles/storage.objectAdmin
) per il bucket.Per tutti gli altri casi, chiedi all'amministratore di concederti il ruolo IAM Utente oggetti Storage (
roles/storage.objectUser
) per il bucket.
Questi ruoli predefiniti contengono le autorizzazioni necessarie per trasmettere in streaming i caricamenti a Cloud Storage. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
storage.objects.create
storage.objects.delete
- Questa autorizzazione è necessaria solo per i caricamenti che sovrascrivono un oggetto esistente.
storage.objects.list
- Questa autorizzazione è necessaria solo per utilizzare Google Cloud CLI per eseguire le istruzioni riportate in questa pagina.
storage.objects.setRetention
- Questa autorizzazione è necessaria solo per i caricamenti che includono un blocco della conservazione degli oggetti.
Puoi anche ottenere queste autorizzazioni con altri ruoli predefiniti o ruoli personalizzati.
Per informazioni sulla concessione dei ruoli sui bucket, consulta Utilizzare IAM con i bucket.
Trasmettere in streaming un caricamento
Gli esempi riportati di seguito mostrano come eseguire un caricamento in streaming da un processo a un oggetto Cloud Storage:
Console
La Google Cloud console non supporta i caricamenti in streaming. Utilizza invece gcloud CLI.
Riga di comando
Invia i dati al comando
gcloud storage cp
e utilizza un trattino per l'URL di origine:PROCESS_NAME | gcloud storage cp - gs://BUCKET_NAME/OBJECT_NAME
Dove:
PROCESS_NAME
è il nome del processo da cui raccogli i dati. Ad esempio,collect_measurements
.BUCKET_NAME
è il nome del bucket contenente l'oggetto. Ad esempio,my_app_bucket
.OBJECT_NAME
è il nome dell'oggetto creato dai dati. Ad esempio,data_measurements
.
Librerie client
C++
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage C++.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
C#
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage C#.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Go
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Go.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Java
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Java.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Node.js
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Node.js.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
PHP
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage PHP.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Python
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Python.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Ruby
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Ruby.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
API REST
API JSON
Per eseguire un caricamento in streaming, utilizza uno dei seguenti metodi:
Un caricamento ripristinabile, con i seguenti aggiustamenti:
Quando carichi i dati del file, utilizza un caricamento in più parti.
Poiché non conosci le dimensioni totali del file finché non arrivi all'ultimo chunk, utilizza un
*
per le dimensioni totali del file nell'intestazioneContent-Range
dei chunk intermedi.Ad esempio, se il primo blocco che carichi ha una dimensione di 512 KiB, l'intestazione
Content-Range
per il blocco èbytes 0-524287/*
. Se il caricamento ha 64.000 byte rimanenti dopo il primo blocco, invii un blocco finale che contiene i byte rimanenti e ha un'intestazioneContent-Range
con il valorebytes 524288-588287/588288
.
Un caricamento con una sola richiesta, con i seguenti aggiustamenti:
Includi un'intestazione
Transfer-Encoding: chunked
ed escludi l'intestazioneContent-Length
.Costruisci la richiesta in base alla specifica, inviando i dati dell'oggetto in blocchi man mano che diventano disponibili.
API XML
Per eseguire un caricamento in streaming, utilizza uno dei seguenti metodi:
Un caricamento ripristinabile, con i seguenti aggiustamenti:
Quando carichi i dati del file, utilizza un caricamento in più parti.
Poiché non conosci le dimensioni totali del file finché non arrivi all'ultimo chunk, utilizza un
*
per le dimensioni totali del file nell'intestazioneContent-Range
dei chunk intermedi.Ad esempio, se il primo blocco che carichi ha una dimensione di 512 KiB, l'intestazione
Content-Range
per il blocco èbytes 0-524287/*
. Se il caricamento ha 64.000 byte rimanenti dopo il primo blocco, invii un blocco finale che contiene i byte rimanenti e ha un'intestazioneContent-Range
con il valorebytes 524288-588287/588288
.
Un caricamento con una sola richiesta, con i seguenti aggiustamenti:
Includi un'intestazione
Transfer-Encoding: chunked
ed escludi l'intestazioneContent-Length
.Costruisci la richiesta in base alla specifica, inviando i dati dell'oggetto in blocchi man mano che diventano disponibili.
Tieni presente che non puoi eseguire un caricamento in streaming utilizzando questo metodo se la richiesta utilizza una firma nell'intestazione
Authorization
.
Passaggi successivi
- Riprodurre in streaming un download.
- Scopri di più sulla transcodifica decompressiva.
- Scopri di più su caricamenti e download.