問題の説明
クライアント側の暗号化シナリオでは、CompleteMultipartUploadリクエストで指定されたパーツの数は、InitiateMultipartUploadリクエストに基づいてOSSによって計算されたパーツの予想数とは異なります。
原因
CompleteMultipartUploadリクエストで指定されたパーツ数が、アップロードするデータのサイズとInitiateMultipartUploadリクエストで指定されたパーツサイズに基づいて計算されたパーツ数を超えています。
例
たとえば、InitiateMultipartUploadリクエストを開始します。アップロードするデータのサイズは1,000,000B
、パーツサイズは500,000B
です。
POST /multipart.data? HTTP/1.1のアップロード
ホスト: oss-example.oss-cn-hangzhou.aliyuncs.com
日付: 2月22日水2012 08:32:21 GMT
x-oss-storage-class: アーカイブ
権限付与: OSS qn6qrrqxo2oawuk53otfjbyc:/cluRFtRwMTZpC2hTj4F67AG ****
x-oss-meta-client-side-encryption-data-size: 1000000
x-oss-meta-client-side-encryption-part-size: 500000
マルチパートアップロードタスクのパーツの推定数は2です。 次に、CompleteMultipartUploadリクエストのパーツ数として3を指定します。
POST /multipart.data?uploadId=0004B9B2D2F7815C432C9057C031 ****&encoding-type=url HTTP/1.1
ホスト: oss-example.oss-cn-hangzhou.aliyuncs.com
コンテンツ-長さ: 1056
日付: 2月24日金曜日2012 10:19:18 GMT
承認: OSS qn6qrrqxo2oawuk53otf ****:8VwFhFUWmVecK 6jQlHlXMK/z ****
<CompleteMultipartUpload>
<パート>
<PartNumber>1</PartNumber>
<ETag>"3349DC700140D7F86A0784842780 ****"</ETag>
</パート>
<パート>
<PartNumber>5</PartNumber>
<ETag>"8EFDA8BE206636A695359836FE0A ****"</ETag>
</パート>
<パート>
<PartNumber>8</PartNumber>
<ETag>"8C315065167132444177411FDA14 ****"</ETag>
</パート>
</CompleteMultipartUpload>
CompleteMultipartUploadリクエストで指定された部品数が予想部品数を超えているため、CompleteMultipartUploadリクエストに対してエラーが返されます。
ソリューション
CompleteMultipartUploadリクエストで指定された部品の数が、予想される部品の数を超えないようにします。
InitiateMultipartUploadリクエストのデータサイズとパーツサイズを変更して、CompleteMultipartUploadリクエストでより多くのパーツを許可します。