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

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 mit der 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 Vorgänge 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 entity tag (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.

Wenn Sie einen mehrteiligen Upload abbrechen, können Sie mit dieser Upload-ID keine Teile mehr hochladen. Wenn der mehrteilige Upload abgebrochen wird, während Teile hochgeladen werden, können diese Uploads auch nach dem Abbruch des Uploads erfolgreich abgeschlossen werden oder fehlschlagen. Um sicherzustellen, dass der von allen Teilen verbrauchte Speicherplatz freigegeben wird, dürfen Sie einen mehrteiligen Upload erst dann abbrechen, wenn alle Uploads abgeschlossen wurden.

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.

Beispielaufrufe mehrteiliger Uploads

Für dieses Beispiel nehmen wir an, dass Sie einen mehrteiligen Upload für eine 100-GB-Datei generieren. In diesem Fall hätten Sie die folgenden API-Aufrufe für den gesamten Prozess. Es würde insgesamt 1 002 API-Aufrufe geben.

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 erhalten, die sich in Bearbeitung befinden.

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 mehrteilige 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. Verwenden Sie das Ergebnis dieser Auflistung nicht, 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.

Prüfsummen mit mehrteiligen Upload-Operationen

Wenn Sie ein Objekt auf Amazon S3 hochladen, können Sie einen Prüfsummenalgorithmus angeben, den Amazon S3 verwenden soll. Amazon S3 verwendet standardmäßig MD5, um die Datenintegrität zu überprüfen. Sie können jedoch einen zusätzlichen Prüfsummenalgorithmus angeben, der verwendet werden soll. Bei Verwendung von MD5 berechnet Amazon S3 die Prüfsumme des gesamten mehrteiligen Objekts nach Abschluss des Uploads. Diese Prüfsumme ist keine Prüfsumme des gesamten Objekts, sondern eine Prüfsumme der Prüfsummen für jeden einzelnen Teil.

Wenn Sie Amazon S3 anweisen, zusätzliche Prüfsummen zu verwenden, berechnet Amazon S3 den Prüfsummenwert für jeden Teil und speichert die Werte. Sie können die API oder das SDK verwenden, um den Prüfsummenwert für einzelne Teile abzurufen, indem Sie GetObject oder HeadObject verwenden. Wenn Sie die Prüfsummenwerte für einzelne Teile von mehrteiligen Uploads abrufen möchten, die noch in Bearbeitung sind, können Sie ListParts verwenden.

Wichtig

Wenn Sie einen mehrteiligen Upload mit zusätzlichen Prüfsummen verwenden, müssen die mehrteiligen Teilenummern aufeinander folgende Teilenummern sein. Wenn Sie zusätzliche Prüfsummen verwenden und versuchen, eine mehrteilige Upload-Anforderung mit nicht aufeinanderfolgenden Teilenummern abzuschließen, generiert Amazon S3 einen HTTP-Fehler 500 Internal Server Error.

Weitere Informationen zur Funktionsweise von Prüfsummen mit mehrteiligen Objekten finden Sie unterÜberprüfung der Objektintegrität.

Gleichzeitige mehrteilige Upload-Vorgänge

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 S3-Versioning aktiviert haben, wird beim Abschluss eines mehrteiligen Uploads immer eine neue Version erstellt. Bei Buckets, für die keine Versioning 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 z. B. 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.

AWS Command Line Interface-Unterstützung für mehrteilige Uploads

Die folgenden Abschnitte im AWS Command Line Interface beschreiben die Vorgänge für mehrteilige Uploads.

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

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

API für mehrteilige Uploads und Berechtigungen

Sie müssen ü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 Vorgänge zu erteilen. Die folgende Tabelle listet die erforderlichen Berechtigungen für verschiedene mehrteilige UploadVorgänge 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.

Initiieren eines mehrteiligen Uploads

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 Besitzer-Element 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 mehrteiligen Uploads diese Aktion als Teil von IAM- und Bucket-Richtlinien ausführen. Wenn der Initiator ein IAM-Benutzer ist, kann das AWS-Konto dieses Benutzers diesen mehrteiligen Upload ebenfalls abbrechen. Bei VPC-Endpunktrichtlinien erhält der Initiator des mehrteiligen Uploads nicht automatisch die Berechtigung zum Ausführen der s3:AbortMultipartUpload-Aktion

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.

AWS KMS Berechtigungen für die Verschlüsselung und -Entschlüsselung

Um einen mehrteiligen Upload mit Verschlüsselung über einen AWS Key Management Service (AWS KMS)-KMS-Schlüssel 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 Uploading a large file to Amazon S3 with encryption using an AWS KMS key CMK (Hochladen einer großen Datei zu Amazon S3 mit Verschlüsselung über einen KMS-CMK) im AWS-Wissenscenter.

Wenn sich Ihr IAM-Benutzer oder Ihre Rolle im selben AWS-Konto wie der KMS-Schlüssel befindet, dann müssen Sie diese Berechtigungen für die Schlüsselrichtlinie haben. Wenn Ihr IAM-Benutzer oder Ihre Rolle zu einem anderen Konto als der KMS-Schlüssel 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 Mapping der ACL-Berechtigungen und Zugriffsrichtlinienberechtigungen. Weitere Informationen über IAM-Benutzer finden Sie unter Arbeiten mit IAM-Benutzern und Gruppen.