Wie verwende ich die AWS CLI, um eine große Datei in mehreren Teilen auf Amazon S3 hochzuladen?
Ich möchte eine große Datei als mehrere Teile in einen Amazon Simple Storage Service (Amazon S3)-Bucket kopieren oder einen mehrteiligen Upload verwenden. Ich möchte die AWS Command Line Interface (AWS CLI) verwenden, um die Datei hochzuladen.
Kurzbeschreibung
Verwende die AWS-CLI, die entweder hochrangige aws s3-Befehle oder aws s3api-Befehle auf niedriger Ebene enthält, um große Dateien auf Amazon S3 hochzuladen. Weitere Informationen zu diesen beiden Befehlsebenen findest du unter Amazon S3 mit der AWS-CLI verwenden.
Wichtig: Es hat sich bewährt, aws s3-Befehle wie aws s3 cp für mehrteilige Uploads und Downloads zu verwenden. Dies liegt daran, dass aws s3-Befehle automatisch mehrteilige Uploads und Downloads basierend auf der Dateigröße durchführen. Verwende aws s3api-Befehle wie aws s3api create-multipart-upload nur, wenn aws s3-Befehle einen bestimmten Upload nicht unterstützen. Der mehrteilige Upload umfasst beispielsweise mehrere Server oder du beendest einen mehrteiligen Upload manuell und setzen ihn später fort. Oder der Befehl aws s3 unterstützt keinen erforderlichen Anforderungsparameter.
Lösung
**Anmerkung:**Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehler erhältst, findest du weitere Informationen unter Beheben von AWS-CLI-Fehlern. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.
Bevor du die Datei hochlädst, berechne den Wert „MD5-Prüfsumme“ der Datei als Referenz für Integritätsprüfungen nach dem Upload.
aws s3-Befehle verwenden
Um einen allgemeinen aws s3-Befehl für den mehrteiligen Upload zu verwenden, führe den folgenden cp-Befehl aus:
aws s3 cp large_test_file s3://DOC-EXAMPLE-BUCKET/
Hinweis: Ersetze DOC-EXAMPLE-BUCKET durch deinen Bucket-Namen.
Das vorherige Beispiel verwendet den Befehl aws s3 cp, um automatisch einen mehrteiligen Upload durchzuführen, wenn das Objekt groß ist. Du kannst auch andere aws s3-Befehle verwenden, um Objekte in einen S3-Bucket hochzuladen. Verwende beispielsweise aws s3 sync oder aws s3 mv.
Objekte, die du als mehrere Teile in Amazon S3 hochlädst, haben ein anderes ETag-Format als Objekte, die du mit einer PUT-Anfrage hochlädst. Um den Wert MD5-Prüfsumme der Quelldatei als Referenz zu speichern, lade die Datei mit dem Wert Prüfsumme als benutzerdefinierte Metadaten hoch. Um den Wert MD5-Prüfsumme als benutzerdefinierte Metadaten hinzuzufügen, füge den optionalen Parameter --metadata in den Upload-Befehl ein, wie im folgenden Beispiel:
aws s3 cp large_test_file s3://DOC-EXAMPLE-BUCKET/ --metadata md5="examplemd5value1234"
Hinweis: Ersetze large_test_file durch den Namen deiner hochzuladenden Datei, DOC-EXAMPLE-BUCKET durch deinen Bucket-Namen und examplemd5value1234 durch deinen MD5-Wert.
Um mehr Bandbreite und Ressourcen des Hosts zu nutzen, erhöhe die maximale Anzahl gleichzeitiger Anfragen, die in der AWS-CLI-S3-Konfiguration festgelegt sind. Standardmäßig verwendet die AWS CLI maximal 10 gleichzeitige Anfragen. Führe den folgenden configure-Befehl aus, um die maximale Anzahl gleichzeitiger Anfragen auf 20 festzulegen:
aws configure set default.s3.max_concurrent_requests 20
aws s3api-Befehle verwenden
-
Teile die Datei, die du hochladen möchtest, in mehrere Teile auf.
Tipp: Wenn du ein Linux-Betriebssystem verwendest, verwende den Befehl split. -
Führe den folgenden create-multipart-upload-Befehl aus, um einen mehrteiligen Upload zu initiieren und die zugehörige Upload-ID abzurufen:
aws s3api create-multipart-upload --bucket DOC-EXAMPLE-BUCKET --key large_test_fileHinweis: Ersetze DOC-EXAMPLE-BUCKET durch deinen Bucket-Namen und large_test_file durch den Namen deiner hochzuladenden Datei.
Der Befehl gibt eine Antwort zurück, die die UploadID enthält.
-
Kopiere den Wert UploadID als Referenz für spätere Schritte.
-
Um den ersten Teil der Datei hochzuladen, führe den folgenden upload-part-Befehl aus:
aws s3api upload-part --bucket DOC-EXAMPLE-BUCKET --key large_test_file --part-number 1 --body large_test_file.001 --upload-id exampleTUVGeKAk3Ob7qMynRKqe3ROcavPRwg92eA6JPD4ybIGRxJx9R0VbgkrnOVphZFK59KCYJAO1PXlrBSW7vcH7ANHZwTTf0ovqe6XPYHwsSp7eTRnXB1qjx40Tk --content-md5 exampleaAmjr+4sRXUwf0w==Hinweis: Ersetze DOC-EXAMPLE-BUCKET durch deinen Bucket-Namen und large_test_file durch den Namen deiner hochzuladenden Datei. Ersetze den Wert „upload-id“ durch den Wert aus der Ausgabe deines Befehls „create-multipart-upload“.
Der Befehl gibt eine Antwort zurück, die einen ETag-Wert für den Teil der Datei enthält, den du hochgeladen hast.
-
Kopiere den Wert ETag als Referenz für spätere Schritte.
-
Wiederhole die Schritte 4 und 5 für jeden Teil der Datei. Stelle sicher, dass du die Artikelnummer für jedes neue Teil, das du hochlädst, erhöhst.
-
Nachdem du alle Dateibestandteile hochgeladen hast, führe den folgenden list-parts-Befehl aus, um die hochgeladenen Teile aufzulisten und zu bestätigen, dass die Liste vollständig ist:
aws s3api list-parts --bucket DOC-EXAMPLE-BUCKET --key large_test_file --upload-id exampleTUVGeKAk3Ob7qMynRKqe3ROcavPRwg92eA6JPD4ybIGRxJx9R0VbgkrnOVphZFK59KCYJAO1PXlrBSW7vcH7ANHZwTTf0ovqe6XPYHwsSp7eTRnXB1qjx40TkHinweis: Ersetze DOC-EXAMPLE-BUCKET durch deinen Bucket-Namen und large_test_file durch den Namen deiner hochzuladenden Datei. Ersetze den Wert „upload-id“ durch den Wert aus der Ausgabe deines Befehls „create-multipart-upload“.
-
Kompiliere die ETag-Werte für jeden Dateiteil, den du in eine Datei im JSON-Format hochgeladen hast.
Beispiel für eine JSON-Datei:{ "Parts": [{ "ETag": "example8be9a0268ebfb8b115d4c1fd3", "PartNumber":1 }, .... { "ETag": "example246e31ab807da6f62802c1ae8", "PartNumber":4 }] } -
Nenne die Datei fileparts.json.
-
Führe den folgenden complete-multipart-upload-Befehl aus, um den mehrteiligen Upload abzuschließen:
aws s3api complete-multipart-upload --multipart-upload file://fileparts.json --bucket DOC-EXAMPLE-BUCKET --key large_test_file --upload-id exampleTUVGeKAk3Ob7qMynRKqe3ROcavPRwg92eA6JPD4ybIGRxJx9R0VbgkrnOVphZFK59KCYJAO1PXlrBSW7vcH7ANHZwTTf0ovqe6XPYHwsSp7eTRnXB1qjx40Tk
Hinweis: Ersetze den Wert für --multipart-upload durch den Pfad zu der Datei im JSON-Format, die die von dir erstellten ETags enthält. Ersetze DOC-EXAMPLE-BUCKET durch deinen Bucket-Namen und large_test_file durch den Namen deiner hochzuladenden Datei. Ersetze den Wert „upload-id“ durch den Wert aus der Ausgabe deines Befehls „list-multipart-uploads“.
- Wenn der vorherige Befehl erfolgreich ist, erhältst du eine Antwort ähnlich der folgenden:
{ "ETag": "\\"exampleae01633ff0af167d925cad279-2\\"", "Bucket": "DOC-EXAMPLE-BUCKET", "Location": "https://DOC-EXAMPLE-BUCKET.s3.amazonaws.com/large_test_file", "Key": "large_test_file" }
Upload-Fehler beheben
Wenn du die hochrangigen aws s3-Befehle für einen mehrteiligen Upload verwendest und der Upload fehlschlägt, musst du einen neuen mehrteiligen Upload starten. Fehler beim mehrteiligen Upload treten entweder aufgrund eines Timeouts oder eines manuellen Abbruchs auf. In den meisten Fällen bricht die AWS-CLI den mehrteiligen Upload automatisch ab und entfernt dann alle mehrteiligen Dateien, die du erstellt hast. Dieser Vorgang kann mehrere Minuten dauern. Wenn du aws s3api-Befehle verwendest und der Vorgang unterbrochen wird, entferne unvollständige Teile des Uploads und lade die Teile dann erneut hoch.
Verwende die Lebenszyklusaktion „AbortIncompleteMultipartUpload“, um die unvollständigen Teile zu entfernen. Oder verwende aws s3api-Befehle, um die unvollständigen Teile zu entfernen.
-
Führe den folgenden list-multipart-uploads-Befehl aus, um unvollständige mehrteilige Datei-Uploads aufzulisten:
aws s3api list-multipart-uploads --bucket DOC-EXAMPLE-BUCKETHinweis: Ersetze DOC-EXAMPLE-BUCKET durch deinen Bucket-Namen.
-
Der Befehl gibt eine Meldung mit allen Dateibestandteilen zurück, die nicht verarbeitet wurden, wie im folgenden Beispiel:
{ "Uploads": [ { "Initiator": { "DisplayName": "multipartmessage", "ID": "290xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " }, "Initiated": "2016-03-31T06:13:15.000Z", "UploadId": "examplevQpHp7eHc_J5s9U.kzM3GAHeOJh1P8wVTmRqEVojwiwu3wPX6fWYzADNtOHklJI6W6Q9NJUYgjePKCVpbl_rDP6mGIr2AQJNKB_A-", "StorageClass": "STANDARD", "Key": "", "Owner": { "DisplayName": "multipartmessage", "ID": "290xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " } } ] } -
Führe den folgenden abort-multipart-upload-Befehl aus, um die unvollständigen Teile zu entfernen:
aws s3api abort-multipart-upload --bucket DOC-EXAMPLE-BUCKET --key large_test_file --upload-id examplevQpHp7eHc_J5s9U.kzM3GAHeOJh1P8wVTmRqEVojwiwu3wPX6fWYzADNtOHklJI6W6Q9NJUYgjePKCVpbl_rDP6mGIr2AQJNKBHinweis: Ersetze DOC-EXAMPLE-BUCKET durch deinen Bucket-Namen und large_test_file durch den Namen deiner hochzuladenden Datei. Ersetze den Wert upload-id durch den Wert aus der Ausgabe deines Befehls „list-multipart-uploads“.
Ähnliche Informationen
Objekte mithilfe des mehrteiligen Uploads in Amazon S3 hochladen und kopieren
- Themen
- Storage
- Sprache
- Deutsch
Ähnliche Videos

