Mit Google Cloud Storage (GCS) lassen sich unstrukturierte Daten zu sehr geringen Kosten verwalten. Anwendungen können die GCS-APIs einbinden oder eine direkte GCS-URL teilen, um Dateien hoch- oder herunterzuladen. GCS unterstützt außerdem den Upload in mehreren Teilen bzw. Chunks per Resumable Upload.

Ausfallsichere Uploads zu Google Cloud Storage
Der Vorteil eines Resumable Uploads gegenüber einem Single Upload: Anwendungen werden gegenüber schwankender Netzwerkverfügbarkeit robust. Sie laden Datenteile hoch, sobald das Netzwerk verfügbar ist, und pausieren, wenn die Verbindung plötzlich abbricht. Das senkt zugleich die Bandbreitenkosten, da große Datei-Uploads nicht von vorn beginnen müssen.
Ein Beispiel: Werden Fotos oder Dokumente aus einer mobilen App ausschließlich über WLAN auf den Server hochgeladen, kann die App den Upload automatisch pausieren, sobald das Gerät auf Mobilfunk wechselt, und ihn fortsetzen, sobald wieder WLAN verfügbar ist.
GCS-Buckets stellen für API-Aufrufe eine Endpoint-URL nach folgendem Muster bereit:

In jeder Software gilt: Implementierungsdetails und eingesetzte Tools sollten gegenüber den Endnutzern verborgen bleiben. Dasselbe Prinzip gilt für GCS-Buckets in unserer Anwendung – wir empfehlen daher, GCS-Buckets über eine Custom-URL bereitzustellen.
Für den Zugriff auf GCS-Buckets über Custom-URLs wie https://mydrive.
Backend Bucket mit einem GCS-Bucket verbinden
- Melden Sie sich in der GCP-Konsole an und wählen Sie in der linken Navigationsleiste Network Services -> Load Balancing.

2. Klicken Sie auf "Create Load Balancer".

3. Wählen Sie "HTTP(S) Load Balancing" und klicken Sie auf "Start Configuration".

4. Wählen Sie "From Internet to my VMs", da Internet-Clients mit dem Bucket interagieren.

5. Vergeben Sie einen Namen für den Load Balancer und wählen Sie unter Backend configuration die Option Backend buckets.

6. Vergeben Sie einen Namen für den Backend Bucket und wählen Sie einen Cloud-Storage-Bucket, der an diesen Backend-Service angebunden werden soll. In meinem Fall ist der GCS-Bucket öffentlich zugänglich, um den Aufwand für das Abrufen und Übergeben eines Authorization-Tokens in den API-Aufrufen zu reduzieren.

7. Sobald der Backend Bucket erfolgreich angelegt wurde, erscheint er in der Liste der Backend Buckets.

8. Die Frontend configuration verbindet die statische IP-Adresse mit dem Load Balancer, damit unsere Services mit dem GCS-Bucket interagieren können.

9. Konfiguration prüfen und abschließen.

10. Der Backend-Bucket-Service sollte nun erfolgreich angelegt sein – wie unten dargestellt.

Sobald Backend-Bucket-Service und Load Balancer über eine statische IP-Adresse verbunden sind, lassen sich GCS-APIs über die eigene IP-Adresse ausführen (oder URL, sofern die IP-Adresse mit einem Domainnamen verknüpft ist).
Liste der Objekte in einem Bucket abrufen
Führen Sie folgenden curl-Befehl aus:

Zurückgelieferter Response Body:

Ein einzelnes Objekt in einen Bucket hochladen
curl-Befehl, um "map.png" als "worldmap_001.png" in den GCS-Bucket hochzuladen.

Rufen Sie die Objektliste ab und prüfen Sie, ob "worldmap_001.png" im GCS-Bucket vorhanden ist.
Datei in mehreren Teilen über eine Resumable URL hochladen
Teilen Sie die 312806 Byte große Datei "map.png" in zwei Teile auf – jeweils in Vielfachen von 256 Kilobyte. Die Resumable-URL-API von Google Cloud Storage verlangt, dass jeder hochgeladene Teil ein Vielfaches von 256 KB sein muss – mit Ausnahme des letzten Teils.

- Rufen Sie die API "uploadType=resumable" in POSTMAN oder einem anderen REST-API-Client auf, um die Location-URL abzurufen.

2. Übernehmen Sie die Location-URL aus der Antwort, um darüber die einzelnen Teile hochzuladen.

3. Laden Sie den ersten Teil "xaa" mit dem POSTMAN-Client in den Bucket hoch. Achten Sie darauf, dass der Header "Content-Range" auf den Bereich von 0 bis ("Content-Length" - 1) gesetzt ist.

4. Der Upload-Aufruf liefert den HTTP-Statuscode "308 Resume Incomplete" zurück.

5. Laden Sie den zweiten Teil (letzten Teil) "xab" in den Bucket hoch.

6. Nach dem Upload des letzten Teils kommt der HTTP-Statuscode "200 OK" zurück.

7. Prüfen Sie im Bucket, ob die Datei (map.png) hochgeladen wurde.
