Cloud Storage supporta i trasferimenti di flussi di dati, i quali consentono di trasmettere i flussi di dati da e verso l'account Cloud Storage senza richiedere che i dati vengano salvati in un file. Lo streaming è utile quando:
Vuoi caricare dati ma non conosci le dimensioni finali all'inizio del caricamento, ad esempio quando vengono generati i dati da un processo o quando comprimi all'istante un oggetto.
Vuoi scaricare i dati da Cloud Storage in un processo.
Utilizzo della convalida del checksum durante il flusso di dati
Poiché è possibile fornire un checksum solo nella richiesta iniziale di un caricamento, spesso non è possibile utilizzare la convalida del checksum di Cloud Storage durante il flusso di dati. Ti consigliamo di utilizzare sempre la convalida del checksum e di farlo manualmente al termine del caricamento di un flusso; tuttavia, la convalida al termine del trasferimento significa che tutti i dati danneggiati saranno accessibili durante il tempo necessario per confermare il danneggiamento e rimuoverlo.
Se hai bisogno della convalida del checksum prima del completamento del caricamento e dell'accessibilità dei dati, non devi utilizzare un caricamento streaming. Devi utilizzare un'opzione di caricamento diversa, che esegue la convalida del checksum prima di finalizzare l'oggetto.
Analogamente, non devi utilizzare un download in streaming se richiedi la convalida del checksum prima del completamento del download e quando i dati diventano accessibili.
Questo perché i download in streaming utilizzano l'intestazione Range
e Cloud Storage non esegue la convalida del checksum per queste richieste.
Prerequisiti
I prerequisiti possono variare in base allo strumento utilizzato:
Console
Per completare questa guida utilizzando la Google Cloud Console, devi disporre delle autorizzazioni IAM appropriate. Se il bucket a cui vuoi accedere per il flusso di dati è presente in un progetto che non hai creato, potresti dover richiedere al proprietario del progetto di assegnarti un ruolo contenente le autorizzazioni necessarie.
Per un elenco delle autorizzazioni necessarie per azioni specifiche, consulta le autorizzazioni IAM per la console Google Cloud.
Per un elenco dei ruoli pertinenti, consulta Ruoli di Cloud Storage. In alternativa, puoi creare un ruolo personalizzato con autorizzazioni limitate e specifiche.
Riga di comando
Per completare questa guida utilizzando un'utilità a riga di comando, devi disporre delle autorizzazioni IAM appropriate. Se il bucket a cui vuoi accedere per il flusso di dati è presente in un progetto che non hai creato, potresti aver bisogno del proprietario del progetto per concederti un ruolo contenente le autorizzazioni necessarie.
Per un elenco delle autorizzazioni necessarie per azioni specifiche, consulta le autorizzazioni IAM per i comandi gsutil.
Per un elenco dei ruoli pertinenti, consulta Ruoli di Cloud Storage. In alternativa, puoi creare un ruolo personalizzato con autorizzazioni limitate e specifiche.
Esempi di codice
Per completare questa guida utilizzando le librerie client Cloud Storage, devi disporre delle autorizzazioni IAM appropriate. Se il bucket a cui vuoi accedere per il flusso di dati esiste in un progetto che non hai creato, potrebbe essere necessario che il proprietario del progetto ti assegni un ruolo che contiene le autorizzazioni necessarie. Se non diversamente indicato, le richieste della libreria client vengono effettuate tramite l'API JSON.
Per un elenco delle autorizzazioni necessarie per azioni specifiche, consulta le autorizzazioni IAM per i metodi JSON.
Per un elenco dei ruoli pertinenti, consulta Ruoli di Cloud Storage. In alternativa, puoi creare un ruolo personalizzato con autorizzazioni limitate e specifiche.
API REST
API JSON
Per completare questa guida utilizzando l'API JSON, devi disporre delle autorizzazioni IAM appropriate. Se il bucket a cui vuoi accedere per il flusso di dati è in un progetto che non hai creato, potresti aver bisogno del proprietario del progetto per concederti un ruolo contenente le autorizzazioni necessarie.
Per un elenco delle autorizzazioni necessarie per azioni specifiche, consulta le autorizzazioni IAM per i metodi JSON.
Per un elenco dei ruoli pertinenti, consulta Ruoli di Cloud Storage. In alternativa, puoi creare un ruolo personalizzato con autorizzazioni limitate e specifiche.
Riprodurre in streaming un caricamento
I seguenti esempi mostrano come eseguire un flusso di caricamento da un processo a un oggetto Cloud Storage:
Console
Google Cloud Console non supporta i caricamenti in streaming. Utilizza invece l'interfaccia a riga di comando gcloud.
Riga di comando
gcloud
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 stai raccogliendo 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
.
gsutil
Invia i dati al comando
gsutil cp
e utilizza un trattino per l'URL di origine:PROCESS_NAME | gsutil cp - gs://BUCKET_NAME/OBJECT_NAME
Dove:
PROCESS_NAME
è il nome del processo da cui stai raccogliendo 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
.
Esempi di codice
C++
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage C++.
C#
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage C#.
Go
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Go.
Java
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Java.
Node.js
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Node.js.
PHP
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage PHP.
Python
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Python.
Ruby
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Ruby.
API REST
API JSON
Per eseguire un caricamento in streaming, segui le istruzioni per eseguire un caricamento ripristinabile con le seguenti considerazioni:
Quando carichi i dati del file stesso, utilizza un caricamento di più blocchi.
Poiché non conosci le dimensioni totali del file fino a raggiungere il blocco finale, utilizza
*
per le dimensioni totali del file nell'intestazioneContent-Range
dei blocchi intermedi.Ad esempio, se il primo blocco caricato ha una dimensione di 512 KiB, l'intestazione
Content-Range
del blocco èbytes 0-524287/*
. Se il caricamento ha 64.000 byte rimanenti dopo il primo blocco, devi inviare un blocco finale contenente i byte rimanenti e dotato di un'intestazioneContent-Range
con valorebytes 524288-588287/588288
.
API XML
Per eseguire un caricamento in streaming, utilizza uno dei seguenti metodi:
Un caricamento ripristinabile, con le seguenti modifiche:
Quando carichi i dati del file stesso, utilizza un caricamento di più blocchi.
Poiché non conosci le dimensioni totali del file fino ad arrivare al blocco finale, utilizza
*
per le dimensioni totali del file nell'intestazioneContent-Range
dei blocchi intermedi.Ad esempio, se il primo blocco caricato ha una dimensione di 512 KiB, l'intestazione
Content-Range
del blocco èbytes 0-524287/*
. Se il caricamento ha 64.000 byte rimanenti dopo il primo blocco, devi inviare un blocco finale contenente i byte rimanenti e contenente un'intestazioneContent-Range
con il valorebytes 524288-588287/588288
.
Riprodurre in streaming un download
I seguenti esempi mostrano come eseguire un download da un oggetto Cloud Storage a un processo:
Console
Google Cloud Console non supporta i download in streaming. Utilizza invece l'interfaccia a riga di comando gcloud.
Riga di comando
gcloud
Esegui il comando
gcloud storage cp
utilizzando un trattino per l'URL di destinazione, quindi invia i dati al processo:gcloud storage cp gs://BUCKET_NAME/OBJECT_NAME - | PROCESS_NAME
Dove:
BUCKET_NAME
è il nome del bucket contenente l'oggetto. Ad esempio,my_app_bucket
.OBJECT_NAME
è il nome dell'oggetto di cui trasmetti in streaming al processo. Ad esempio,data_measurements
.PROCESS_NAME
è il nome del processo in cui feed i dati. Ad esempio,analyze_data
.
Puoi anche eseguire il flusso di dati da un oggetto Cloud Storage a un comando Linux standard, come sort:
gcloud storage cp gs://my_app_bucket/data_measurements - | sort
gsutil
Esegui il comando
gsutil cp
utilizzando un trattino per l'URL di destinazione, quindi invia i dati al processo:gsutil cp gs://BUCKET_NAME/OBJECT_NAME - | PROCESS_NAME
Dove:
BUCKET_NAME
è il nome del bucket contenente l'oggetto. Ad esempio,my_app_bucket
.OBJECT_NAME
è il nome dell'oggetto di cui trasmetti in streaming al processo. Ad esempio,data_measurements
.PROCESS_NAME
è il nome del processo in cui feed i dati. Ad esempio,analyze_data
.
Puoi anche eseguire il flusso di dati da un oggetto Cloud Storage a un comando Linux standard, come sort:
gsutil cp gs://my_app_bucket/data_measurements - | sort
Esempi di codice
C++
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage C++.
C#
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage C#.
Go
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Go.
Java
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Java.
Node.js
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Node.js.
PHP
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage PHP.
Python
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Python.
Ruby
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Ruby.
API REST
API JSON
Per eseguire il download in streaming, segui le istruzioni per il download di un oggetto tenendo presente quanto segue:
Prima di iniziare il download, recupera i metadati dell'oggetto e salva il numero di generazione dell'oggetto. Includi questo numero di generazione in ciascuna delle tue richieste per assicurarti di non scaricare dati da due diverse generazioni nel caso in cui l'originale venga sovrascritto.
Utilizza l'intestazione
Range
nella richiesta per recuperare un elemento dell'oggetto generale, che puoi inviare al processo locale desiderato.Continua a effettuare richieste per elementi successivi dell'oggetto, fino al recupero dell'intero oggetto.
API XML
Per eseguire il download in streaming, segui le istruzioni per il download di un oggetto tenendo presente quanto segue:
Prima di iniziare il download, recupera i metadati dell'oggetto e salva il numero di generazione dell'oggetto. Includi questo numero di generazione in ciascuna delle tue richieste per assicurarti di non scaricare dati da due diverse generazioni nel caso in cui l'originale venga sovrascritto.
Utilizza l'intestazione
Range
nella richiesta per recuperare un elemento dell'oggetto generale, che puoi inviare al processo locale desiderato.Continua a effettuare richieste per elementi successivi dell'oggetto, fino al recupero dell'intero oggetto.
Passaggi successivi
- Scopri di più sulla transcodifica decompressiva.
- Scopri di più su caricamenti e download.