Cloud Storage unterstützt Streaming-Übertragungen, mit denen Sie Daten zu und von Ihrem Cloud Storage-Konto streamen können, ohne dass die Daten zuerst in einer Datei gespeichert werden müssen. Das Streaming ist in folgenden Fällen nützlich:
Sie möchten Daten hochladen, kennen aber die endgültige Größe zu Beginn des Uploads nicht, z. B. wenn Sie die Upload-Daten aus einem Prozess heraus generieren oder wenn Sie ein Objekt direkt komprimieren.
Sie möchten Daten aus Cloud Storage in einen Prozess herunterladen.
Prüfsummenvalidierung beim Streaming verwenden
Da eine Prüfsumme nur in der ersten Anfrage eines Uploads bereitgestellt werden kann, ist es häufig nicht möglich, die Prüfsummenvalidierung von Cloud Storage beim Streaming zu verwenden. Es wird empfohlen, immer die Validierung der Prüfsumme zu verwenden, und Sie können dies manuell tun, nachdem ein Streaming-Upload abgeschlossen ist. Die Validierung nach Abschluss der Übertragung bedeutet jedoch, dass beschädigte Daten während der Zeit, die für die Bestätigung der Beschädigung und deren Beseitigung benötigt wird, zugänglich sind.
Wenn Sie eine Validierung der Prüfsumme benötigen, bevor der Upload abgeschlossen ist und die Daten zugänglich sind, sollten Sie keinen Streaming-Upload verwenden. Sie sollten eine andere Uploadoption verwenden, die vor dem Abschluss des Objekts eine Validierung der Prüfsumme durchführt.
Ebenso sollten Sie keinen Streaming-Download verwenden, wenn Sie vor dem Abschluss des Downloads eine Validierung der Prüfsumme benötigen und die Daten zugänglich sind.
Dies liegt daran, dass Streaming-Downloads den Header Range
verwenden und Cloud Storage keine Validierung der Prüfsumme für solche Anfragen durchführt.
Vorbereitung
Die Voraussetzungen können je nach verwendetem Tool variieren:
Console
Sie benötigen die entsprechenden IAM-Berechtigungen, um diesen Leitfaden mit der Google Cloud Console abzuschließen. Wenn Sie den Bucket, den Sie zum Streaming aufrufen wollen, in ein Projekt hochladen möchten, das nicht Sie erstellt haben, muss Ihnen der Projektinhaber möglicherweise erst eine Rolle zuweisen, die die erforderlichen Berechtigungen enthält.
Eine Liste der erforderlichen Berechtigungen für bestimmte Aktionen finden Sie unter IAM-Berechtigungen für die Google Cloud Console.
Eine Liste der relevanten Rollen finden Sie unter Cloud Storage-Rollen. Alternativ können Sie eine benutzerdefinierte Rolle erstellen, die spezifische, eingeschränkte Berechtigungen hat.
Befehlszeile
Damit Sie diese Anleitung mit einem Befehlszeilendienstprogramm ausführen können, benötigen Sie die entsprechenden IAM-Berechtigungen. Wenn sich der Bucket, auf den Sie zum Streaming zugreifen möchten, in einem Projekt befindet, das Sie nicht erstellt haben, muss Ihnen der Projektinhaber möglicherweise erst eine Rolle zuweisen, die die erforderlichen Berechtigungen enthält.
Eine Liste der erforderlichen Berechtigungen für bestimmte Aktionen finden Sie unter IAM-Berechtigungen für gsutil-Befehle.
Eine Liste der relevanten Rollen finden Sie unter Cloud Storage-Rollen. Alternativ können Sie eine benutzerdefinierte Rolle erstellen, die spezifische, eingeschränkte Berechtigungen hat.
Codebeispiele
Sie benötigen die entsprechenden IAM-Berechtigungen, um diesen Leitfaden mit den Cloud Storage-Clientbibliotheken abzuschließen. Wenn Sie den Bucket, den Sie zum Streaming aufrufen wollen, in ein Projekt hochladen möchten, das nicht Sie erstellt haben, muss Ihnen der Projektinhaber möglicherweise erst eine Rolle zuweisen, die die erforderlichen Berechtigungen enthält. Sofern nicht anders angegeben, werden Clientbibliotheksanfragen über die JSON API gestellt.
Eine Liste der für bestimmte Aktionen erforderlichen Berechtigungen finden Sie unter IAM-Berechtigungen für JSON-Methoden.
Eine Liste der relevanten Rollen finden Sie unter Cloud Storage-Rollen. Alternativ können Sie eine benutzerdefinierte Rolle erstellen, die spezifische, eingeschränkte Berechtigungen hat.
REST APIs
JSON API
Sie benötigen die entsprechenden IAM-Berechtigungen, um diese Anleitung mit der JSON API abzuschließen. Wenn Sie den Bucket, den Sie zum Streaming aufrufen wollen, in ein Projekt hochladen möchten, das nicht Sie erstellt haben, muss Ihnen der Projektinhaber möglicherweise erst eine Rolle zuweisen, die die erforderlichen Berechtigungen enthält.
Eine Liste der für bestimmte Aktionen erforderlichen Berechtigungen finden Sie unter IAM-Berechtigungen für JSON-Methoden.
Eine Liste der relevanten Rollen finden Sie unter Cloud Storage-Rollen. Alternativ können Sie eine benutzerdefinierte Rolle erstellen, die spezifische, eingeschränkte Berechtigungen hat.
Upload streamen
Die folgenden Beispiele zeigen, wie ein Streaming-Upload von einem Prozess zu einem Cloud Storage-Objekt durchgeführt wird:
Console
Die Google Cloud Console unterstützt keine Streaming-Uploads. Verwenden Sie stattdessen die gcloud CLI.
Befehlszeile
gcloud
Senden Sie die Daten über eine Pipeline an den Befehl
gcloud storage cp
und verwenden Sie bei der Quell-URL einen Bindestrich.PROCESS_NAME | gcloud storage cp - gs://BUCKET_NAME/OBJECT_NAME
Wobei:
PROCESS_NAME
ist der Name des Prozesses, von dem Sie Daten erheben. Beispiel:collect_measurements
BUCKET_NAME
ist der Name des Buckets, der das Objekt enthält. Beispiel:my_app_bucket
.OBJECT_NAME
ist der Name des Objekts, das aus den Daten erstellt wird. Beispiel:data_measurements
.
gsutil
Senden Sie die Daten über eine Pipeline an den Befehl
gsutil cp
und verwenden Sie bei der Quell-URL einen Bindestrich.PROCESS_NAME | gsutil cp - gs://BUCKET_NAME/OBJECT_NAME
Wobei:
PROCESS_NAME
ist der Name des Prozesses, von dem Sie Daten erheben. Beispiel:collect_measurements
BUCKET_NAME
ist der Name des Buckets, der das Objekt enthält. Beispiel:my_app_bucket
.OBJECT_NAME
ist der Name des Objekts, das aus den Daten erstellt wird. Beispiel:data_measurements
.
Codebeispiele
C++
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage C++ API.
C#
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage C# API.
Go
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Go API.
Java
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Java API.
Node.js
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Node.js API.
PHP
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage PHP API.
Python
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Python API.
Ruby
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Ruby API.
REST APIs
JSON API
Folgen Sie der Anleitung zum Durchführen eines fortsetzbaren Uploads, um einen Streaming-Upload durchzuführen, und beachten Sie dabei die folgenden Punkte:
Verwenden Sie mehrere Blockuploads, wenn Sie die Dateidaten hochladen.
Da Sie die Gesamtgröße der Dateien erst kennen, wenn Sie beim letzten Block angekommen sind, verwenden Sie im
Content-Range
-Header der Zwischenblöcke ein*
für die Gesamtgröße der Datei.Wenn beispielsweise der erste Block, den Sie hochladen, eine Größe von 512 KB hat, hat der Header
Content-Range
für den Block den Wertbytes 0-524287/*
. Wenn bei Ihrem Upload nach dem Hochladen des ersten Blocks noch 64.000 Byte verbleiben, senden Sie danach einen letzten Block, der die verbleibenden Byte enthält und einenContent-Range
-Header mit dem Wertbytes 524288-588287/588288
hat.
XML API
Verwenden Sie eine der folgenden Methoden, um einen Streaming-Upload durchzuführen:
Ein fortsetzbarer Upload mit den folgenden Anpassungen:
Verwenden Sie mehrere Blockuploads, wenn Sie die Dateidaten hochladen.
Da Sie die Gesamtgröße der Dateien erst kennen, wenn Sie beim letzten Block angekommen sind, verwenden Sie im
Content-Range
-Header der Zwischenblöcke ein*
für die Gesamtgröße der Datei.Wenn beispielsweise der erste Block, den Sie hochladen, eine Größe von 512 KiB hat, hat der Header
Content-Range
für den Block den Wertbytes 0-524287/*
. Wenn bei Ihrem Upload nach dem Hochladen des ersten Blocks noch 64.000 Byte verbleiben, senden Sie danach einen letzten Block, der die verbleibenden Byte enthält und einenContent-Range
-Header mit dem Wertbytes 524288-588287/588288
hat.
Download streamen
Die folgenden Beispiele zeigen, wie Sie einen Download von einem Cloud Storage-Objekt in einen Prozess durchführen:
Console
Die Google Cloud Console unterstützt keine Streaming-Downloads. Verwenden Sie stattdessen die gcloud CLI.
Befehlszeile
gcloud
Führen Sie den Befehl
gcloud storage cp
mit einem Bindestrich für die Ziel-URL aus und senden Sie die Daten anschließend über eine Pipeline an den Prozess.gcloud storage cp gs://BUCKET_NAME/OBJECT_NAME - | PROCESS_NAME
Wobei:
BUCKET_NAME
ist der Name des Buckets, der das Objekt enthält. Beispiel:my_app_bucket
.OBJECT_NAME
ist der Name des Objekts, das Sie zum Prozess streamen. Beispiel:data_measurements
PROCESS_NAME
ist der Name des Prozesses, an den Sie Daten senden. Beispiel:analyze_data
.
Sie können auch Daten von einem Cloud Storage-Objekt an einen Standard-Linux-Befehl wie sort streamen:
gcloud storage cp gs://my_app_bucket/data_measurements - | sort
gsutil
Führen Sie den Befehl
gsutil cp
mit einem Bindestrich für die Ziel-URL aus und senden Sie die Daten anschließend über eine Pipeline an den Prozess.gsutil cp gs://BUCKET_NAME/OBJECT_NAME - | PROCESS_NAME
Wobei:
BUCKET_NAME
ist der Name des Buckets, der das Objekt enthält. Beispiel:my_app_bucket
.OBJECT_NAME
ist der Name des Objekts, das Sie zum Prozess streamen. Beispiel:data_measurements
PROCESS_NAME
ist der Name des Prozesses, an den Sie Daten senden. Beispiel:analyze_data
.
Sie können auch Daten von einem Cloud Storage-Objekt an einen Standard-Linux-Befehl wie sort streamen:
gsutil cp gs://my_app_bucket/data_measurements - | sort
Codebeispiele
C++
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage C++ API.
C#
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage C# API.
Go
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Go API.
Java
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Java API.
Node.js
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Node.js API.
PHP
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage PHP API.
Python
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Python API.
Ruby
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Ruby API.
REST APIs
JSON API
Folgen Sie der Anleitung zum Herunterladen eines Objekts unter Berücksichtigung folgender Überlegungen, um einen Streaming-Download durchzuführen:
Bevor Sie mit dem Download beginnen, rufen Sie die Metadaten des Objekts ab und speichern Sie die Generierungsnummer des Objekts. Fügen Sie diese Generierungsnummer in jede Anfrage ein, damit keine Daten von zwei verschiedenen Generierungen heruntergeladen werden, wenn das Original überschrieben wird.
Verwenden Sie in Ihrer Anfrage den Header
Range
, um einen Teil des Gesamtobjekts abzurufen, den Sie an den gewünschten lokalen Prozess senden können.Führen Sie weitere Anfragen für aufeinanderfolgende Teile des Objekts aus, bis das gesamte Objekt abgerufen wurde.
XML API
Folgen Sie der Anleitung zum Herunterladen eines Objekts unter Berücksichtigung folgender Überlegungen, um einen Streaming-Download durchzuführen:
Bevor Sie mit dem Download beginnen, rufen Sie die Metadaten des Objekts ab und speichern Sie die Generierungsnummer des Objekts. Fügen Sie diese Generierungsnummer in jede Anfrage ein, damit keine Daten von zwei verschiedenen Generierungen heruntergeladen werden, wenn das Original überschrieben wird.
Verwenden Sie in Ihrer Anfrage den Header
Range
, um einen Teil des Gesamtobjekts abzurufen, den Sie an den gewünschten lokalen Prozess senden können.Führen Sie weitere Anfragen für aufeinanderfolgende Teile des Objekts aus, bis das gesamte Objekt abgerufen wurde.
Nächste Schritte
- Weitere Informationen zur Dekomprimierenden Transcodierung
- Weitere Informationen zu Uploads und Downloads