マルチパート・アップロードについて
マルチパートアップロードとは?
5GBを超えるファイルをアップロードするために使用できるアップロードの方法です。
マルチパートアップロード API を使用すると、最大 5 TB のサイズの単一の大容量オブジェクトをアップロードできます。
マルチパートアップロード API は大容量オブジェクトのアップロードを効率よく行えるように設計されています。1 つのオブジェクトをいくつかに分けてアップロードできます。オブジェクトのパートは、単独で、任意の順序で、または並行してアップロードできます。マルチパートアップロードは 5 MB~5 TB のオブジェクトで使用できます。詳細については、マルチパートアップロードを使用したオブジェクトのアップロードとコピー を参照してください。
引用元:https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/upload-objects.html
- CreateMultipart でマルチパートアップロードを開始します
- アップロードする領域を用意するようなイメージかな、と思います。
- 以下のどちらかの方法で、オブジェクトを分割しながらコピーします
- UploadPartCopy を使う(同一サービス内の場合)
- GetObject と UploadPart を使う(別サービス間でコピーする場合)
- すべてのコピーが完了したら CompleteMultipartUpload で完了する
- CompleteMultipartUpload が正常に終了したら、通常の単一オブジェクトとしてアクセスできます
参考・引用
S3 の場合のマルチパートアップロードの処理フロー
マルチパートアップロードの全体的な流れは、以下のとおりです👀🌟
1. アップロードの開始
- createMultipartUpload() メソッドを呼び出し、新しいマルチパートアップロードを開始します。
- この呼び出しで取得した UploadId は、後続の操作で必要になります。
2. パートのアップロード
- uploadPart() メソッドを使用して、ファイルを複数のパートに分割して並行または順次にアップロードします。
- 各パートのアップロード後に、パート番号(PartNumber)と ETag(アップロードされたパートのハッシュ値)が返されます。
3. アップロードの完了
- すべてのパートのアップロードが完了したら、completeMultipartUpload() メソッドを呼び出します。
- このメソッドには、UploadId と各パートの ETag および PartNumber のリストを渡します。
completeMultipartUpload() の詳細な処理
-
結合の指示
completeMultipartUpload() を呼び出すと、Amazon S3 に対して、アップロード済みのすべてのパートを指定した順序で結合し、1つの完全なオブジェクトとして保存するように指示します。 -
最終オブジェクトの作成
Amazon S3 は指定されたパートを結合し、最終的なオブジェクトを作成します。この過程で、各パートの整合性と完全性が確認されます。 -
レスポンスの取得
処理が成功すると、S3 は新しいオブジェクトの ETag やメタデータを含むレスポンスを返します。
注意点
-
エラー処理
もしパートの情報が不足している、または間違っている場合、S3 はエラーを返し、アップロードの完了ができません。 -
中断やキャンセル
アップロードを中止したい場合は、abortMultipartUpload() メソッドを使用して、既存のマルチパートアップロードをキャンセルできます。
まとめ
s3.completeMultipartUpload() は、Amazon S3 のマルチパートアップロード機能において、アップロードした各パートを結合し、最終的なオブジェクトとしてアップロードを完了するためのメソッドです。
s3.completeMultipartUpload() は、マルチパートアップロードの最終ステップであり、個別にアップロードされたパートを統合して、完全なオブジェクトとして Amazon S3 に保存する重要な役割を持っています。これにより、大容量のファイルを効率的かつ信頼性高くアップロードすることが可能になります。