Uploads und Downloads

Auf dieser Seite werden Konzepte im Zusammenhang mit dem Hoch- und Herunterladen von Objekten erläutert. Sie können jeden MIME-Datentyp mit einer Größe von maximal 5 TB hochladen und speichern.

Uploads

Zum Senden von Uploadanfragen an Cloud Storage haben Sie folgende Möglichkeiten:

  • Einzelanfrageupload Verwenden Sie diese Methode, wenn die Datei klein genug ist, um sie vollständig hochzuladen, falls die Verbindung fehlschlägt.

    • Die JSON API unterscheidet zwischen Medienuploads, bei denen nur Objektdaten in der Anfrage enthalten sind, und mehrteiligen JSON API-Uploads, bei denen Objektdaten und Objektmetadaten in die Anfrage aufgenommen sind.
  • Fortsetzbarer Upload: Verwenden Sie diese Option, wenn die Übertragung zuverlässiger sein soll, was bei großen Dateien besonders wichtig ist. Fortsetzbare Uploads sind für die meisten Anwendungen eine gute Wahl, da sie zum Preis von nur einer zusätzlichen HTTP-Anfrage pro Upload auch für kleinere Dateien verwendet werden können. Sie können auch fortsetzbare Uploads verwenden, um Streaming-Übertragungen durchzuführen, sodass Sie ein Objekt unbekannter Größe hochladen können.

  • Mehrteiliger XML API-Upload. Eine Uploadmethode, die mit mehrteiligen Amazon-S3-Uploads kompatibel ist. Die Dateien werden in Teilen hochgeladen und mit der letzten Anfrage zu einem einzelnen Objekt zusammengestellt. Mit mehrteiligen XML-API-Uploads können Sie die Teile parallel hochladen und dadurch die Zeit für den Gesamtupload reduzieren.

Diese grundlegenden Arten von Uploads ermöglichen erweiterte Uploadstrategien, zum Beispiel parallele zusammengesetzte Uploads und Streaming-Uploads.

Überlegungen zur Uploadgröße

Wenn Sie auswählen, ob Sie einen Einzelanfrage-Upload anstelle eines fortsetzbaren Uploads oder eines mehrteiligen XML-API-Uploads verwenden möchten, berücksichtigen Sie die Zeit, die verloren gehen könnte, wenn Sie bei einem Netzwerkausfall das Gerät neu starten und den Upload von vorn beginnen müssen. Bei schnelleren Verbindungen kann Ihre Obergrenze für Dateien in der Regel höher sein.

Beispiel: Sie sind bereit, einen Zeitverlust von 30 Sekunden zu tolerieren:

  • Wenn Sie von einem lokalen System mit einer durchschnittlichen Uploadgeschwindigkeit von 8 Mbit/s hochladen, können Sie Einzelanfrage-Uploads für Dateien mit einer Größe von bis zu 30 MB verwenden.

  • Wenn der Upload von einem Dienst erfolgt, der sich innerhalb der Region befindet und eine durchschnittliche Uploadgeschwindigkeit von 500 Mbit/s hat, beträgt die Obergrenze für Dateien fast 2 GB.

Parallele zusammengesetzte Uploads

Eine Strategie zum Hochladen großer Dateien wird als parallele zusammengesetzte Uploads bezeichnet. Bei einem solchen Upload wird eine Datei in bis zu 32 Blöcke aufgeteilt. Die Blöcke werden parallel zu temporären Objekten hochgeladen, das endgültige Objekt wird mithilfe der temporären Objekte neu erstellt und die temporären Objekte werden gelöscht.

Parallele zusammengesetzte Uploads können erheblich schneller sein, wenn Netzwerk- und Laufwerksgeschwindigkeit keine einschränkenden Faktoren darstellen. Das letzte in Ihrem Bucket gespeicherte Objekt ist jedoch ein zusammengesetztes Objekt, das nur einen crc32c-Hash und keinen MD5-Hash hat. Deshalb müssen Sie zum Ausführen von Integritätsprüfungen crcmod verwenden, wenn Sie das Objekt mit gsutil oder anderen Python-Anwendungen herunterladen. Sie sollten parallele zusammengesetzte Uploads nur ausführen, wenn Folgendes zutrifft:

  • Jeder Python-Nutzer, der Ihre Objekte herunterladen muss, hat entweder google-crc32c oder crcmod installiert.

  • Jeder gsutil-Nutzer, der Ihre Objekte herunterladen muss, hat crcmod installiert.

    Wenn Sie beispielsweise gsutil verwenden, um Video-Assets hochzuladen, die nur von einer Java-Anwendung bereitgestellt werden, sind parallele zusammengesetzte Uploads eine gute Wahl, da in Java effiziente CRC32C-Implementierungen verfügbar sind.

  • Die hochgeladenen Objekte müssen keinen MD5-Hash haben.

Unterstützung von gsutil

Sie können konfigurieren, wie und wann gsutil parallele zusammengesetzte Uploads ausführt, die standardmäßig deaktiviert sind. Ändern Sie dazu die folgenden beiden Parameter:

  • parallel_composite_upload_threshold: Die minimale Gesamtgröße der Datei für einen parallelen zusammengesetzten Upload. Sie können alle parallelen zusammengesetzten Uploads in gsutil deaktivieren, indem Sie diesen Wert auf 0 setzen.

  • parallel_composite_upload_component_size: Die maximale Größe für jedes temporäre Objekt. Der Parameter wird ignoriert, wenn die Datei insgesamt so groß ist, dass mehr als 32 Blöcke dieser Größe erforderlich wären.

Sie können beide Parameter entweder einzeln pro Befehl ändern, indem Sie die Option -o level verwenden, oder für alle gsutil-Befehle, indem Sie die .boto-Konfigurationsdatei bearbeiten.

Wenn Sie mit gsutil parallele zusammengesetzte Uploads ausführen möchten, benötigen Sie keinen zusätzlichen lokalen Speicherplatz. Wenn ein paralleler zusammengesetzter Upload vor der Zusammensetzung fehlschlägt, führen Sie den gsutil-Befehl noch einmal aus, um den fehlgeschlagenen Upload der temporären Objekte fortzusetzen. Alle temporären Objekte, die vor dem Fehler erfolgreich hochgeladen wurden, werden beim Fortsetzen des Uploads nicht noch einmal hochgeladen.

Temporäre Objekte werden so benannt:

RANDOM_ID/gsutil/tmp/parallel_composite_uploads/for_details_see/gsutil_help_cp/HASH

Dabei ist RANDOM_ID ein numerischer Wert und HASH ein MD5-Hash (steht nicht in Verbindung mit dem Hash der Inhalte der Datei oder des Objekts).

Im Allgemeinen werden temporäre Objekte am Ende eines parallelen zusammengesetzten Uploads gelöscht. Damit keine doppelten temporären Objekte zurückbleiben, sollten Sie über den gsutil-Befehl den Exit-Status prüfen und alle temporären Objekte, die Teil eines abgebrochenen Uploads waren, manuell löschen.

Unterstützung von JSON und XML

Sowohl die JSON API als auch die XML API unterstützen das parallele Hochladen von Objektblöcken und das Zusammenführen in einem einzelnen Objekt mit dem compose-Vorgang.

Beachten Sie beim Entwickeln von Code für parallele zusammengesetzte Uploads Folgendes:

  • Wenn Sie den compose-Vorgang verwenden, sind die Quellobjekte vom Zusammensetzungsprozess nicht betroffen.

    Wenn sie also temporär sein sollen, müssen Sie sie explizit löschen, nachdem die Zusammensetzung erfolgreich abgeschlossen wurde. Andernfalls verbleiben die Quellobjekte in Ihrem Bucket und werden entsprechend in Rechnung gestellt.

  • Um zu verhindern, dass Quellobjekte in der Zeit zwischen dem Hochladen und der Anfrage zur Zusammensetzung geändert werden, sollten allen Quellobjekten plausible Generierungsnummern‌ zugewiesen werden.

Downloads

Zum Senden von Downloadanfragen an Cloud Storage haben Sie folgende Möglichkeiten:

  • Einfacher Download: lädt Objekte an ein Ziel herunter.

  • Streaming-Download: lädt Daten an einen Prozess herunter.

  • Segmentierter Objektdownload: lädt große Objekte herunter.

  • Authentifizierte Browserdownloads: Herunterladen aus dem Browser mithilfe eines Google-Kontos.

Unterstützung für Upload und Download pro Tool

Klicken Sie auf die folgenden Tabs, um die unterstützten Vorgänge für jedes Tool aufzurufen:

Anfrageendpunkte

Wenn Sie REST APIs für den Upload und Download verwenden, finden Sie unter Anfrageendpunkte ausführliche Informationen zu den Anfrageendpunkten, die Sie verwenden können.

Nächste Schritte