AWS CLI を使用して大きなアーカイブをアップロードする - Amazon Glacier

このページは、ボールトと 2012 年リリース当時の REST API を使用する、Amazon Glacier サービスの既存のお客様のみを対象としています。

アーカイブストレージソリューションをお探しの場合は、Amazon S3 の Amazon Glacier ストレージクラス (S3 Glacier Instant Retrieval、S3 Glacier Flexible Retrieval、S3 Glacier Deep Archive) を使用することをお勧めします。これらのストレージオプションの詳細については、「Amazon Glacier ストレージクラス」を参照してください。

Amazon Glacier (元のスタンドアロンボールトベースのサービス) は、新規顧客を受け入れなくなりました。Amazon Glacier は、ボールトにデータを保存する独自の API を備えたスタンドアロンサービスであり、Amazon S3 および Amazon S3 Glacier ストレージクラスとは異なります。既存のデータは Amazon Glacier で無期限に安全性が確保され、引き続きアクセス可能です。移行は必要ありません。低コストの長期アーカイブストレージの場合、 は Amazon S3 Glacier ストレージクラス AWS を推奨します。これにより、S3 バケットベースの APIs、低コスト、 AWS サービス統合で優れたカスタマーエクスペリエンスを実現できます。 AWS リージョン 拡張機能が必要な場合は、Amazon Glacier ボールトから Amazon S3 Glacier ストレージクラスにデータを転送するためのAWS ソリューションガイダンスを使用して、Amazon S3 Glacier ストレージクラスへの移行を検討してください。

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

AWS CLI を使用して大きなアーカイブをアップロードする

AWS Command Line Interface (AWS CLI) を使用して、Amazon Glacier (Amazon Glacier) でアーカイブをアップロードできます。大きなアーカイブのアップロードエクスペリエンスを向上させるために、Amazon Glacier にはマルチパートアップロードをサポートするいくつかの API オペレーションが用意されています。これらの API オペレーションを使用すると、アーカイブを分割してアップロードできます。パートは、任意の順序で独立かつ並列にアップロードされます。パートのアップロードが失敗した場合、アーカイブ全体ではなく、失敗したパートのみを再度アップロードするだけで済みます。マルチパートアップロードは、1 バイトから約 40,000 ギビバイト (GiB) までのサイズのアーカイブに対して使用できます。

Amazon Glacier マルチパートアップロードの詳細については、「パート単位での大きなアーカイブのアップロード (マルチパートアップロード)」を参照してください。

(前提条件) AWS CLI の設定

  1. AWS CLI をダウンロードして設定します。手順については、「AWS Command Line Interface ユーザーガイド」の次のトピックを参照してください。

    のインストールAWS Command Line Interface

    の設定AWS Command Line Interface

  2. コマンドプロンプトで以下のコマンドを入力して、AWS CLI の設定を確認します。これらのコマンドは、いずれも認証情報を明示的に提供しないため、デフォルトプロファイルの認証情報が使用されます。

    • help コマンドを使用してください。

      aws help
    • 設定したアカウントの Amazon Glacier ボールトのリストを取得するには、list-vaults コマンドを使用します。123456789012 を自分の AWS アカウント ID に置き換えます。

      aws glacier list-vaults --account-id 123456789012
    • AWS CLI の現在の設定データを確認するには、aws configure list コマンドを使用します。

      aws configure list

(前提条件) Python のインストール

マルチパートアップロードを完了するには、アップロードするアーカイブの SHA256 木構造ハッシュを計算する必要があります。これは、アップロードするファイルの SHA256 木構造ハッシュを計算することとは異なります。アップロードするアーカイブの SHA256 木構造ハッシュを計算するには、Java、C# (.NET を使用)、または Python を使用できます。この例では、Python を使用します。Java または C# を使用する手順については、「チェックサムの計算」を参照してください。

Python のインストールの詳細については、「Boto3 デベロッパーガイド」の「Python のインストールまたは更新」を参照してください。

(前提条件) Amazon Glacier ボールトの作成

次の例を使用するには、Amazon Glacier ボールを少なくとも 1 つ作成しておく必要があります。ボールトの作成方法の詳細については、「Amazon Glacier でボールトを作成する」を参照してください。

例: AWS CLI を使用してパート単位で大きなアーカイブをアップロードする

この例では、ファイルを作成し、マルチパートアップロード API オペレーションを使用してそのファイルをパート単位で Amazon Glacier にアップロードします。

重要

この手順を開始する前に、前提条件となる手順をすべて実行しておくようにしてください。アーカイブをアップロードするには、ボールトを作成して AWS CLI を設定し、Java、C#、または Python を使用して SHA256 木構造ハッシュを計算できるように準備しておく必要があります。

以下の手順では initiate-multipart-uploadupload-multipart-partcomplete-multipart-upload AWS CLI コマンドを使用します。

これらのコマンドそれぞれの詳細については、「AWS CLI コマンドリファレンス」の「initiate-multipart-upload」、「upload-multipart-part」、「complete-multipart-upload」を参照してください。

  1. initiate-multipart-upload コマンドを使用して、マルチパートアップロードリソースを作成します。リクエストで、パートサイズをバイト数で指定します。アップロードする各パートは、最後のパートを除き、すべてこのサイズになります。アップロードを開始する際にアーカイブ全体のサイズを把握している必要はありません。ただし、最後の手順でアップロードを完了するときには、各パートの合計サイズ (バイト単位) が必要になります。

    次のコマンドで、--vault-name パラメータと --account-ID パラメータの値を独自の情報に置き換えます。このコマンドは、ファイルごとに 1 メビバイト (MiB) (1024 x 1024 バイト) のパートサイズのアーカイブをアップロードするよう指定します。必要に応じてこの --part-size パラメータ値を置き換えます。

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

    正常な出力:

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

    終了すると、コマンドはマルチパートアップロードリソースのアップロード ID と Amazon Glacier 内の場所を出力します。後の手順で、このアップロード ID を使用します。

  2. この例では、次のコマンドを使用して 4.4 MiB のファイルを作成し、1 MiB のチャンクに分割して、各チャンクをアップロードできます。独自のファイルをアップロードするには、データをチャンクに分割し、各パートをアップロードする、同様の手順に従います。

    Linux または macOS

    次のコマンドは、Linux または macOS 上に file_to_upload という名前の 4.4 MiB ファイルを作成します。

    mkfile -n 9000b file_to_upload
    Windows

    次のコマンドは、Windows 上に file_to_upload という名前の 4.4 MiB ファイルを作成します。

    fsutil file createnew file_to_upload 4608000
  3. 次に、このファイルを 1 MiB のチャンクに分割します。

    split -b 1048576 file_to_upload chunk

    これで、次の 5 つのチャンクができます。最初の 4 つは 1 MiB で、最後の 1 つは約 400 キビバイト (KiB) です。

    chunkaa chunkab chunkac chunkad chunkae
  4. upload-multipart-part コマンドを使用して、アーカイブの一部をアップロードします。アーカイブのパートは任意の順序でアップロードできます。パートを並行してアップロードすることもできます。マルチパートアップロードでは、最大 10,000 パートをアップロードできます。

    次のコマンドで、--vault-name--account-ID--upload-id のパラメータの値を置き換えます。アップロード ID は、initiate-multipart-upload コマンドの出力として指定された ID と一致する必要があります。--range パラメータは、サイズが 1 MiB (1024 x 1024 バイト) のパートをアップロードするよう指定します。このサイズは、initiate-multipart-upload コマンドで指定したサイズと一致する必要があります。必要に応じてこのサイズ値を調整します。--body パラメーターは、アップロードするパートの名前を指定します。

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

    正常にアップロードできると、コマンドはアップロードされたパートのチェックサムを含む出力を生成します。

  5. upload-multipart-part コマンドをもう一度実行して、マルチパートアップロードの残りのパートをアップロードします。アップロードするパートと一致するように、各コマンドの --range パラメータと –-body パラメータの値を更新します。

    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
    注記

    アップロードの最後のパートが 1 MiB 未満なので、最後のコマンドの --range パラメータ値は小さくなります。正常にアップロードできると、それぞれのコマンドはアップロードされた各パートのチェックサムを含む出力を生成します。

  6. 次に、アーカイブを組み立てて、アップロードを終了します。アーカイブの合計サイズと SHA256 木構造ハッシュを含める必要があります。

    アーカイブの SHA256 木構造ハッシュを計算するには、Java、C#、または Python を使用できます。この例では、Python を使用します。Java または C# を使用する手順については、「チェックサムの計算」を参照してください。

    Python ファイル checksum.py を作成し、次のコードを挿入します。必要に応じて、元のファイルの名前を置き換えます。

    from botocore.utils import calculate_tree_hash checksum = calculate_tree_hash(open('file_to_upload', 'rb')) print(checksum)
  7. checksum.py を実行して SHA256 木構造ハッシュを計算します。次のハッシュは出力と一致しないことがあります。

    $ python3 checksum.py $ 3d760edb291bfc9d90d35809243de092aea4c47b308290ad12d084f69988ae0c
  8. complete-multipart-upload コマンドを使用してアーカイブのアップロードを終了します。--vault-name--account-ID--upload-ID--checksum のパラメータの値を置き換えます。--archive パラメータ値は、アーカイブの合計サイズをバイト単位で指定します。この値には、アップロードした個々のパートのすべてのサイズの合計値を指定する必要があります。必要に応じてこの値を置き換えます。

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

    終了すると、コマンドはアーカイブの ID、チェックサム、Amazon Glacier 内の場所を出力します。