Cloud Storage unterstützt das Streaming von Daten in einen Bucket, ohne dass die Daten zuerst in einer Datei gespeichert werden müssen. Dies ist hilfreich, wenn Sie Daten hochladen möchten, aber die endgültige Größe zu Beginn des Uploads nicht kennen, z. B. wenn Sie die Upload-Daten aus einem Prozess heraus generieren oder wenn Sie ein Objekt direkt komprimieren.
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.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen eine der folgenden Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Streamen von Uploads benötigen:
Bitten Sie bei Uploads mit einer Objektaufbewahrungssperre Ihren Administrator, Ihnen die IAM-Rolle Storage-Objekt-Administrator (
roles/storage.objectAdmin
) für den Bucket zuzuweisen.In allen anderen Fällen bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Storage-Objekt-Nutzer (
roles/storage.objectUser
) für den Bucket zuzuweisen.
Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Streamen von Uploads in Cloud Storage erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
storage.objects.create
storage.objects.delete
- Diese Berechtigung ist nur für Uploads erforderlich, die ein vorhandenes Objekt überschreiben.
storage.objects.list
- Diese Berechtigung ist nur erforderlich, um mit der Google Cloud CLI die Anleitungen auf dieser Seite auszuführen.
storage.objects.setRetention
- Diese Berechtigung ist nur für Uploads erforderlich, die eine Objektaufbewahrungssperre enthalten.
Sie können diese Berechtigungen auch mit anderen vordefinierten Rollen oder benutzerdefinierten Rollen erhalten.
Informationen zum Zuweisen von Rollen für Buckets finden Sie unter IAM mit Buckets verwenden.
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
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
Dabei gilt:
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
Clientbibliotheken
C++
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage C++ API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
C#
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage C# API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Go
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Go API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Java
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Java API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Node.js
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Node.js API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
PHP
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage PHP API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Python
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Python API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Ruby
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Ruby API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
REST APIs
JSON 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.
Ein Einzelanfrage-Upload mit den folgenden Anpassungen:
Fügen Sie eine
Transfer-Encoding: chunked
-Überschrift ein und schließen Sie dieContent-Length
-Überschrift aus.Erstelle die Anfrage gemäß der Spezifikation und sende die Objektdaten in Chunks, sobald sie verfügbar sind.
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.
Ein Einzelanfrage-Upload mit den folgenden Anpassungen:
Fügen Sie eine
Transfer-Encoding: chunked
-Überschrift ein und schließen Sie dieContent-Length
-Überschrift aus.Erstelle die Anfrage gemäß der Spezifikation und sende die Objektdaten in Chunks, sobald sie verfügbar sind.
Hinweis: Mit dieser Methode kannst du keinen Streaming-Upload ausführen, wenn die Anfrage im
Authorization
-Header eine Signatur verwendet.
Nächste Schritte
- Download streamen
- Weitere Informationen zur dekomprimierenden Transcodierung
- Weitere Informationen zu Uploads und Downloads