Hochladen und Kopieren von Objekten mit mehrteiligen Uploads - Amazon Simple Storage Service

Willkommen im neuen Amazon-S3-Benutzerhandbuch! Das Amazon-S3-Benutzerhandbuch kombiniert Informationen und Anweisungen aus den drei eingestellten Handbüchern: Amazon-S3-Entwicklerhandbuch, Benutzerhandbuch der Amazon-S3-Konsole und Amazon S3 – Handbuch Erste Schritte.

Hochladen und Kopieren von Objekten mit mehrteiligen Uploads

Mit dem mehrteiligen Upload können Sie ein einzelnes Objekt als Satz aus mehreren Teilen hochladen. Jeder Teil ist ein zusammenhängender Teil der Daten des Objekts. Sie können diese Objektteile unabhängig und in beliebiger Reihenfolge hochladen. Wenn die Übertragung eines Teils fehlschlägt, können Sie das Teil erneut übertragen, ohne dass dies Auswirkungen auf andere Teile hat. Nachdem alle Teile Ihres Objekts hochgeladen sind, fügt Amazon S3 diese Teile zusammen und erstellt das Objekt. Wenn Ihre Objektgröße 100 MB erreicht, sollten Sie in der Regel mehrteilige Uploads verwenden, anstatt das Objekt in einem einzigen Vorgang hochzuladen.

Die Nutzung mehrteiliger Uploads bietet die folgenden Vorteile:

  • Verbesserter Durchsatz - Sie können die Teile parallel hochladen, um den Durchsatz zu erhöhen.

  • Schnelle Wiederherstellung bei Netzwerkproblemen - Die kleinere Teilegröße minimiert die Auswirkungen eines Neustarts eines fehlgeschlagenen Uploads aufgrund eines Netzwerkfehlers.

  • Anhalten und Fortsetzen von Objekt-Uploads - Sie können Objektteile über die Zeit hochladen. Nachdem Sie einen mehrteiligen Upload initiiert haben, gibt es kein Ablaufdatum. Sie müssen den mehrteiligen Upload ausdrücklich abschließen oder abbrechen.

  • Starten Sie einen Upload, bevor Sie die endgültige Objektgröße kennen. Sie können ein Objekt hochladen, während Sie es noch erstellen.

Sie sollten den mehrteiligen Upload wie folgt verwenden:

  • Wenn Sie große Objekte über ein stabiles Netzwerk mit hoher Bandbreite hochladen, können Sie einen mehrteiligen Upload verwenden, um die Nutzung der verfügbaren Bandbreite zu maximieren. Hierzu laden Sie Objektteile parallel hoch, um von einer Multi-Threading-Leistung zu profitieren.

  • Wenn Sie einen Upload über ein instabiles Netzwerk ausführen, können Sie einen mehrteiligen Upload verwenden, um die Resilienz in Bezug auf Netzwerkfehler durch Vermeidung von Neustarts der Uploads zu vermeiden. Wenn Sie mehrteilige Uploads verwenden, müssen Sie nur die Teile erneut hochladen, deren Upload unterbrochen wurde. Sie müssen nicht das gesamte Objekt von Anfang an neu hochladen.

Mehrteiliger Upload-Prozess

Der mehrteilige Upload ist ein Prozess in drei Schritten: Sie beginnen den Upload, laden die Teile des Objekts hoch und schließen den mehrteiligen Upload ab, wenn alle Teile hochgeladen wurden. Nach dem vollständigen Eingang der Daten aus dem mehrteiligen Upload erstellt Amazon S3 das Objekt anhand der hochgeladenen Teile. Dann können Sie auf das Objekt wie auf jedes andere Objekt in Ihrem Bucket zugreifen.

Sie können alle laufenden mehrteiligen Uploads auflisten oder eine Liste der Teile anfordern, die Sie für einen bestimmten Multipart-Upload hochgeladen haben. Alle Operationen werden in diesem Abschnitt erklärt.

Initiieren des mehrteiligen Uploads

Wenn Sie eine Anfrage zum Initiieren eines mehrteiligen Uploads senden, gibt Amazon S3 eine Antwort mit einer Upload-ID zurück, als eindeutige Kennung für den Multipart-Upload. Sie müssen diese Upload-ID immer angeben, wenn Sie Teile hochladen, die Teile auflisten, einen Upload abschließen oder einen Upload abbrechen. Wenn Sie Metadaten bereitstellen möchten, die das hochzuladende Objekt beschreiben, müssen sie in der Anforderung auf Initiierung des mehrteiligen Uploads angegeben werden.

Teile hochladen

Beim Hochladen eines Teils müssen Sie zusätzlich zur Upload-ID eine Teilenummer angeben. Sie können jede Teilenummer zwischen 1 und 10.000 wählen. Die Teilenummer identifiziert eindeutig einen Teil und seine Position im Objekt, das Sie hochladen. Die von Ihnen gewählte Teilenummer muss nicht fortlaufend sein (möglich sind z. B. 1, 5 und 14). Wenn Sie einen neuen Teil mit derselben Teilenummer hochladen wie bereits einmal zuvor, wird der früher hochgeladene Teil überschrieben.

Wenn Sie einen Teil hochladen, gibt Amazon S3 einen ETag-Header in der Antwort zurück. Für jeden Teilupload müssen Sie die Teilenummer und den ETag-Wert notieren. Sie müssen diese Werte in die spätere Anforderung einschließen, um den mehrteiligen Upload abzuschließen.

Anmerkung

Nachdem Sie einen mehrteiligen Upload gestartet und einen oder mehrere Teile hochgeladen haben, müssen Sie den mehrteiligen Upload abschließen oder abbrechen, damit keine Gebühren für die Speicherung der hochgeladenen Teile anfallen. Erst nach dem Abschluss oder Abbruch eines mehrteiligen Uploads gibt Amazon S3 den Speicher für die Teile frei und stoppt die Berechnung von Gebühren für die Speicherung der Teile.

Abschließen eines mehrteiligen Uploads

Wenn Sie einen mehrteiligen Upload abschließen, erstellt Amazon S3 ein Objekt, indem die Teile in aufsteigender Reihenfolge auf Grundlage der Teilenummer verkettet werden. Wenn Sie Metadaten für das Objekt bei der Initiierung des mehrteiligen Uploads bereitgestellt haben, verknüpft Amazon S3 die Metadaten mit dem Objekt. Nach einer erfolgreich ausgeführten Abschlussanforderung sind die Teile nicht mehr vorhanden.

Ihre Anfrage auf Abschluss des mehrteiligen Uploads muss die Upload-ID und eine Liste der Teilenummern mit den entsprechenden ETag-Werten enthalten. Die Amazon-S3-Antwort enthält einen ETag, der die kombinierten Objektdaten eindeutig identifiziert. Dieses ETag ist nicht unbedingt ein MD5-Hash der Objektdaten.

Sie können einen mehrteiligen Upload auch abbrechen. Wenn Sie einen mehrteiligen Upload abbrechen, können Sie mit dieser Upload-ID keine Teile mehr hochladen. Der gesamte Speicher für jeden Teil des abgebrochenen mehrteiligen Uploads wird freigegeben. Wenn der mehrteilige Upload abgebrochen wird, während Teile hochgeladen werden, können diese Uploads auch nach dem Abbruch erfolgreich abgeschlossen werden oder fehlschlagen. Um den von allen Teilen verbrauchten Speicherplatz freizugeben, dürfen Sie einen mehrteiligen Upload erst dann abbrechen, wenn alle Uploads abgeschlossen wurden.

Auflistungen mehrteiliger Uploads

Sie können alle Teile eines bestimmten Multipart-Uploads oder alle laufenden mehrteiligen Uploads auflisten. Die Operation für die Teileauflistung gibt die Teileinformationen zurück, die Sie für einen bestimmten mehrteiligen Upload hochgeladen haben. Für jeden Abruf einer Teileauflistung gibt Amazon S3 die Teileinformationen für einen angegebenen mehrteiligen Upload bis zu maximal 1.000 Teilen zurück. Wenn im Multipart-Upload mehr als 1.000 Teile vorhanden sind, müssen Sie eine Reihe von Anforderungen auf Teileauflistung senden, um alle Teile abzurufen. Beachten Sie, dass die zurückgegebene Teileauflistung keine Teile enthält, die noch nicht vollständig hochgeladen wurden. Bei Verwendung der Operation Mehrteilige Uploads auflisten können Sie eine Liste aller mehrteiligen Uploads in Bearbeitung erhalten.

Ein mehrteiliger Upload in Verarbeitung ist ein Upload, den Sie gestartet haben, der aber noch nicht abgeschlossen ist oder abgebrochen wurde. Jeder Anforderung gibt bis zu 1.000 mehrteilige Uploads zurück. Wenn mehr als 1.000 Multipart-Uploads vorhanden sind, müssen Sie zusätzliche Anforderungen senden, um die verbleibenden mehrteiligen Uploads abzurufen. Verwenden Sie die zurückgegebene Liste nur zur Überprüfung. Sie sollten das Ergebnis dieser Auflistung nicht verwenden, wenn Sie eine Anforderung für den Abschluss eines mehrteiligen Uploads senden. Halten Sie sich stattdessen an Ihre eigene Liste der Teilenummern, die Sie beim Hochladen von Teilen angegeben haben, und die diesbezüglichen ETag-Werte, die Amazon S3 zurückgegeben hat

Gleichzeitige mehrteilige Upload-Operationen

In einer verteilten Entwicklungsumgebung ist es für Ihre Anwendung möglich, mehrere Updates gleichzeitig für dasselbe Objekt zu initiieren. Ihre Anwendung kann möglicherweise mehrere Multipart-Uploads mit demselben Objektschlüssel initiieren. Für jeden dieser Uploads kann Ihre Anwendung Teile hochladen und eine Anfrage auf Abschluss des Uploads an Amazon S3 senden, um das Objekt zu erstellen. Wenn die Buckets die Versionierung aktiviert haben, wird beim Abschluss eines Multipart-Uploads immer eine neue Version erstellt. Bei Buckets, für die keine Versionierung aktiviert ist, kann es sein, dass zwischen den Zeitpunkten der Initiierung bis zum Abschluss eines Multipart-Uploads eine andere Anforderung vorrangig ist.

Anmerkung

Es ist möglich, dass eine andere Anforderung zwischen dem Zeitpunkt der Initiierung und jenem des Abschlusses eines Multipart-Uploads stattgefunden hat. Wenn zum Beispiel ein anderer Vorgang einen Schlüssel löscht, nachdem Sie einen mehrteiligen Upload mit diesem Schlüssel initiiert haben, aber bevor Sie ihn abschließen, kann die Antwort für den Abschluss des Multipart-Uploads möglicherweise eine erfolgreiche Objekterstellung anzeigen, ohne dass Sie das Objekt je zu Gesicht bekommen haben.

Mehrteiliger Upload und Preise

Nachdem Sie einen mehrteiligen Upload gestartet haben, behält Amazon S3 alle Teile bei, bis Sie den Upload abschließen oder abbrechen. Während seiner gesamten Lebensdauer werden Ihnen der gesamte Speicher, die Bandbreite und die Anforderungen für diesen mehrteiligen Upload und die zugehörigen Teile in Rechnung gestellt. Wenn Sie den mehrteiligen Upload abbrechen, löscht Amazon S3 Upload-Artefakte und alle Teile, die Sie hochgeladen haben. Die Berechnung wird eingestellt. Weitere Informationen zu Preisen finden Sie unter Amazon S3-Preise.

API-Unterstützung für mehrteilige Uploads

Diese Bibliotheken bieten eine hohe Abstraktion, wodurch der mehrteilige Upload von Objekten sehr einfach wird. Falls in Ihrer Anwendung erforderlich, können Sie die REST API jedoch auch direkt verwenden. In den folgenden Abschnitten der Amazon-Simple-Storage-Service-API-Referenz wird die REST API für mehrteilige Uploads beschrieben.

In den folgenden Abschnitten der AWS-Befehlszeilenschnittstelle werden die Vorgänge für mehrteilige Uploads beschrieben.

AWS-SDK-Unterstützung für mehrteilige Uploads

Sie können ein AWS SDKs verwenden, um ein Objekt in Teilen hochzuladen. Eine Liste der von API-Aktionen unterstützten AWS-SDKs finden Sie unter:

API für mehrteilige Uploads und Berechtigungen

Ein Benutzer muss über die erforderlichen Berechtigungen verfügen, um die Multipart-Upload-Vorgänge zu verwenden. Sie können Zugriffskontrolllisten (ACLs), die Bucket-Richtlinie oder die Benutzerrichtlinie verwenden, um Einzelberechtigungen für die Ausführung dieser Operationen zu erteilen. Die folgende Tabelle listet die erforderlichen Berechtigungen für verschiedene mehrteilige Uploadoperationen bei der Verwendung von ACLs, einer Bucket-Richtlinie oder einer Benutzerrichtlinie auf.

Action Erforderliche Berechtigungen

Multipart-Upload erstellen

Sie müssen die Aktion s3:PutObject für ein Objekt ausführen können, um einen Multipart-Upload zu erstellen.

Der Bucket-Eigentümer kann anderen Prinzipalen erlauben, die Aktion s3:PutObject auszuführen.

Multipart-Upload initiieren

Sie müssen die Aktion s3:PutObject für ein Objekt ausführen können, um einen Multipart-Upload zu initiieren.

Der Bucket-Eigentümer kann anderen Prinzipalen erlauben, die Aktion s3:PutObject auszuführen.

Initiator

Containerelement, das identifiziert, wer den Multipart-Upload initiiert hat. Wenn der Initiator ein AWS-Konto ist, gibt dieses Element die gleichen Informationen wie das Eigentümerelement zurück. Wenn der Initiator ein IAM-Benutzer ist, stellt dieses Element den Benutzer-ARN und den Anzeigenamen bereit.

Upload Part

Sie müssen die Aktion s3:PutObject für ein Objekt ausführen können, um einen Teil hochzuladen.

Der Bucket-Eigentümer muss dem Initiator erlauben, die Aktion s3:PutObject für ein Objekt auszuführen, damit der Initiator einen Teil für dieses Objekt hochladen kann.

Teil hochladen (kopieren)

Sie müssen die Aktion s3:PutObject für ein Objekt ausführen können, um einen Teil hochzuladen. Da Sie einen Teil eines vorhandenen Objekts hochladen, müssen Sie die Berechtigung s3:GetObject für das Quellobjekt besitzen.

Damit der Initiator einen Teil eines Objekts hochladen kann, muss der Bucket-Besitzer dem Initiator eine Genehmigung für die Ausführung der Aktion s3:PutObject für das Objekt erteilen.

Abschließen eines mehrteiligen Uploads

Sie müssen die Aktion s3:PutObject für ein Objekt ausführen können, um einen Multipart-Upload abzuschließen.

Der Bucket-Eigentümer muss dem Initiator erlauben, die Aktion s3:PutObject für ein Objekt auszuführen, damit der Initiator den mehrteiligen Upload für dieses Objekt abschließen kann.

Mehrteiligen Upload abbrechen

Sie müssen die Aktion s3:AbortMultipartUpload ausführen dürfen, um einen mehrteiligen Upload abzubrechen.

Standardmäßig können der Bucket-Eigentümer und der Initiator des Multipart-Uploads diese Aktion ausführen. Wenn der Initiator ein IAM-Benutzer ist, kann das AWS-Konto dieses Benutzers diesen mehrteiligen Upload ebenfalls abbrechen.

Zusätzlich zu diesen Standardberechtigungen, kann der Bucket-Eigentümer anderen Prinzipalen erlauben, die Aktion s3:AbortMultipartUpload auszuführen. Der Bucket-Eigentümer kann jedem Prinzipal verbieten, die Aktion s3:AbortMultipartUpload auszuführen.

Teile auflisten

Sie müssen die Aktion s3:ListMultipartUploadParts ausführen können, um Teileauflistungen in einem mehrteiligen Upload anzufragen.

Standardmäßig kann der Bucket-Eigentümer Teileauflistungen von Multipart-Uploads in seinem Bucket anfordern. Der Initiator des mehrteiligen Uploads hat die Berechtigung, Teileauflistungen des spezifischen Multipart-Uploads aufzulisten. Wenn der Initiator des mehrteiligen Uploads ein IAM-Benutzer ist, so hat das AWS-Konto dieses IAM-Benutzers ebenfalls die Berechtigung, Teileauflistungen dieses Uploads anzufragen.

Zusätzlich zu diesen Standardberechtigungen, kann der Bucket-Eigentümer anderen Prinzipalen erlauben, die Aktion s3:ListMultipartUploadParts auszuführen. Der Bucket-Eigentümer kann jedem Prinzipal auch verbieten, die Aktion s3:ListMultipartUploadParts auszuführen.

List Multipart Uploads

Sie müssen die Aktion s3:ListBucketMultipartUploads für einen Bucket ausführen können, um eine Multipart-Uploads-Auflistung für diesen Bucket anzufragen.

Zusätzlich zu diesen Standardberechtigungen, kann der Bucket-Eigentümer anderen Prinzipalen erlauben, die Aktion s3:ListBucketMultipartUploads für ein Bucket auszuführen.

Auf AWS KMS-Verschlüsselung und -Entschlüsselung bezogene Berechtigungen

Um einen mehrteiligen Upload mit Verschlüsselung über einen Kundenhauptschlüssel (Customer Master Key, CMK) eines AWS Key Management Service (AWS KMS) auszuführen, muss der Anforderer zu den Aktionen kms:Decrypt und kms:GenerateDataKey* für den Schlüssel berechtigt sein. Diese Berechtigungen sind erforderlich, da Amazon S3 Daten aus den verschlüsselten Teilen der Datei entschlüsseln und lesen muss, bevor es den Multipart-Upload vornehmen kann.

Weitere Informationen finden Sie unter Hochladen einer großen Datei auf Amazon S3 mit Verschlüsselung unter Verwendung eines AWS KMS-CMK im AWS-Wissenszentrum.

Wenn sich Ihr IAM-Benutzer oder Ihre IAM-Rolle in demselben AWS-Konto wie der AWS KMS-CMK befindet, dann benötigen Sie diese Berechtigungen für die Schlüsselrichtlinie. Wenn Ihr IAM-Benutzer oder Ihre Rolle zu einem anderen Konto als das CMK gehört, müssen Sie über die Berechtigungen sowohl für die Schlüsselrichtlinie als auch für Ihren IAM-Benutzer oder Ihre Rolle verfügen.

>

Weitere Informationen zur Beziehung zwischen ACL-Berechtigungen und Berechtigungen in Zugriffsrichtlinien finden Sie unter Zuordnung der ACL-Berechtigungen und Zugriffsrichtlinienberechtigungen. Weitere Informationen über IAM-Benutzer finden Sie unter Arbeiten mit IAM-Benutzern und Gruppen.