適用シナリオ

OSS に大容量ファイルを簡易アップロード関数 (PutObject) でアップロードすると、アップロード処理中にネットワークに問題が発生した場合に、アップロードは失敗し、最初からファイルをアップロードしなおす必要が出てきます。こういった場合に、アップロードを再開できるよう、OSS にはマルチパートアップロードが用意されています。その名のとおり、マルチパートアップロードは、ファイルを複数のデータブロックに分割してアップロードします (OSS では Part といいます)。アップロードが完了すると、OSS 関数が呼び出され 1 つのオブジェクトに結合されます。

他のアップロード関数と比較し、マルチパートアップロードは以下の場合に有用です。

  • ネットワーク接続環境があまりよくない:パーツのアップロードに失敗してもすべてのパーツを再びアップロードせずに、アップロードに失敗したパーツのみを再アップロードできます。
  • アップロードを再開する必要がある:いつでもアップロードに中断した箇所から再開できます。
  • アップロードの高速化:同時に複数のパーツをアップロードするため、処理が早くなります。
  • ストリームアップロード:サイズの不確定なファイルをいつでもアップロードできます。ビデオ監視といった産業アプリに適しています。

マルチパートアップロードの処理

マルチパートアップロードは基本的に次のように処理されます。

  1. アップロードするファイルを特定の大きさに分割します。
  2. マルチパートアップロードのタスクを開始します (InitiateMultipartUpload)。
  3. パーツを並行してアップロードします(UploadPart)。
  4. アップロード完了処理を実行します(CompleteMultipartUpload)。


次の点にご注意ください。

  • 最後のパーツ (Part) 以外は、100 KB 以上である必要があります。100 KB 未満の場合には、CompleteMultipartUpload インターフェイスの呼び出しに失敗します。
  • マルチパートアップロードでパーツに分割されると、各パーツは、アップロード時ににふられた番号 (partNumber) 順に並べ替えられます。アップロードの速さは並行アップロードするパーツの数ではなく、ネットワークの状況とデバイスに依存します。
  • アップロードが完了しているにもかかわらず、CompleteMultipartUpload 呼び出しに失敗する場合は、アップロード済みのファイルは自動的に削除されません。AbortMultipartUpload を呼び出して、アップロードを終了し、ストレージ領域を空けます。自動的にアップロード済みの Part が使用されるようにするには、オブジェクトの「ライフサイクル管理」をご参照ください。

再生可能アップロード

アップロード済みパーツは、削除しない限り残ります。したがって、マルチパートアップロードを再開可能アップロードと捉えることができます。

マルチパートアップロードの処理中に、意図せずシステムがクラッシュした場合、ListMultipartUploads および ListParts インターフェイスを使用することで、各タスクでアップロードされたパーツ (Part) のアップロードを再開できます。そうすることで、最後に正常にアップロードされたパーツからアップロードが再開されます。アップロードの中断および再開も同様のロジックです。

再開可能アップロードは、モバイルデバイスでのアップロードや大容量ファイルのアップロードに最適です。

アップロードの制約

  • 容量:本アップロードモードでは、オブジェクトのサイズはパーツのサイズで決まります。マルチパートアップロードでは、10000 パーツにまで分割できます。各パーツは最低 100 KB 以上、最大 5GB とします (最後のパーツのみ 100 KB 未満可)。オブジェクトは 48.8 TB 以内にします。
  • 命名規則
    • UTF-8 エンコード化
    • 1 字以上 1023 字以内
    • スラッシュ (/) およびバックスラッシュ () で始めることはできない

アップロードのセキュリティと認可

権限のないサードパーティによって開発者のバケットにオブジェクトがアップロードされることのないよう、OSS ではバケットレベルおよびオブジェクトレベルでアクセス管理が行なえます。「アクセス管理」をご参照ください。サードパーティにアップロードを許可するには、OSS ではバケットレベル、オブジェクトレベルのアカウント管理のほか、アカウント認証を行うことができます。「サードパーティにアップロードを許可」をご参照ください。

アップロード後に

関数の使い方の参照先

ベストプラクティス