マルチパート・アップロードの使用
Oracle Cloud Infrastructure Object Storageサービスは、特にラージ・オブジェクトのより効率的で回復力のあるアップロードのためのマルチパート・アップロードをサポートしています。API、ソフトウェア開発キットとコマンドライン・インタフェースまたはコマンドライン・インタフェース(CLI)を使用して、マルチパート・アップロードを実行できます。コンソールでは、マルチパート・アップロードを使用して、64MiBより大きいオブジェクトをアップロードします。
マルチパート・アップロードでは、オブジェクトの個々のパートを並行してアップロードすることで、アップロードに費やす時間を短縮できます。APIを介して実行されるマルチパート・アップロードでは、オブジェクトのアップロード全体を再試行するのではなく、失敗したパートのアップロードを再試行できるため、ネットワーク障害による影響を最小限に抑えることもできます。
マルチパート・アップロードは、単一のアップロード操作に対して大きすぎるオブジェクトに対応します。100 MiBを超えるオブジェクトをアップロードする場合にはマルチパート・アップロードを使用することをお薦めします。アップロードされるオブジェクトの最大サイズは10 TiBです。オブジェクト・パートは50 GiB以下である必要があります。マルチパート・アップロードを使用すると、個々のパートのアップロード間で一時停止し、スケジュールとリソースが許すときにアップロードを再開する柔軟性が得られます。
オブジェクト・ライフサイクル・ポリシー・ルールを使用して、コミットされていないか失敗したマルチパート・アップロードを、指定した日数後に自動的に削除できます。詳細は、オブジェクト・ライフサイクル管理の使用を参照してください。
必須IAMポリシー
Oracle Cloud Infrastructureを使用するには、管理者によってポリシーでセキュリティ・アクセス権が付与されている必要があります。このアクセス権は、コンソール、あるいはSDK、CLIまたはその他のツールを使用したREST APIのいずれを使用している場合でも必要です。権限を持っていない、または認可されていないというメッセージが表示された場合は、持っているアクセス権のタイプと作業しているコンパートメントを管理者に確認してください。
ポリシーに慣れていない場合は、ポリシーの開始および共通ポリシーを参照してください。
管理者の場合:
-
指定したIAMグループで、テナンシのすべてのコンパートメント内のオブジェクト・ストレージのネームスペース、バケット、およびそれらに関連付けられたオブジェクトを管理するポリシーを作成できます:
Allow group <IAM_group_name> to manage object-family in tenancy
-
または、アクセスの範囲を狭くするポリシーを作成できます。たとえば、指定したグループがテナンシの特定のコンパートメント内のバケットとオブジェクトのみを管理するようにするには:
Allow group <IAM_group_name> to manage buckets in compartment <compartment_name>
より限定的なポリシーを記述する場合は、マルチパート・アップロードに必要な権限が含まれていることを確認してください。ユーザーには、OBJECT_CREATEおよびOBJECT_OVERWRITEの両方の権限を付与するポリシーが必要です。
ポリシーを記述するための他の代替手段の詳細は、オブジェクト・ストレージ、アーカイブ・ストレージおよびデータ転送の詳細を参照してください。
リソースのモニタリング
メトリック、アラームおよび通知を使用して、Oracle Cloud Infrastructureリソースのヘルス、容量およびパフォーマンスをモニターできます。詳細は、モニタリングおよび通知を参照してください。
マルチパート・アップロードのモニタリングの詳細は、オブジェクト・ストレージ・メトリックを参照してください。
マルチパート・アップロードAPIの使用
APIを使用して実行されるマルチパート・アップロードは、次のステップで構成されます:
- アップロードの開始
- オブジェクト・パートのアップロード
- アップロードのコミット
マルチパート・アップロードAPIを使用する前に、アップロードするパートを作成する必要があります。オブジェクト・ストレージは、残りのステップのAPI操作を提供します。また、サービスでは、進行中のマルチパート・アップロードのリスト表示、進行中のマルチパート・アップロードのオブジェクト・パートのリスト表示、およびAPIを介して開始された進行中のマルチパート・アップロードの中断を行うためのAPI操作も提供します。 ここでは、APIのステップの概要を示しますが、サポートされているAPIコールの詳細は、APIリファレンスを参照してください。
オブジェクト・パートの作成
マルチパート・アップロードでは、アップロードするオブジェクトを個々のパートに分割します。個々のパートは、50 GiB程度の大きさにすることができます。各パートに使用するパート番号を決定します。パート番号は1から10,000の範囲です。連続した番号を割り当てる必要はありませんが、オブジェクト・ストレージは、パート番号を昇順に並べることでオブジェクトを構築します。
アップロードの開始
オブジェクト・パートの作成が終了したら、CreateMultipartUpload REST APIコールを実行してマルチパート・アップロードを開始します。オブジェクト名および任意のオブジェクト・メタデータを指定します。オブジェクト・ストレージは、このマルチパート・アップロードに関連するすべてのリクエストに含める必要がある一意のアップロードIDで応答します。また、オブジェクト・ストレージは、アップロードをアクティブとしてマークします。アップロードは、明示的にコミットするか中断するまでアクティブなままです。
オブジェクト・パートのアップロード
オブジェクト・パートのアップロードごとにUploadPartリクエストを実行します。リクエスト・パラメータで、オブジェクト・ストレージ・ネームスペース、バケット名、アップロードIDおよびパート番号を指定します。リクエスト本文にオブジェクト・パートを含めます。オブジェクト・パートは、並行して、任意の順序でアップロードできます。アップロードをコミットすると、オブジェクト・ストレージでは、パート番号を使用してオブジェクト・パートを順序付けします。パート番号は連続している必要はありません。同じアップロードIDとパート番号を使用して複数のオブジェクトのパートがアップロードされた場合、CommitMultipartUpload APIは最後にアップロードされたパートをコミットします。
オブジェクト・ストレージは、アップロードされた各パートに対してETag (エンティティ・タグ)値を返します。アップロードをコミットする際は、各パートのパート番号と対応するETag値の両方が必要です。
ネットワークの問題がある場合は、個々のパートに対して失敗したアップロードを再開できます。アップロード全体を再開する必要はありません。なんらかの理由でアップロードを一度に実行できない場合は、マルチパート・アップロードを使用すると、自分のペースでパートのアップロードを続行できます。マルチパート・アップロードはアクティブなままですが、合計数が10,000未満であれば、パートを追加し続けることができます。
アップロードされたすべてのパートをリストすることにより、アクティブなマルチパート・アップロードを確認できます。(アクティブなマルチパート・アップロードで、個々のオブジェクト・パートの情報をリストすることはできません。)ListMultipartUploadParts操作には、オブジェクト・ストレージ・ネームスペース、バケット名およびアップロードIDが必要です。オブジェクト・ストレージは、指定されたアップロードIDに関連付けられているパートに関する情報で応答します。パート情報には、パート番号、ETag値、MD5チェックサムおよびパート・サイズ(バイト)が含まれます。
同様に、複数のマルチパート・アップロードが同時に行われている場合は、進行中のアップロードを確認できます。ListMultipartUploads APIコールを実行して、指定されたオブジェクト・ストレージ・ネームスペースとバケット内のアクティブなマルチパート・アップロードをリストします。
データをアップロードすると、パート・ストレージの料金が発生し始めます。
アップロードのコミット
すべてのオブジェクト・パートをアップロードしたら、アップロードをコミットします。CommitMultipartUploadリクエスト・パラメータを使用して、オブジェクト・ストレージ・ネームスペース、バケット名およびアップロードIDを指定します。リクエストの本文に、各パートのパート番号と対応するETag値を含めます。アップロードをコミットすると、オブジェクト・ストレージは構成部分からオブジェクトを構築します。オブジェクトは、指定されたバケットおよびオブジェクト・ストレージ・ネームスペースに格納されます。他のオブジェクトと同様に処理できます。ガベージ・コレクションでは、アップロードしたがCommitMultipartUploadリクエストに含めなかったパート番号で占有されているストレージ・スペースが解放されます。
完了したアップロードからパートをリストまたは取得することはできません。完了したアップロードからパートを追加または削除することもできません。このような場合は、新規アップロードを開始することでオブジェクトを置換できます。
マルチパート・アップロードをコミットせずに中断する場合、進行中のパートのアップロードが完了するまで待機してから、AbortMultipartUpload操作を使用します。いずれにせよ、パートのアップロードの進行中にアップロードを中断すると、オブジェクト・ストレージは、完了したパートと進行中のパートの両方をクリーンアップします。中断されたマルチパート・アップロードのアップロードIDは再利用できません。
APIドキュメント
APIの使用およびリクエストの署名の詳細は、REST APIおよびセキュリティ資格証明を参照してください。SDKの詳細は、ソフトウェア開発キットとコマンドライン・インタフェースを参照してください。
次の操作を使用して、マルチパート・アップロードを管理します: