Verwendung von Amazon S3 Glacier in der AWS CLI - AWS Command Line Interface

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.

Verwendung von Amazon S3 Glacier in der AWS CLI

Einführung in Amazon S3 Glacier

Dieses Thema zeigt Beispiele für AWS CLI Befehle, die allgemeine Aufgaben für S3 Glacier ausführen. Die Beispiele zeigen, wie Sie mithilfe von eine große Datei AWS CLI auf S3 Glacier hochladen können, indem Sie sie in kleinere Teile aufteilen und diese über die Befehlszeile hochladen.

Mit dem AWS Command Line Interface (AWS CLI) können Sie auf die Funktionen von Amazon S3 Glacier zugreifen. Verwenden Sie den folgenden Befehl, um die AWS CLI Befehle für S3 Glacier aufzulisten.

aws glacier help
Anmerkung

Weitere Befehlsreferenzen und -beispiele finden Sie unter aws glacier in der AWS CLI -Befehlsreferenz..

Voraussetzungen

Zur Ausführung von glacier-Befehlen ist Folgendes erforderlich:

  • Installieren und Konfigurieren der AWS CLI. Weitere Informationen erhalten Sie unter Installation oder Aktualisierung auf die neueste Version von AWS CLI und Authentifizierungs- und Zugangsdaten für AWS CLI.

  • Dieses Tutorial verwendet mehrere Befehlszeilentools, die normalerweise auf Unix-ähnlichen Betriebssystemen vorinstalliert sind, einschließlich Linux und macOS. Windows-Benutzer können die gleichen Tools verwenden, indem Sie Cygwin installieren und die Befehle vom Cygwin-Terminal ausführen. Wir geben systemeigene Windows-Befehle und -Hilfsprogramme an, die die gleichen Funktionen ausführen, sofern verfügbar.

Erstellen eines Amazon-S3-Glacier-Tresors

Erstellen Sie einen Tresor mit dem Befehl create-vault.

$ aws glacier create-vault --account-id - --vault-name myvault { "location": "/123456789012/vaults/myvault" }
Anmerkung

Alle S3-Glacier-Befehle erfordern einen Konto-ID-Parameter. Verwenden Sie den Bindestrich (--account-id -), um das aktuelle Konto zu verwenden.

Vorbereiten einer Datei zum Hochladen

Erstellen Sie eine Datei für einen Probe-Upload. Mit den folgenden Befehlen wird eine Datei mit dem Namen erstellt largefile das enthält genau 3 MiB an Zufallsdaten.

Linux oder macOS

$ dd if=/dev/urandom of=largefile bs=3145728 count=1 1+0 records in 1+0 records out 3145728 bytes (3.1 MB) copied, 0.205813 s, 15.3 MB/s

dd ist ein Hilfsprogramm, das eine Anzahl von Bytes aus einer Eingabedatei in eine Ausgabedatei kopiert. Im vorigen Beispiel wird die Systemgerätedatei /dev/urandom als Quelle für Zufallsdaten verwendet. fsutil führt eine ähnliche Funktion in Windows aus.

Windows

C:\> fsutil file createnew largefile 3145728 File C:\temp\largefile is created

Teilen Sie als Nächstes die Datei mithilfe eines Dateisplitters in Blöcke mit 1 MiB (1.048.576 Byte) auf.

$ split -b 1048576 --verbose largefile chunk creating file `chunkaa' creating file `chunkab' creating file `chunkac'

Starten eines mehrteiligen Uploads und Hochladen der Dateien

Erstellen Sie in Amazon S3 Glacier einen mehrteiligen Upload, indem Sie den Befehl initiate-multipart-upload verwenden.

$ aws glacier initiate-multipart-upload --account-id - --archive-description "multipart upload test" --part-size 1048576 --vault-name myvault { "uploadId": "19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ", "location": "/123456789012/vaults/myvault/multipart-uploads/19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ" }

S3 Glacier benötigt die Größe jedes Teils in Byte (in diesem Beispiel 1 MiB), Ihren Tresornamen und die Konto-ID, um den mehrteiligen Upload zu konfigurieren. Der AWS CLI gibt eine Upload-ID aus, wenn der Vorgang abgeschlossen ist. Speichern Sie diesen Upload-ID zur späteren Verwendung in einer Shell-Variablen.

Linux oder macOS

$ UPLOADID="19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ"

Windows

C:\> set UPLOADID="19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ"

Verwenden Sie als Nächstes den Befehl upload-multipart-part, um die drei Teile hochzuladen.

$ aws glacier upload-multipart-part --upload-id $UPLOADID --body chunkaa --range 'bytes 0-1048575/*' --account-id - --vault-name myvault { "checksum": "e1f2a7cd6e047fa606fe2f0280350f69b9f8cfa602097a9a026360a7edc1f553" } $ aws glacier upload-multipart-part --upload-id $UPLOADID --body chunkab --range 'bytes 1048576-2097151/*' --account-id - --vault-name myvault { "checksum": "e1f2a7cd6e047fa606fe2f0280350f69b9f8cfa602097a9a026360a7edc1f553" } $ aws glacier upload-multipart-part --upload-id $UPLOADID --body chunkac --range 'bytes 2097152-3145727/*' --account-id - --vault-name myvault { "checksum": "e1f2a7cd6e047fa606fe2f0280350f69b9f8cfa602097a9a026360a7edc1f553" }
Anmerkung

Im vorigen Beispiel wird das Dollarzeichen ($) verwendet, um die Inhalte der UPLOADID Shell-Variablen unter Linux zu referenzieren. Verwenden Sie in der Windows-Befehlszeile ein Prozentzeichen (%) auf beiden Seiten des Variablennamens (z. B, %UPLOADID%).

Sie müssen den Byte-Bereich für jeden einzelnen Teil angeben, wenn Sie diese hochladen, damit S3 Glacier die Teile in der richtigen Reihenfolge wieder zusammensetzen kann. Jeder Teil hat 1 048 576 Bytes. Der erste Teil belegt somit Byte 0-1048575, der zweite 1048576-2097151 und der dritte 2097152-3145727.

Abschließen des Uploads

Amazon S3 Glacier benötigt einen Tree-Hash der Originaldatei, um zu bestätigen, dass alle hochgeladenen Teile AWS unversehrt erreicht wurden.

Um einen Tree-Hash zu berechnen, müssen Sie die Datei in 1 MiB-Teile aufteilen und für jedes Stück einen binären SHA -256-Hash berechnen. Dann teilen Sie die Liste der Hashes in Paare auf. Sie kombinieren die beiden binären Hashes in jedem Paar und ermitteln die Hashes der Ergebnisse. Wiederholen Sie diesen Prozess, bis nur ein Hash übrig ist. Wenn es auf einer beliebigen Ebene eine ungerade Anzahl von Hashes gibt, verschieben Sie diese auf die nächste Ebene, ohne sie zu bearbeiten.

Das Wichtigste bei der korrekten Berechnung von einem Struktur-Hash unter Verwendung von Befehlszeilen-Hilfsprogrammen ist, den jeweiligen Hash im Binärformat zu speichern und erst im letzten Schritt in einen Hexadezimalwert zu konvertieren. Wenn Sie eine Hexadezimalversion von einem beliebigen Hash in der Struktur kombinieren oder hashen, erhalten Sie ein falsches Ergebnis.

Anmerkung

Windows-Benutzer können den Befehl type anstelle von cat verwenden. Open SSL ist für Windows unter SSLOpen.org verfügbar.

So berechnen Sie einen Struktur-Hash:
  1. Falls noch nicht geschehen, teilen Sie die Originaldatei in 1-MiB-Teile auf.

    $ split --bytes=1048576 --verbose largefile chunk creating file `chunkaa' creating file `chunkab' creating file `chunkac'
  2. Berechnet und speichert den binären SHA -256-Hash jedes Chunks.

    $ openssl dgst -sha256 -binary chunkaa > hash1 $ openssl dgst -sha256 -binary chunkab > hash2 $ openssl dgst -sha256 -binary chunkac > hash3
  3. Kombinieren Sie die ersten beiden Hashes und ermitteln Sie den binären Hash des Ergebnisses.

    $ cat hash1 hash2 > hash12 $ openssl dgst -sha256 -binary hash12 > hash12hash
  4. Kombinieren Sie den übergeordnete Hash der Blöcke aa und ab mit dem Hash ac und hashen Sie das Ergebnis, dieses Mal mit einer hexadezimalen Ausgabe. Speichern Sie das Ergebnis in einer Shell-Variablen.

    $ cat hash12hash hash3 > hash123 $ openssl dgst -sha256 hash123 SHA256(hash123)= 9628195fcdbcbbe76cdde932d4646fa7de5f219fb39823836d81f0cc0e18aa67 $ TREEHASH=9628195fcdbcbbe76cdde932d4646fa7de5f219fb39823836d81f0cc0e18aa67

Schließen Sie den Upload mit dem Befehl complete-multipart-upload ab. Dieser Befehl akzeptiert die Größe der ursprünglichen Datei in Bytes, den endgültigen Hash-Wert in Hexadezimalformat und Ihre Konto-ID sowie den Tresornamen.

$ aws glacier complete-multipart-upload --checksum $TREEHASH --archive-size 3145728 --upload-id $UPLOADID --account-id - --vault-name myvault { "archiveId": "d3AbWhE0YE1m6f_fI1jPG82F8xzbMEEZmrAlLGAAONJAzo5QdP-N83MKqd96Unspoa5H5lItWX-sK8-QS0ZhwsyGiu9-R-kwWUyS1dSBlmgPPWkEbeFfqDSav053rU7FvVLHfRc6hg", "checksum": "9628195fcdbcbbe76cdde932d4646fa7de5f219fb39823836d81f0cc0e18aa67", "location": "/123456789012/vaults/myvault/archives/d3AbWhE0YE1m6f_fI1jPG82F8xzbMEEZmrAlLGAAONJAzo5QdP-N83MKqd96Unspoa5H5lItWX-sK8-QS0ZhwsyGiu9-R-kwWUyS1dSBlmgPPWkEbeFfqDSav053rU7FvVLHfRc6hg" }

Sie können auch den Status des Tresors mithilfe des Befehls describe-vault überprüfen.

$ aws glacier describe-vault --account-id - --vault-name myvault { "SizeInBytes": 3178496, "VaultARN": "arn:aws:glacier:us-west-2:123456789012:vaults/myvault", "LastInventoryDate": "2018-12-07T00:26:19.028Z", "NumberOfArchives": 1, "CreationDate": "2018-12-06T21:23:45.708Z", "VaultName": "myvault" }
Anmerkung

Der Tresor-Status wird etwa einmal pro Tag aktualisiert. Weitere Informationen finden Sie unter Arbeiten mit Tresoren.

Sie können jetzt die von Ihnen erstellten Chunk- und Hash-Dateien entfernen.

$ rm chunk* hash*

Weitere Informationen über mehrteilige Uploads finden Sie unter Hochladen großer Archive in Teilen und Berechnen von Prüfsummen im Amazon-S3-Glacier-Entwicklerhandbuch.

Ressourcen

AWS CLI Referenz:

Service-Referenz: