オブジェクトのすべてのパートがアップロードされた後、オブジェクトのマルチパートアップロードタスクを完了します。
使用上の注意
CompleteMultipartUpload 操作を呼び出すときは、各パートのフラグメント番号とエンティティタグ (ETag) を含む、すべての有効なパートの完全なリストを提供する必要があります。Object Storage Service (OSS) は、パートのリストを受信した後、各パートの有効性を1つずつ検証します。すべてのパートが検証されると、OSS はこれらのパートを完全なオブジェクトに結合します。
各パートのサイズを確認する
CompleteMultipartUpload 操作を呼び出すと、OSS は最後のパートを除く各パートのサイズが 100 KB 以上であるかどうかを確認し、パートリストで提供される各パートのフラグメント番号と ETag を検証します。したがって、パートがアップロードされると、クライアントはパートのフラグメント番号だけでなく、サーバーから返されたパートの ETag 値も記録する必要があります。
リクエストを処理する
OSS が CompleteMultipartUpload リクエストを処理するには、しばらく時間がかかる場合があります。この期間中にクライアントが OSS から切断された場合、OSS はリクエストの処理を続行します。
PartNumber
CompleteMultipartUpload 操作を呼び出すと、OSS は PartNumber の値を検証します。
PartNumber の有効値は 1 ~ 10000 です。リクエストにリストされているフラグメント番号は連続していない場合がありますが、昇順でソートする必要があります。たとえば、最初の部分のフラグメント番号が 1 の場合、2 番目の部分のフラグメント番号は 5 にすることができます。
UploadId
1 つのオブジェクトは、独立したアップロード ID を持つ複数のアップロードタスクによってアップロードできます。1 つのアップロードタスクが完了すると、そのアップロード ID は無効になりますが、他のアップロードタスクのアップロード ID は影響を受けません。
x-oss-server-side-encryption
InitiateMultipartUpload リクエストで x-oss-server-side-encryption ヘッダーが指定されている場合、このヘッダーは CompleteMultipartUpload リクエストへのレスポンスで返されます。レスポンスの x-oss-server-side-encryption ヘッダーの値は、OSS サーバーでオブジェクトを暗号化するために使用されるメソッドを示します。
バージョン管理
オブジェクトがアップロードされるバケットに対してバージョン管理が有効になっている場合、CompleteMultipartUpload 操作を呼び出して、オブジェクトのマルチパートアップロードタスクを完了できます。この場合、OSS はオブジェクトに一意のバージョン ID を生成し、レスポンスで x-oss-version-id ヘッダーとしてバージョン ID を返します。
権限
デフォルトでは、Alibaba Cloud アカウントにはフル権限があります。Alibaba Cloud アカウントの RAM ユーザーまたは RAM ロールには、デフォルトでは権限がありません。Alibaba Cloud アカウントまたはアカウント管理者は、RAM ポリシーまたはバケットポリシーを通じて操作権限を付与する必要があります。
API | アクション | 定義 |
CompleteMultipartUpload |
| 複数のパートを 1 つのオブジェクトにマージします。 |
| 複数のパートを 1 つのオブジェクトにマージするときに、x-oss-tagging を使用してオブジェクトタグを指定する場合、この権限が必要です。 |
リクエスト構文
POST /ObjectName?uploadId=UploadId HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Content-Length: Size
Authorization: Signature
<CompleteMultipartUpload>
<Part>
<PartNumber>PartNumber</PartNumber>
<ETag>ETag</ETag>
</Part>
...
</CompleteMultipartUpload>
リクエストパラメーター
CompleteMultipartUpload リクエストで encoding-type パラメーターを設定できます。OSS は、指定されたエンコーディングタイプを使用して、レスポンスのオブジェクト名をエンコードします。
パラメーター | タイプ | 説明 |
encoding-type | String | レスポンスのオブジェクト名のエンコーディングタイプ。URL エンコーディングのみがサポートされています。 オブジェクト名には、UTF-8 でエンコードされた文字を含めることができます。ただし、XML 1.0 標準を使用して、ASCII 値が 0 ~ 10 の文字など、制御文字を解析することはできません。このパラメーターを設定して、レスポンスのオブジェクト名をエンコードできます。 デフォルトでは、このヘッダーは空のままです。 有効値: url。 |
リクエストヘッダー
ヘッダー | タイプ | 必須 | 説明 |
x-oss-forbid-overwrite | String | いいえ | CompleteMultipartUpload 操作を呼び出すときに、同じオブジェクト名を持つオブジェクトを上書きするかどうかを指定します。
説明
|
x-oss-complete-all | String | いいえ | 現在のアップロード ID を使用してアップロードされたすべてのパートをリストするかどうかを指定します。 有効値: yes。
|
Host や Date など、CompleteMultipartUpload リクエストに含まれる一般的なリクエストヘッダーの詳細については、「一般的な HTTP ヘッダー」をご参照ください。
リクエスト要素
要素 | タイプ | 説明 |
CompleteMultipartUpload | コンテナー | CompleteMultipartUpload リクエストのコンテンツを格納するコンテナー。 子ノード: Part。 親ノード: なし。 |
ETag | String | パートがアップロードされた後に OSS によって返される ETag 値。 親ノード: Part。 |
Part | コンテナー | アップロードされたパートを格納するコンテナー。 子ノード: ETag および PartNumber。 親ノード: CompleteMultipartUpload。 |
PartNumber | Integer | パートの数。 親ノード: Part。 |
レスポンス要素
要素 | タイプ | 説明 |
Bucket | String | 解凍するオブジェクトを含むバケットの名前。 親ノード: CompleteMultipartUploadResult。 |
CompleteMultipartUploadResult | コンテナー | CompleteMultipartUpload リクエストの結果を格納するコンテナー。 子ノード: Bucket、Key、ETag、および Location。 親ノード: なし。 |
ETag | String | オブジェクトの作成時に生成される ETag。ETag は、オブジェクトのコンテンツを識別するために使用されます。 CompleteMultipartUpload 操作を呼び出すことによってオブジェクトが作成される場合、ETag 値はオブジェクトコンテンツの MD5 ハッシュではなく、特定のルールに基づいて計算された一意の値です。 説明 オブジェクトの ETag を使用して、オブジェクトコンテンツが変更されているかどうかを確認できます。ただし、データ整合性を検証するには、オブジェクトの ETag 値ではなく、オブジェクトの MD5 ハッシュを使用することをお勧めします。 親ノード: CompleteMultipartUploadResult。 |
Location | String | アップロードされたオブジェクトにアクセスするために使用される URL。 親ノード: CompleteMultipartUploadResult。 |
Key | String | アップロードされたオブジェクトの名前。 親ノード: CompleteMultipartUploadResult。 |
EncodingType | String | レスポンスのオブジェクト名のエンコーディングタイプ。このパラメーターがリクエストで指定されている場合、オブジェクト名はレスポンスでエンコードされます。 親ノード: コンテナー。 |
例
バージョン管理されていないバケット内のオブジェクトのマルチパートアップロードタスクを完了する
リクエストの例
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: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e <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>
成功レスポンスの例
HTTP/1.1 200 OK Server: AliyunOSS Content-Length: 329 Content-Type: Application/xml Connection: keep-alive x-oss-request-id: 594f0751-3b1e-168f-4501-4ac71d21**** Date: Fri, 24 Feb 2012 10:19:18 GMT <?xml version="1.0" encoding="UTF-8"?> <CompleteMultipartUploadResult xmlns="http://doc.oss-cn-hangzhou.aliyuncs.com"> <EncodingType>url</EncodingType> <Location>http://oss-example.oss-cn-hangzhou.aliyuncs.com /multipart.data</Location> <Bucket>oss-example</Bucket> <Key>multipart.data</Key> <ETag>"B864DB6A936D376F9F8D3ED3BBE540****"</ETag> </CompleteMultipartUploadResult>
バージョン管理されたバケット内のオブジェクトの ACL を変更する
リクエストの例
POST /multipart.data?uploadId=63C06A5CFF6F4AE4A6BB3AD7F01C**** HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Content-Length: 223 Date: Tue, 09 Apr 2019 07:01:56 GMT Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e <CompleteMultipartUpload> <Part> <PartNumber>1</PartNumber> <ETag>"25A9F4ABFCC05743DF6E2C886C56****"</ETag> </Part> <Part> <PartNumber>5</PartNumber> <ETag>"25A9F4ABFCC05743DF6E2C886C56****"</ETag> </Part> </CompleteMultipartUpload>
成功レスポンスの例
HTTP/1.1 200 OK Server: AliyunOSS Content-Length: 314 Content-Type: Application/xml Connection: keep-alive x-oss-version-id: CAEQMxiBgID6v86D0BYiIDc3ZDI0YTBjZGQzYjQ2Mjk4OWVjYWNiMDljYzhlN**** x-oss-request-id: 5CAC4364B7AEADE017000662 Date: Tue, 09 Apr 2019 07:01:56 GMT <?xml version="1.0" encoding="UTF-8"?> <CompleteMultipartUploadResult> <Location>http://oss-example.oss-cn-hangzhou.aliyuncs.com/multipart.data</Location> <Bucket>oss-example</Bucket> <Key>multipart.data</Key> <ETag>"097DE458AD02B5F89F9D0530231876****"</ETag> </CompleteMultipartUploadResult>
OSS SDK
次のプログラミング言語の OSS SDK を使用して、CompleteMultipartUpload 操作を呼び出すことができます。
ossutil
CompleteMultipartUpload 操作に対応する ossutil コマンドについては、「complete-multipart-upload」をご参照ください。
エラーコード
エラーコード | HTTP ステータスコード | 説明 |
InvalidDigest | 400 | リクエストの Content-MD5 値が、OSS によって計算された MD5 ハッシュと異なります。データ転送中のエラーを防ぐために、リクエストに Content-MD5 値を含めることができます。OSS は、アップロードされたデータの MD5 ハッシュを計算し、リクエストの Content-MD5 値と比較します。 |
FileAlreadyExists | 409 | 考えられる原因:
|