Hochladen von großen Archiven mithilfe der AWS CLI - Amazon S3 Glacier

Wenn Sie mit dem Archivierungsspeicher in Amazon Simple Storage Service (Amazon S3) noch nicht vertraut sind, empfehlen wir Ihnen, sich zunächst über die S3-Glacier-Speicherklassen in Amazon S3 (S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval und S3 Glacier Deep Archive) zu informieren. Weitere Informationen finden Sie unter S3 Glacier-Speicherklassen und Speicherklassen für die Archivierung von Objekten im Amazon S3 S3-Benutzerhandbuch.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Hochladen von großen Archiven mithilfe der AWS CLI

Sie können ein Archiv in Amazon S3 Glacier (S3 Glacier) über die AWS Command Line Interface (AWS CLI) hochladen. Um den Upload-Vorgang für größere Archive zu verbessern, bietet S3 Glacier mehrere API-Operationen zur Unterstützung mehrteiliger Uploads. Mithilfe dieser API-Operationen können Sie Archive in Teilen hochladen. Diese Teile können unabhängig voneinander in beliebiger Reihenfolge und parallel hochgeladen werden. Wenn der Upload eines Teils fehlschlägt, müssen Sie nur diesen Teil und nicht das gesamte Archiv erneut hochladen. Sie können mehrteilige Uploads für Archive mit einer Größe von 1 Byte bis zu ca. 40 000 Gibibytes (GiB) verwenden.

Weitere Informationen über mehrteilige Uploads in S3 Glacier finden Sie unter Hochladen von großen Archiven in Teilen (Multipart Upload).

(Voraussetzung) Einrichten der AWS CLI

  1. Herunterladen und Konfigurieren von AWS CLI. Eine Anleitung finden Sie unter den folgenden Themen im AWS Command Line Interface-Benutzerhandbuch:

    Installieren des AWS Command Line Interface

    Konfigurieren von AWS Command Line Interface

  2. Überprüfen Sie die AWS CLI-Einrichtung, indem Sie die folgenden Befehle in die Befehlszeile eingeben. Diese Befehle stellen nicht explizit Anmeldeinformationen bereit, daher werden die Anmeldeinformationen des Standardprofils verwendet.

    • Versuchen Sie, den Befehl help zu verwenden.

      aws help
    • Verwenden Sie den list-vaults-Befehl, um eine Liste der S3-Glacier-Tresore für das konfigurierte Konto abzurufen. Ersetzen Sie 123456789012 durch Ihre AWS-Konto-ID.

      aws glacier list-vaults --account-id 123456789012
    • Mit dem Befehl aws configure list können Sie die aktuellen Konfigurationsdaten für die AWS CLI abrufen.

      aws configure list

(Voraussetzung) Installieren von Python

Um einen mehrteiligen Upload abzuschließen, müssen Sie den SHA256-Struktur-Hash des Archivs berechnen, das Sie hochladen. Dies unterscheidet sich von der Berechnung des SHA256-Struktur-Hashs der Datei, die Sie hochladen möchten. Um den SHA256-Struktur-Hash des Archivs zu berechnen, das Sie hochladen, können Sie Java C# (mit. NET) oder Python verwenden. In diesem Beispiel verwenden Sie Python. Anweisungen zur Verwendung von Java oder C# finden Sie unter Berechnen von Prüfsummen.

Informationen über das Installieren von Python finden Sie unter Installieren von Python im Boto3-Benutzerhandbuch.

(Voraussetzung) Erstellen eines S3-Glacier-Tresors

Für die Verwendung des folgenden Beispiels muss mindestens ein S3-Glacier-Tresor erstellt worden sein. Weitere Informationen zum Erstellen von Tresoren finden Sie unter Erstellen eines Tresors in Amazon S3 Glacier.

Beispiel: Hochladen von großen Archiven in Teilen mithilfe der AWS CLI

In diesem Beispiel erstellen Sie eine Datei und verwenden API-Operationen für mehrteilige Uploads, um diese Datei in mehreren Teilen in Amazon S3 Glacier hochzuladen.

Wichtig

Bevor Sie mit diesem Verfahren beginnen, stellen Sie sicher, dass alle Voraussetzungen erfüllt sind. Zum Hochladen eines Archivs müssen Sie einen Tresor erstellt und die AWS CLI konfiguriert haben. Außerdem müssen Sie bereit sein, mit Java, C# oder Python einen SHA256-Struktur-Hash zu berechnen.

Im folgenden Verfahren werden die AWS CLI-Befehle initiate-multipart-upload, upload-multipart-part und complete-multipart-upload verwendet.

Ausführliche Informationen zu diesen Befehlen finden Sie unter initiate-multipart-upload, upload-multipart-part und complete-multipart-upload in der AWS CLI-Befehlsreferenz.

  1. Verwenden Sie den initiate-multipart-upload-Befehl, um eine Ressource für den mehrteiligen Upload zu erstellen. Geben Sie in der Anforderung die Größe der einzelnen Teile in Bytes an. Mit Ausnahme des letzten Teils muss jeder der hochzuladenden Teile diese Größe aufweisen. Sie müssen beim Initiieren eines mehrteiligen Uploads die Gesamtgröße des Archivs nicht kennen. Sie benötigen jedoch die Gesamtgröße jedes Teils in Byte, wenn Sie den Upload im letzten Schritt abschließen.

    Ersetzen Sie im folgenden Befehl die Werte für die Parameter --vault-name und --account-ID durch Ihre eigenen Informationen. Dieser Befehl gibt an, dass Sie ein Archiv mit einer Teilegröße von 1 Mebibyte (MiB) (1 024 x 1 024 Byte) pro Datei hochladen. Ersetzen Sie diesen --part-size-Parameterwert bei Bedarf.

    aws glacier initiate-multipart-upload --vault-name awsexamplevault --part-size 1048576 --account-id 123456789012

    Erwartete Ausgabe:

    { "location": "/123456789012/vaults/awsexamplevault/multipart-uploads/uploadId", "uploadId": "uploadId" }

    Nach Abschluss gibt der Befehl die Upload-ID und den Speicherort der Ressource für den mehrteiligen Upload in S3 Glacier aus. Sie verwenden diese Upload-ID in den nachfolgenden Schritten.

  2. In diesem Beispiel können Sie die folgenden Befehle verwenden, um eine Datei mit 4,4 MiB zu erstellen, sie in Blöcke von 1 MiB aufzuteilen und die einzelnen Blöcke hochzuladen. Um Ihre eigenen Dateien hochzuladen, können Sie die Daten mit diesem Verfahren in Blöcke aufteilen und die einzelnen Teile hochladen.

    Linux oder macOS

    Der folgende Befehl erstellt eine 4,4 MiB große Datei mit dem Namen file_to_upload unter Linux oder macOS.

    mkfile -n 9000b file_to_upload
    Windows

    Der folgende Befehl erstellt eine 4,4 MiB große Datei mit dem Namen file_to_upload unter Windows.

    fsutil file createnew file_to_upload 4608000
  3. Als Nächstes teilen Sie diese Datei in Blöcke von 1 MiB auf.

    split -b 1048576 file_to_upload chunk

    Sie haben nun die folgenden fünf Blöcke. Die ersten vier sind 1 MiB groß, der letzte ist ungefähr 400 Kibibyte (KiB) groß.

    chunkaa chunkab chunkac chunkad chunkae
  4. Verwenden Sie den upload-multipart-part-Befehl, um einen Teil eines Archivs hochzuladen. Sie können die Archivteile in beliebiger Reihenfolge hochladen. Sie können die Teile auch parallel hochladen. Sie können bis zu 10 000 Teile für einen mehrteiligen Upload hochladen.

    Ersetzen Sie im folgenden Befehl die Werte für die Parameter --vault-name, --account-ID und --upload-id. Die Upload-ID muss mit der ID übereinstimmen, die in der Ausgabe des initiate-multipart-upload-Befehls angegeben wurde. Der --range-Parameter gibt an, dass Sie einen Teil mit einer Größe von 1 MiB (1 024 x 1 024 Byte) hochladen. Diese Größe muss mit der Größe übereinstimmen, die Sie im initiate-multipart-upload-Befehl angegeben haben. Passen Sie diesen Größenwert bei Bedarf an. Der --body-Parameter gibt den Namen des Teils an, den Sie hochladen.

    aws glacier upload-multipart-part --body chunkaa --range='bytes 0-1048575/*' --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID

    Bei erfolgreicher Ausführung erzeugt der Befehl eine Ausgabe, die die Prüfsumme für den hochgeladenen Teil enthält.

  5. Führen Sie den upload-multipart-part-Befehl erneut aus, um die verbleibenden Teile Ihres mehrteiligen Uploads hochzuladen. Aktualisieren Sie die Parameterwerte für --range und –-body in jeden Befehl so, dass sie mit dem Teil übereinstimmen, den Sie hochladen.

    aws glacier upload-multipart-part --body chunkab --range='bytes 1048576-2097151/*' --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID
    aws glacier upload-multipart-part --body chunkac --range='bytes 2097152-3145727/*' --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID
    aws glacier upload-multipart-part --body chunkad --range='bytes 3145728-4194303/*' --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID
    aws glacier upload-multipart-part --body chunkae --range='bytes 4194304-4607999/*' --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID
    Anmerkung

    Der --range-Parameterwert des letzten Befehls ist kleiner, da der letzte Teil des Uploads kleiner als 1 MiB ist. Bei erfolgreicher Ausführung erzeugt jeder Befehl eine Ausgabe, die die Prüfsumme für den hochgeladenen Teil enthält.

  6. Als Nächstes stellen Sie das Archiv zusammen und schließen den Upload ab. Sie müssen die Gesamtgröße und den SHA256-Struktur-Hash des Archivs angeben.

    Zum Berechnen des SHA256-Struktur-Hashs für das Archiv, das Sie hochladen, können Sie Java, C# oder Python verwenden. In diesem Beispiel verwenden Sie Python. Anweisungen zur Verwendung von Java oder C# finden Sie unter Berechnen von Prüfsummen.

    Erstellen Sie die Python-Datei checksum.py und fügen Sie den folgenden Code ein. Falls erforderlich, ersetzen Sie den Namen der Originaldatei.

    from botocore.utils import calculate_tree_hash checksum = calculate_tree_hash(open('file_to_upload', 'rb')) print(checksum)
  7. Führen Sie checksum.py aus, um den SHA256-Struktur-Hash zu berechnen. Der folgende Hash stimmt möglicherweise nicht mit Ihrer Ausgabe überein.

    $ python3 checksum.py $ 3d760edb291bfc9d90d35809243de092aea4c47b308290ad12d084f69988ae0c
  8. Verwenden Sie den complete-multipart-upload-Befehl, um den Upload des Archivs abzuschließen. Ersetzen Sie die Werte für die Parameter --vault-name, --account-ID, --upload-ID und --checksum. Der --archive-Parameterwert gibt die Gesamtgröße des Archivs in Byte an. Dieser Wert muss die Summe aller Größen der einzelnen Teile sein, die Sie hochgeladen haben. Ersetzen Sie diesen Wert bei Bedarf.

    aws glacier complete-multipart-upload --archive-size 4608000 --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID --checksum checksum

    Nach Abschluss gibt der Befehl die ID, die Prüfsumme und den Speicherort des Archivs in S3 Glacier aus.