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..
Themen
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=11+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
3145728File 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
chunkcreating 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-namemyvault
{ "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-namemyvault
{ "checksum": "e1f2a7cd6e047fa606fe2f0280350f69b9f8cfa602097a9a026360a7edc1f553" }
$
aws glacier upload-multipart-part --upload-id $UPLOADID --body
chunkab
--range 'bytes 1048576-2097151/*' --account-id - --vault-namemyvault
{ "checksum": "e1f2a7cd6e047fa606fe2f0280350f69b9f8cfa602097a9a026360a7edc1f553" }
$
aws glacier upload-multipart-part --upload-id $UPLOADID --body
chunkac
--range 'bytes 2097152-3145727/*' --account-id - --vault-namemyvault
{ "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
So berechnen Sie einen Struktur-Hash:
-
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'
-
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
-
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
-
Kombinieren Sie den übergeordnete Hash der Blöcke
aa
undab
mit dem Hashac
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:
-
Hochladen von großen Archiven in Teilen im Entwicklerhandbuch für Amazon S3 Glacier
-
Berechnen von Prüfsummen im Entwicklerhandbuch für Amazon S3 Glacier
-
Arbeiten mit Tresoren im Entwicklerhandbuch für Amazon S3 Glacier