問題描述
用戶端加密情境下CompleteMultipartUpload 時指定的分區數目不符合預期。
問題原因
用戶端加密情境下,在InitiateMultipartUpload時需要指定用戶端預期的資料大小以及分區大小,服務端會根據設定的資料大小以及分區大小計算出預期的分區數目。在CompleteMultipartUpload 時如果傳入的分區數目超過了預期的分區數目則會報此錯誤。
問題樣本
例如您事先發起了一個InitiateMultipartUpload請求,預期的資料大小為1,000,000B、預期的分區大小為500,000B:
POST /multipart.data?uploads HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Wed, 22 Feb 2012 08:32:21 GMT
x-oss-storage-class: Archive
Authorization: OSS qn6q**************:77Dv****************
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
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Content-Length: 1056
Date: Fri, 24 Feb 2012 10:19:18 GMT
Authorization: OSS qn6q**************:77Dv****************
<CompleteMultipartUpload>
<Part>
<PartNumber>1</PartNumber>
<ETag>"3349DC700140D7F86A0784842780****"</ETag>
</Part>
<Part>
<PartNumber>5</PartNumber>
<ETag>"8EFDA8BE206636A695359836FE0A****"</ETag>
</Part>
<Part>
<PartNumber>8</PartNumber>
<ETag>"8C315065167132444177411FDA14****"</ETag>
</Part>
</CompleteMultipartUpload>Complete時傳入的分區個數超過了預期的分區個數,請求返回失敗。
解決方案
調整CompleteMultipartUpload請求傳入的分區數目以滿足小於等於分區數目的預期值。
調整InitiateMultipartUpload請求設定的資料大小和分區大小以允許Complete更大的分區數目。