

# Amazon S3 でのマルチパートアップロードを使用したオブジェクトのアップロードとコピー
<a name="mpuoverview"></a>

マルチパートアップロードを使用すると、単一のオブジェクトをパートのセットとして Amazon S3 にアップロードすることができます。各パートは、オブジェクトのデータの連続する部分です。これらのオブジェクトパートは、任意の順序で個別にアップロードできます。アップロードの場合、更新された AWS クライアントはオブジェクトのチェックサムを自動的に計算し、リクエストの一部としてオブジェクトのサイズとともに Amazon S3 に送信します。いずれかのパートの送信が失敗すると、他のパートに影響を与えることなくそのパートを再送することができます。オブジェクトのすべてのパートがアップロードされたら、Amazon S3 はこれらを組み立ててオブジェクトを作成します。100 MB 以上のオブジェクトは、単一のオペレーションでアップロードするのではなく、マルチパートアップロードを使用するのがベストプラクティスです。

マルチパートアップロードの使用には、次の利点があります。
+ **スループットの向上** − パートを並列にアップロードすることで、スループットを向上させることができます。
+ **ネットワーク問題からの迅速な回復** − パートサイズが小さいほど、ネットワークエラーにより失敗したアップロードを再開する際の影響を最小限に抑えることができます。
+ **オブジェクトのアップロードの一時停止と再開** – オブジェクトの複数のパートを徐々にアップロードできます。マルチパートアップロードを開始した後は終了期限がありません。マルチパートアップロードは明示的に完了または停止する必要があります。
+ **オブジェクトの最終的なサイズが不明な状態でアップロードを開始** – オブジェクトを作成しながらアップロードできます。

次の方法でマルチパートアップロードを使用することをお勧めします。
+ 安定した高帯域幅ネットワーク経由で大きなオブジェクトをアップロードする場合は、複数スレッドのパフォーマンスのために並行してオブジェクトパートをアップロードすることにより、マルチパートアップロードを使用して使用可能な帯域幅の使用を最大化します。
+ むらがあるネットワークでアップロードを実行する場合は、マルチパートアップロードを使用して、アップロードの再開を回避することで、ネットワークエラーに対する弾力性を高めます。マルチパートアップロードを使用するときには、アップロード中に中断されたパートのアップロードを再試行するだけで済みます。最初からオブジェクトのアップロードを再開する必要はありません。

**注記**  
Amazon S3 Express One Zone ストレージクラスをディレクトリバケットで使用する方法の詳細については、「[S3 Express One Zone](directory-bucket-high-performance.md#s3-express-one-zone)」と「[ディレクトリバケットの使用](directory-buckets-overview.md)」を参照してください。S3 Express One Zone とディレクトリバケットでマルチパートアップロードを使用する方法の詳細については、「[ディレクトリバケットでのマルチパートアップロードの使用](s3-express-using-multipart-upload.md)」を参照してください。

## マルチパートアップロードのプロセス
<a name="mpu-process"></a>

マルチパートアップロードは 3 つのステップで構成されるプロセスです。アップロードを開始し、オブジェクトのパートをアップロードします。すべてのパートをアップロードし終わったら、マルチパートアップロードを完了します。Amazon S3 の側では、マルチパートアップロードの完了リクエストを受け取ると同時に、アップロードされたパートからオブジェクトを構築します。構築されたオブジェクトは、バケット内の他のオブジェクトと同じようにアクセスできます。

進行中のすべてのマルチパートアップロードをリストしたり、特定のマルチパートアップロードにおいてアップロードが完了したパートのリスト表示を取得したりできます。このようなオペレーションのそれぞれについて、このセクションで説明します。

**マルチパートアップロードの開始**  
マルチパートアップロードを開始するリクエストを送信するときは、必ずチェックサムタイプを指定してください。その後、Amazon S3 は、マルチパートアップロードの一意の識別子であるアップロード ID を含むレスポンスを返します。このアップロード ID は、パートのアップロード、パートのリスト、アップロードの完了、アップロードの停止を行うときは常に必要になります。アップロードするオブジェクトの説明となるメタデータを指定する場合は、マルチパートアップロードの開始リクエストの中で指定する必要があります。匿名ユーザーはマルチパートアップロードを開始できません。

**パートのアップロード**  
パートをアップロードするときは、アップロード ID に加えて、パート番号を指定する必要があります。1～10,000 の範囲で任意のパート番号を選択できます。パート番号によって、アップロードするオブジェクトに含まれるパートとその位置が一意に識別されます。選択するパート番号は、連続している必要はありません (例えば、1、5、14 など)。以前にアップロードしたパートと同じパート番号を使って新しいパートをアップロードした場合、以前のパートは上書きされることに注意してください。

パートをアップロードすると、Amazon S3 は各パートのチェックサム値を含むチェックサムアルゴリズムタイプをレスポンスのヘッダーとして返します。パートのアップロードごとに、パート番号と ETag 値を記録する必要があります。マルチパートアップロードを完了するためには、残りのリクエストにこれらの値を含める必要があります。各パートには、アップロード時に独自の ETag が設定されます。ただし、マルチパートアップロードが完了し、すべてのパートが統合されると、チェックサムのチェックサムとしてすべてのパートが 1 つの ETag に属することになります。

**重要**  
マルチパートアップロードを開始して、1 つまたは複数のパートをアップロードした後は、マルチパートアップロードを完了するか停止しない限り、アップロードしたパートのストレージに対する課金を停止できません。マルチパートアップロードを*完了または停止した後*でのみ、Amazon S3 はパートのストレージを解放して、パートのストレージに対する課金を停止します。  
マルチパートアップロードを停止した後は、再度同じアップロード ID を使ってパートをアップロードすることはできません。パートのアップロードが進行中だった場合、アップロードを停止した後も、パートのアップロードは成功または失敗する可能性があります。すべてのパートによって使用されているストレージをすべて解放するには、すべてのパートのアップロードが完了した後でマルチパートアップロードを停止する必要があります。

**マルチパートアップロードの完了**  
マルチパートアップロードを完了すると、パート番号に基づいて昇順に連結されたオブジェクトが Amazon S3 によって作成されます。*マルチパートアップロードの開始*リクエストにオブジェクトメタデータが指定されている場合、Amazon S3 によってそのメタデータはオブジェクトに関連付けられます。*完了*リクエストが正常に処理されると、個々のパートはなくなります。

*マルチパートアップロードの完了*リクエストには、アップロード ID と、パート番号およびそれに対応する ETag 値のリストが含まれている必要があります。Amazon S3 からのレスポンスには、結合されるオブジェクトデータを一意に識別する ETag が含まれます。この ETag が、オブジェクトデータの MD5 ハッシュになるとは限りません。

マルチパートアップロード中にフルオブジェクトチェックサムを指定すると、AWS SDK はそのチェックサムを Amazon S3 に渡し、S3 はオブジェクトの整合性をサーバー側で検証して、受信した値と比較します。次に、値が一致すると、S3 はオブジェクトを保存します。2 つの値が一致しない場合、Amazon S3 は `BadDigest` エラーでリクエストに失敗します。オブジェクトのチェックサムはオブジェクトメタデータにも保存され、後でオブジェクトのデータ整合性を検証するために使用します。

**マルチパートアップロードのサンプル呼び出し**  
 この例では、100 GB ファイルのマルチパートアップロードを生成していると仮定します。この場合、プロセス全体に対して次の API コールが実行されます。合計 1,002 回の API コールが実行されます。
+ プロセスを開始する `[CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)` の呼び出し。
+ それぞれ 100 MB の一部をアップロードし、合計サイズは 100 GB となる、1,000 回の個別の `[UploadPart](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)` の呼び出し。
+ プロセスを完了するための `[CompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)` 呼び出し。

**マルチパートアップロードのリスト化**  
特定のマルチパートアップロードのパートや、進行中のすべてのマルチパートアップロードをリスト表示できます。パートのリストオペレーションでは、特定のマルチパートアップロードについて既にアップロードしたパートの情報が返されます。パートのリストリクエストを送信するたびに、指定したマルチパートアップロードのパート情報 (最大で 1,000 個のパート) が Amazon S3 から返されます。マルチパートアップロードに 1,000 個を超えるパートが含まれる場合、すべてのパートを取得するにはパートのリストリクエストを追加で送信する必要があります。返されるパートのリストには、アップロードが完了していないパートは含まれていないことに注意してください。*マルチパートアップロードの一覧表示*オペレーションを使用すると、進行中のマルチパートアップロードのリストを取得できます。

進行中のマルチパートアップロードとは、開始されているものの、まだ完了または停止されていないアップロードを意味します。各リクエストに最大 1,000 個のマルチパートアップロードが返されます。進行中のマルチパートアップロードが 1,000 個を超える場合、残りのマルチパートアップロードを取得するには、リクエストを追加で送信する必要があります。返されたリストは確認の目的でのみ使用してください。

**重要**  
*マルチパートアップロードの完了*リクエストを送信するときに、このリストの結果を使用しないでください。代わりに、パートのアップロード時に指定したパート番号と、それに対応する、Amazon S3 から返される ETag 値の独自のリストを維持しておいてください。

## マルチパートアップロードオペレーションを使用したチェックサム
<a name="mpuchecksums"></a>

Amazon S3 にオブジェクトをアップロードするときに、使用する Amazon S3 のチェックサムアルゴリズムを指定できます。デフォルトでは、AWS SDK および S3 コンソールはすべてのオブジェクトアップロードにアルゴリズムを使用します。これは上書きできます。古い SDK を使用していて、アップロードされたオブジェクトに指定されたチェックサムがない場合、Amazon S3 は自動的に CRC-64/NVME (`CRC64NVME`) チェックサムアルゴリズムを使用します。(これは、効率的なデータ整合性の検証に推奨されるオプションでもあります。) CRC-64/NVME を使用する場合、Amazon S3 はマルチパートまたはシングルパートのアップロードの完了後に、フルオブジェクトのチェックサムを計算します。CRC-64/NVME チェックサムアルゴリズムは、オブジェクト全体の直接チェックサム、または個々のパートごとにチェックサムのチェックサムを計算するために使用されます。

マルチパートアップロードを使用してオブジェクトを S3 にアップロードすると、Amazon S3 は各パートまたはフルオブジェクトのチェックサム値を計算し、その値を保存します。S3 API または AWS SDK を使用して、次の方法でチェックサム値を取得できます。
+ 個々のパートには、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) または [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html) を使用できます。まだ処理中のマルチパートアップロードの個々の部分のチェックサム値を取得したい場合は、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html) を使用できます。
+ オブジェクト全体に対しては、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) を使用できます。フルオブジェクトのチェックサムを使用してマルチパートアップロードを実行する場合は、フルオブジェクトのチェックサムタイプを指定して、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload) と [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload) を使用します。オブジェクト全体のチェックサム値を検証するか、マルチパートアップロードで使用されているチェックサムタイプを確認するには、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html) を使用します。

**重要**  
**[チェックサム]** を含むマルチパートアップロードを使用している場合、各パートのアップロード (マルチパートアップロードに含まれる) のパート番号は、連続しており 1 から始まる必要があります。**[チェックサム]** を使用している場合、連続しないパート番号でマルチパートアップロードリクエストを完了しようとすると、Amazon S3 は `HTTP 500 Internal Server` エラーを生成します。

 マルチパートアップロードオブジェクトでのチェックサムの動作の詳細については、「[Amazon S3 でのオブジェクトの整合性のチェック](checking-object-integrity.md)」を参照してください。

追加のチェックサムを含むマルチパートアップロードを使用してオブジェクトをアップロードする方法を示すエンドツーエンドの手順については、「[チュートリアル: マルチパートアップロードでオブジェクトをアップロードして、データ整合性を検証する](tutorial-s3-mpu-additional-checksums.md)」を参照してください。

## マルチパートアップロードの同時オペレーション
<a name="distributedmpupload"></a>

分散開発環境においては、アプリケーションから同じオブジェクトに対して複数の更新が同時に開始されることもありえます。同じオブジェクトキーを使ってアプリケーションから複数のマルチパートアップロードが開始される可能性もあります。そのようなアップロードごとに、アプリケーションからパートのアップロードが行われ、アップロードの完了リクエストが Amazon S3 に送信されて、オブジェクトが作成されます。バケットで S3 バージョニングが有効になっているときには、マルチパートアップロードを完了するたびに新しいバージョンが作成されます。バージョニングが有効なバケットで、同じオブジェクトキーを使用する複数のマルチパートアップロードを開始した場合、オブジェクトの最新バージョンは、どのアップロードが最後に開始されたか (`createdDate`） によって決まります。

例えば、オブジェクトの `CreateMultipartUpload` リクエストを午前 10 時に開始します。次に、同じオブジェクトに対する 2 番目の `CreateMultipartUpload` リクエストを午前 11 時に送信したとします。この場合は、2 番目のリクエストが最後に送信されたため、2 番目のリクエストの後に最初のアップロードが完了したとしても、午前 11 時 のリクエストでアップロードされたオブジェクトが最新バージョンになります。バージョニングが有効になっていないバケットの場合は、マルチパートアップロードの開始から完了までの間に受信された他の何らかのリクエストが優先される可能性もあります。

同時マルチパートアップロードリクエストが優先されるもう 1 つの例は、そのキーを使用してマルチパートアップロードを開始した後に、別のオペレーションでキーが削除される場合です。オペレーションを完了する前に、マルチパートアップロードの完了レスポンスによって、オブジェクトを確認できなくても、オブジェクト作成の成功が示される可能性があります。

## マルチパートアップロード中に同じキー名を持つオブジェクトのアップロードを禁止する
<a name="multipart-upload-objects-with-same-key-name"></a>

アップロード時の条件付き書き込みオペレーションを使用して、バケット内にオブジェクトが存在するかどうかを確認してからオブジェクトを作成できるようになりました。これにより、既存のデータの上書きを阻止できます。条件付き書き込みでは、アップロードする際にバケット内に同じキー名を持つ既存のオブジェクトが存在しないことを検証します。

条件付き書き込みは、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) リクエストまたは [CompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html) リクエストに使用できます。

条件付きリクエストの詳細については、「[条件付きリクエストを使用して S3 オペレーションに前提条件を追加する](conditional-requests.md)」を参照してください。

## マルチパートアップロードと料金
<a name="mpuploadpricing"></a>

マルチパートアップロードを開始すると、アップロードを完了または中止するまですべてのパートが Amazon S3 によって保持されます。マルチパートアップロードの実行期間を通して、アップロードとそれに関連するパートのために使用されるすべてのストレージ、帯域幅、リクエストに対して課金が行われます。

これらのパートは、パートのアップロード時に指定されたストレージクラスに従って課金されます。ただし、これらのパートが S3 Glacier Flexible Retrieval または S3 Glacier Deep Archive にアップロードされた場合、料金は請求されません。S3 Glacier Flexible Retrieval ストレージクラスへの PUT リクエストに対する処理中のマルチパートパートは、アップロードが完了するまで S3 Glacier Flexible Retrieval ステージングストレージとして S3 標準ストレージ料金で請求されます。さらに、`CreateMultipartUpload` と `UploadPart` の両方が S3 標準料金で請求されます。`CompleteMultipartUpload` リクエストのみが、S3 Glacier Flexible Retrieval 料金で請求されます。同様に、S3 Glacier Deep Archive ストレージクラスへの PUT の処理中のマルチパートパートは、アップロードが完了するまで S3 Glacier Flexible Retrieval ステージングストレージとして S3 標準ストレージ料金で請求されます。`CompleteMultipartUpload` リクエストのみが、S3 Glacier Deep Archive 料金で請求されます。

マルチパートアップロードを停止した場合、Amazon S3 はアップロードアーティファクトおよびアップロードしたすべてのパートを削除します。これらのアーティファクトについては請求されません。指定されたストレージクラスに関係なく、不完全なマルチパートアップロードの削除に伴う早期削除料金はありません。料金に関する詳細については、[[Amazon S3 の料金]](https://aws.amazon.com/s3/pricing/) を参照してください。

**注記**  
ストレージコストを最小限に抑えるため、`AbortIncompleteMultipartUpload` アクションを使用して指定した日数が経過した後に不完全なマルチパートアップロードを削除するようにライフサイクルルールを設定することをお勧めします。不完全なマルチパートアップロードを削除するライフサイクルルールの作成の詳細については、「[不完全なマルチパートアップロードを中止するためのバケットライフサイクルポリシーの設定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpu-abort-incomplete-mpu-lifecycle-config.html)」を参照してください。

## マルチパートアップロードの API サポート
<a name="apisupportformpu"></a>

*Amazon Simple Storage Service API リファレンス*の以下のセクションでは、マルチパートアップロードの REST API について説明しています。

AWS Lambda 関数を使用するマルチパートアップロードのチュートリアルについては、「[Uploading large objects to Amazon S3 using multipart upload and transfer acceleration](https://aws.amazon.com/blogs/compute/uploading-large-objects-to-amazon-s3-using-multipart-upload-and-transfer-acceleration/)」を参照してください。
+ [マルチパートアップロードの作成](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
+ [Upload Part](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
+ [パートのアップロード (コピー)](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)
+ [Complete Multipart Upload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [マルチパートアップロードの中止](https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
+ [パートのリスト](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
+ [マルチパートアップロードのリスト](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)

## AWS Command Line Interfaceマルチパートアップロードの サポート
<a name="clisupportformpu"></a>

マルチパートアップロードのオペレーションについては、AWS Command Line Interface の以下のトピックを参照してください。
+ [Initiate Multipart Upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/create-multipart-upload.html)
+ [Upload Part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html)
+ [パートのアップロード (コピー)](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html)
+ [Complete Multipart Upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html)
+ [マルチパートアップロードの中止](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html)
+ [パートのリスト](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html)
+ [マルチパートアップロードのリスト](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-multipart-uploads.html)

## AWSマルチパートアップロードの SDK サポート
<a name="sdksupportformpu"></a>



AWS SDK を使用して、オブジェクトを部分的にアップロードできます。API アクションでサポートされる AWS SDK のリストについては、次を参照してください。
+ [マルチパートアップロードの作成](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
+ [Upload Part](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
+ [パートのアップロード (コピー)](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)
+ [Complete Multipart Upload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [マルチパートアップロードの中止](https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
+ [パートのリスト](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
+ [マルチパートアップロードのリスト](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)

## マルチパートアップロード API とアクセス許可
<a name="mpuAndPermissions"></a>

マルチパートアップロードオペレーションを使用するには、必要なアクセス権限を有している必要があります。マルチパートアップロードオペレーションを実行するためのアクセス許可を付与するには、アクセスコントロールリスト (ACL)、バケットポリシー、ユーザーポリシーを使用できます。ACL、バケットポリシー、またはユーザーポリシーを使用して割り当てることのできる、さまざまなマルチパートアップロードオペレーションに必要なアクセス許可を次の表に示します。


| アクション | 必要なアクセス許可 | 
| --- | --- | 
|  マルチパートアップロードの作成  |  マルチパートアップロードのリクエストを作成するには、オブジェクトに対して `s3:PutObject` アクションを実行するための許可が必要です。 バケット所有者は他のプリンシパルに対して `s3:PutObject` アクションの実行を許可できます。  | 
|  Initiate Multipart Upload  |  マルチパートアップロードを開始するには、オブジェクトに対して `s3:PutObject` アクションを実行するための許可が必要です。 バケット所有者は他のプリンシパルに対して `s3:PutObject` アクションの実行を許可できます。  | 
| イニシエータ | マルチパートアップロード開始者を識別するコンテナエレメント。イニシエータが AWS アカウント である場合、このエレメントは所有者エレメントと同じ情報を提供します。イニシエータが IAM ユーザーである場合、このエレメントはユーザー ARN と表示名を提供します。 | 
| Upload Part | パートをアップロードするには、オブジェクトに対して `s3:PutObject` アクションを実行するための許可が必要です。 マルチパートアップロードの開始者がオブジェクトのパートをアップロードできるようにするため、バケット所有者はその開始者に対しオブジェクトへの `s3:PutObject` アクションの実行を許可する必要があります。 | 
| パートのアップロード (コピー) | パートをアップロードするには、オブジェクトに対して `s3:PutObject` アクションを実行するための許可が必要です。既存のオブジェクトからパートをアップロードするので、ソースオブジェクトに対して `s3:GetObject` を実行するための許可が必要です。 開始者がオブジェクトのパートをアップロードするには、バケット所有者が、開始者にそのオブジェクトでの `s3:PutObject` アクションの実行を許可する必要があります。 | 
| Complete Multipart Upload | マルチパートアップロードを完了するには、オブジェクトに対して `s3:PutObject` アクションを実行するための許可が必要です。 マルチパートアップロードの開始者がオブジェクトのアップロードを完了できるようにするため、バケット所有者はその開始者に対しオブジェクトへの `s3:PutObject` アクションの実行を許可する必要があります。 | 
| マルチパートアップロードの中止 | マルチパートアップロードを停止するには、`s3:AbortMultipartUpload` アクションを実行するための許可が必要です。 デフォルトでは、バケット所有者とマルチパートアップロードの開始者が、IAM と S3 バケットポリシーの一部として、このアクションの実行を許可されます。開始者が IAM ユーザーである場合、そのユーザーの AWS アカウント もそのマルチパートアップロードを停止できます。VPC エンドポイントポリシーでは、マルチパートアップロードのイニシエータは、`s3:AbortMultipartUpload` アクションを実行する許可を自動的に取得しません。 このようなデフォルト設定に加え、バケット所有者は他のプリンシパルに対してオブジェクトへの `s3:AbortMultipartUpload` アクションの実行を許可できます。バケット所有者は任意のプリンシパルに対し、`s3:AbortMultipartUpload` アクションを実行する権限を無効にすることができます。 | 
| パートのリスト | マルチパートアップロードに含まれるパートをリストするには、`s3:ListMultipartUploadParts` アクションを実行するための許可が必要です。 デフォルトではバケット所有者が、バケットに対する任意のマルチパートアップロードについてパートのリストを許可されています。マルチパートアップロードの開始者は、特定のマルチパートアップロードについてパートのリストを許可されます。マルチパートアップロードの開始者が IAM ユーザーである場合、その IAM ユーザーを管理している AWS アカウント もそのアップロードのパートのリストへのアクセス許可を付与されます。  このようなデフォルト設定に加え、バケット所有者は他のプリンシパルに対してオブジェクトへの `s3:ListMultipartUploadParts` アクションの実行を許可できます。バケット所有者は任意のプリンシパルに対し、`s3:ListMultipartUploadParts` アクションを実行する権限を無効にすることもできます。 | 
| マルチパートアップロードのリスト | バケットに対して進行中のマルチパートアップロードをリストするには、そのバケットに対して `s3:ListBucketMultipartUploads` アクションを実行するための許可が必要です。 デフォルト設定に加え、バケット所有者は他のプリンシパルに対してバケットへの `s3:ListBucketMultipartUploads` アクションの実行を許可できます。 | 
| AWS KMS 暗号化および復号関連のアクセス許可 |  AWS Key Management Service (AWS KMS) KMS キーを使用した暗号化を伴うマルチパートアップロードを実行するには、リクエスタに以下のアクセス許可が必要です。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/mpuoverview.html)  マルチパートアップロードを完了する前に、暗号化されたファイル部分からデータを復号して読み取る必要があるため、Amazon S3 にはこれらの許可が必要です。また、オブジェクトのチェックサム値を取得するには、`kms:Decrypt` アクセス許可と、お客様が提供した暗号化キーによるサーバー側の暗号化も必要です。[https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html) API の使用時にこれらの必要なアクセス許可がない場合、オブジェクトはチェックサム値なしで作成されます。 IAM ユーザーまたはロールが KMS キーと同じ AWS アカウントにある場合、キーと IAM ポリシーの両方にアクセス許可があることを確認してください。IAM ユーザーまたはロールが KMS キーとは異なるアカウントに属している場合、キーポリシーと IAM ユーザーまたはロールの両方に対する許可が必要です。  | 
| SSE-C (お客様が用意した暗号化キーによるサーバー側の暗号化) | [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html) API を使用する場合は、SSE-C (お客様が用意した暗号化キーによるサーバー側の暗号化) を指定する必要があります。指定しない場合、オブジェクトはチェックサムなしで作成され、チェックサム値は返されません。  | 

ACL アクセス権限とアクセスポリシーのアクセス許可との関係については、[ACL アクセス許可とアクセスポリシーのアクセス許可のマッピング](acl-overview.md#acl-access-policy-permission-mapping) を参照してください。IAM ユーザー、グループ、ロール、ベストプラクティスの詳細については、「*IAM ユーザーガイド*」の「[IAM ID (ユーザー、グループ、ロール)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)」を参照してください。

## マルチパートアップロードオペレーションを使用したチェックサム
<a name="Checksums-mpu-operations"></a>

実際のマルチパートアップロードを実行するために使用される Amazon S3 API は [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)、および [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html) の 3 つです。次の表は、各 API に提供する必要があるチェックサムヘッダーと値を示しています。


| チェックサムアルゴリズム | チェックサムタイプ | `CreateMultipartUpload` | `UploadPart` | `CompleteMultipartUpoad` | 
| --- | --- | --- | --- | --- | 
| CRC-64/NVME (`CRC64NVME`) | フルオブジェクト | 必要なヘッダー: `x-amz-checksum-algorithm` |  オプションヘッダー: `x-amz-checksum-crc64nvme`  |  オプションヘッダー: `x-amz-checksum-algorithm` `x-amz-crc64`  | 
| CRC-32 (`CRC32`) CRC 32-C (`CRC32C`) | フルオブジェクト |  必要なヘッダー: `x-amz-checksum-algorithm` `x-amz-checksum-type`  |  オプションヘッダー: `x-amz-checksum-crc64nvme`  |  オプションヘッダー: `x-amz-checksum-algorithm` `x-amz-crc32` `x-amz-crc32c`  | 
|  CRC-32 (`CRC32`) CRC-32C (`CRC32C`) SHA-1 (`SHA1`) SHA-256 (`SHA256`) | 複合 |  必要なヘッダー: `x-amz-checksum-algorithm`  |  必要なヘッダー: `x-amz-checksum-crc32` `x-amz-checksum-crc32c` `x-amz-checksum-sha1` `x-amz-checksum-sha256`  |  必要なヘッダー: すべてのパートレベルのチェックサムを `CompleteMultiPartUpload` リクエストに含める必要があります。 オプションヘッダー: `x-amz-crc32` `x-amz-crc32c` `x-amz-sha1` `x-amz-sha256`  | 

**Topics**
+ [マルチパートアップロードのプロセス](#mpu-process)
+ [マルチパートアップロードオペレーションを使用したチェックサム](#mpuchecksums)
+ [マルチパートアップロードの同時オペレーション](#distributedmpupload)
+ [マルチパートアップロード中に同じキー名を持つオブジェクトのアップロードを禁止する](#multipart-upload-objects-with-same-key-name)
+ [マルチパートアップロードと料金](#mpuploadpricing)
+ [マルチパートアップロードの API サポート](#apisupportformpu)
+ [AWS Command Line Interfaceマルチパートアップロードの サポート](#clisupportformpu)
+ [AWSマルチパートアップロードの SDK サポート](#sdksupportformpu)
+ [マルチパートアップロード API とアクセス許可](#mpuAndPermissions)
+ [マルチパートアップロードオペレーションを使用したチェックサム](#Checksums-mpu-operations)
+ [不完全なマルチパートアップロードを削除するためのバケットライフサイクル設定の設定](mpu-abort-incomplete-mpu-lifecycle-config.md)
+ [マルチパートアップロードを使用したオブジェクトのアップロード](mpu-upload-object.md)
+ [高レベルの .NET TransferUtility クラスを使用してディレクトリをアップロードする](HLuploadDirDotNet.md)
+ [マルチパートアップロードのリスト化](list-mpu.md)
+ [AWS SDK を使用したマルチパートアップロードの追跡](track-mpu.md)
+ [マルチパートアップロードの中止](abort-mpu.md)
+ [マルチパートアップロードを使用したオブジェクトのコピー](CopyingObjectsMPUapi.md)
+ [チュートリアル: マルチパートアップロードでオブジェクトをアップロードして、データ整合性を検証する](tutorial-s3-mpu-additional-checksums.md)
+ [Amazon S3 マルチパートアップロードの制限](qfacts.md)