オブジェクト・ストレージのマルチパート・アップロードAPIの使用

APIを使用してバケットのマルチパート・アップロードを実行する方法について学習します。

APIを使用して実行されるマルチパート・アップロードは、次のステップで構成されます:

  1. オブジェクト・パートの作成

  2. アップロードを開始しています

  3. オブジェクト・パートのアップロード

  4. アップロードのコミット(または取消)

マルチパート・アップロードAPIを使用する前に、アップロードするパートを作成する必要があります。オブジェクト・ストレージは、残りのステップのAPI操作を提供します。また、サービスでは、進行中のマルチパート・アップロードのリスト表示、進行中のマルチパート・アップロードのオブジェクト・パートのリスト表示、およびAPIを介して起動された進行中のマルチパート・アップロードの終了を行うAPI操作も提供します。ここでは、APIのステップの概要を示しますが、サポートされているAPIコールの詳細は、APIリファレンスを参照してください。

オブジェクト・パートの作成

マルチパート・アップロードでは、アップロードするオブジェクトを個々のパートに分割します。個々のパートは、50 GiB程度の大きさにすることができます。各パートに使用するパート番号を決定します。パート番号は1から10,000の範囲です。連続した番号を割り当てる必要はありませんが、Object Storageは、パート番号を昇順に並べることでオブジェクトを構築します。

アップロードの開始

オブジェクト・パートの作成が完了したら、CreateMultipartUpload REST APIコールを実行してマルチパート・アップロードを開始します。オブジェクト名および任意のオブジェクト・メタデータを指定します。オブジェクト・ストレージは、このマルチパート・アップロードに関連するすべてのリクエストに含める必要がある一意のアップロードIDで応答します。また、オブジェクト・ストレージは、アップロードをアクティブとしてマークします。アップロードは、明示的にコミットするか中断するまでアクティブなままです。

オブジェクト・パートのアップロード

オブジェクト・パートのアップロードごとにUploadPartリクエストを実行します。リクエスト・パラメータで、オブジェクト・ストレージ・ネームスペース、バケット名、アップロードIDおよびパート番号を指定します。リクエスト本文にオブジェクト・パートを含めます。オブジェクト・パートは、並行して、任意の順序でアップロードできます。アップロードをコミットすると、オブジェクト・ストレージでは、パート番号を使用してオブジェクト・パートを順序付けします。パート番号は連続している必要はありません。同じアップロードIDとパート番号を使用して複数のオブジェクトのパートがアップロードされた場合、CommitMultipartUpload操作によって、最後にアップロードされたパートがコミットされます。署名リクエストの要件は、オブジェクト・ストレージPUTの特別な手順を参照してください

オブジェクト・ストレージは、アップロードされた各パートに対してETag (エンティティ・タグ)値を返します。アップロードをコミットする際は、各パートのパート番号と対応するETag値の両方が必要です。

ネットワークの問題がある場合は、個々のパートに対して失敗したアップロードを再開できます。アップロード全体を再開する必要はありません。何らかの理由でアップロードを同時に実行できない場合は、マルチパート・アップロードを使用すると、自分のペースでパートのアップロードを続行できます。マルチパート・アップロードはアクティブなままですが、合計数が10,000未満であれば、パートを追加し続けることができます。

アップロードされたすべてのパートをリストすることにより、アクティブなマルチパート・アップロードを確認できます。(アクティブなマルチパート・アップロードで個々のオブジェクト・パートの情報をリストすることはできません。)ListMultipartUploadParts操作には、オブジェクト・ストレージ・ネームスペース、バケット名およびアップロードIDが必要です。オブジェクト・ストレージは、指定されたアップロードIDに関連付けられているパートに関する情報で応答します。パート情報には、パート番号、ETag値、MD5チェックサムおよびパート・サイズ(バイト)が含まれます。

同様に、複数のマルチパート・アップロードが同時に行われている場合は、進行中のアップロードを確認できます。ListMultipartUploads APIコールを実行して、指定されたオブジェクト・ストレージ・ネームスペースとバケット内のアクティブなマルチパート・アップロードをリストします。

データをアップロードすると、パート・ストレージの料金が発生し始めます。

アップロードのコミット

すべてのオブジェクト・パートをアップロードしたら、アップロードをコミットします。CommitMultipartUploadリクエスト・パラメータを使用して、オブジェクト・ストレージ・ネームスペース、バケット名およびアップロードIDを指定します。リクエストの本文に、各パートのパート番号と対応するETag値を含めます。アップロードをコミットすると、オブジェクト・ストレージは構成部分からオブジェクトを構築します。オブジェクトは、指定されたバケットおよびオブジェクト・ストレージ・ネームスペースに格納されます。他のオブジェクトと同様に処理できます。ガベージ・コレクションでは、アップロードしたがCommitMultipartUploadリクエストに含まれなかったパート番号で占有されているストレージ・スペースが解放されます。

完了したアップロードからパートをリストまたは取得することはできません。完了したアップロードからパートを追加または削除することもできません。このような場合は、新規アップロードを開始することでオブジェクトを置換できます。

アップロードの取消

マルチパート・アップロードをコミットせずに取り消すことにした場合は、進行中のパートのアップロードが完了するまで待機してから、AbortMultipartUpload操作を使用します。いずれにせよ、パートのアップロードの進行中にアップロードを取り消すと、Object Storageは、完了したパートと進行中のパートの両方をクリーン・アップします。取り消されたマルチパート・アップロードのアップロードIDは再使用できません。