での Amazon S3 Glacier の使用 AWS CLI - AWS Command Line Interface

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

での Amazon S3 Glacier の使用 AWS CLI

Amazon S3 Glacier のご紹介

このトピックでは、S3 Glacier の一般的なタスクを実行する AWS CLI コマンドの例を示します。この例では、 AWS CLI を使用して大きなファイルを S3 Glacier にアップロードする方法を、より小さな部分に分割し、コマンドラインからアップロードする方法を示しています。

AWS Command Line Interface () を使用して Amazon S3 Glacier の機能にアクセスできますAWS CLI。S3 Glacier の AWS CLI コマンドを一覧表示するには、次のコマンドを使用します。

aws glacier help
注記

コマンドリファレンスおよびその他の例については、AWS CLI リファレンスガイドの aws glacier を参照してください。

前提条件

glacier コマンドを実行するには、次のことが必要です。

  • AWS CLIをインストールして設定します。詳細については、「の最新バージョンへのインストールまたは更新 AWS CLI」および「の認証認証情報とアクセス認証情報 AWS CLI」を参照してください。

  • このチュートリアルでは、Linux や macOS など、Unix 互換オペレーティングシステムに通常プリインストールされている、いくつかのコマンドラインツールを使用します。Windows ユーザーは、Cygwin をインストールし、Cygwin ターミナルからコマンドを実行することで、同じツールを使用できます。同じ機能を実行する Windows のネイティブコマンドとユーティリティはそのように注記されています。

Amazon S3 Glacier ボールトを作成します

create-vault コマンドを使用してボールトを作成します。

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

すべての S3 Glacier コマンドにはアカウント ID パラメータが必要です。現在のアカウントを使用するには、ハイフン文字を使用します (--account-id -)。

ファイルのアップロードの準備

テストアップロード用のファイルを作成します。次のコマンドは、 という名前のファイルを作成します。largefile には、3 MiB のランダムデータのみが含まれます。

Linux または 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 は、多数のバイトを入力ファイルから出力ファイルにコピーするユーティリティです。前の例では、ランダムデータのソースとしてシステムデバイスファイル /dev/urandom を使用します。fsutil は Windows で同様の関数を実行します。

Windows

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

次に、ファイルスプリッターを使用してファイルを 1 MiB (1,048,576 バイト) チャンクに分割します。

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

マルチパートアップロードの開始とファイルのアップロード

initiate-multipart-upload コマンドを使用して、Amazon S3 Glacier でマルチパートアップロードを作成します。

$ 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 では、マルチパートアップロードを設定するために各パートのサイズ (バイト) (この例では 1 MiB)、ボールト名、アカウント ID が必要です。は、オペレーションが完了するとアップロード ID を AWS CLI 出力します。後で使用できるように、アップロード ID をシェル変数に保存します。

Linux または macOS

$ UPLOADID="19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ"

Windows

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

次に、upload-multipart-part コマンドを使用して 3 つのパートをそれぞれアップロードします。

$ 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" }
注記

前の例では、ドル記号 ($) を使用して Linux の UPLOADID シェル変数の内容を参照しています。Windows コマンドラインでは、変数名の両側にパーセント記号 (%) を使用します (例:%UPLOADID%)。

S3 Glacier によって正しい順序で再構成されるように、アップロード時には各パートのバイト範囲を指定する必要があります。各部分は 1,048,576 バイトであるため、1 番目の部分は 0-1048575、2 番目は 1048576-2097151、3 番目は 2097152-3145727 に配置されます。

アップロードの完了

Amazon S3 Glacier では、アップロードされたすべてのピースが AWS インタクトに達したことを確認するために、元のファイルのツリーハッシュが必要です。

ツリーハッシュを計算するには、ファイルを 1 つの MiB 部分に分割し、各ピースのバイナリ SHA-256 ハッシュを計算する必要があります。次に、ハッシュのリストをペアに分割し、各ペアの 2 つのバイナリハッシュを結合して、結果のハッシュを取得します。ハッシュが 1 つだけになるまでこのプロセスを繰り返します。レベルのいずれかに奇数のハッシュがある場合は、変更せずに次のレベルに昇格させます。

コマンドラインユーティリティを使用して木構造ハッシュを正しく計算するために重要なことは、各ハッシュをバイナリ形式で保存し、最後のステップでのみ 16 進数に変換することです。木構造で 16 進数バージョンのハッシュを結合またはハッシュすると、正しい結果を得ることができません。

注記

Windows ユーザーは、type の代わりに cat コマンドを使用できます。OpenSSL は、Windows at Open SSL.org で使用できます。

木構造ハッシュを計算するには
  1. 元のファイルを分割していない場合は、1 MiB のパーツに分割します。

    $ split --bytes=1048576 --verbose largefile chunk creating file `chunkaa' creating file `chunkab' creating file `chunkac'
  2. 各チャンクのバイナリ SHA-256 ハッシュを計算して保存します。

    $ openssl dgst -sha256 -binary chunkaa > hash1 $ openssl dgst -sha256 -binary chunkab > hash2 $ openssl dgst -sha256 -binary chunkac > hash3
  3. 最初の 2 つのハッシュ結合を実行し、結果のバイナリハッシュを取得します。

    $ cat hash1 hash2 > hash12 $ openssl dgst -sha256 -binary hash12 > hash12hash
  4. チャンク aa および ab の親ハッシュをチャンク ac のハッシュと結合して結果をハッシュします。今回は 16 進数で出力します。シェル変数に結果を保存します。

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

最後に、complete-multipart-upload コマンドを使用してアップロードを完了します。このコマンドは、元のファイルのサイズ (バイト単位)、最終的な 16 進数の木構造ハッシュ値、およびアカウント ID とボールト名を使用します。

$ 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" }

describe-vault コマンドを使用して、ボールトのステータスを確認することもできます。

$ 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" }
注記

ボールトのステータスは約 1 日 1 回更新されます。詳細については、「Glacier のボールトに関する各種操作」を参照してください。

これで、作成したチャンクおよびハッシュファイルを安全に削除できます。

$ rm chunk* hash*

マルチパートアップロードの詳細については、Amazon S3 Glacier デベロッパーガイドの「 パート単位での大きなアーカイブのアップロード」および「チェックサムの計算」を参照してください。

リソース

AWS CLI リファレンス:

サービスリファレンス: