x-oss-copy-sourceヘッダーをUploadPartリクエストに追加して、既存のオブジェクトからデータをコピーしてパーツをアップロードします。
使用上の注意
サイズが1 GBを超えるオブジェクトをコピーするには、UploadPartCopyを呼び出します。 1 GB未満のオブジェクトをコピーする方法の詳細については、「CopyObject」をご参照ください。
UploadPartCopyを呼び出すときは、次の項目に注意してください。
AppendObjectを呼び出してアップロードしたオブジェクトはコピーできません。
ソースバケットと宛先バケットは同じリージョンにある必要があります。
UploadPartCopyを呼び出して部品をアップロードする前に、InitiateMultipartUploadを呼び出して、Object Storage Service (OSS) サーバーによって発行されたアップロードIDを取得する必要があります。
InitiateMultipartUpload操作を呼び出すときにx-oss-server-side-encryptionヘッダーを指定した場合、アップロードされたパーツは暗号化され、x-oss-server-side-encryptionヘッダーはUploadPart応答ヘッダーに含まれます。 x-oss-server-side-encryptionヘッダーの値は、部品のサーバー側暗号化アルゴリズムを示します。 詳細については、「InitiateMultipartUpload」をご参照ください。
マルチパートアップロードタスクでは、最後のパートを除いて、各パートのサイズは100 KBより大きくなければなりません。 UploadPartを呼び出しても、すべてのパーツがアップロードされているわけではなく、OSSが最後のパーツを認識していないため、パーツのサイズは検証されません。 各パーツのサイズは、CompleteMultipartUploadを呼び出した場合にのみ確認されます。
バージョン管理
デフォルトでは、UploadPartCopyは現在のバージョンのオブジェクトからデータをコピーして部品をアップロードします。 特定のバージョンのオブジェクトからデータをコピーするには、x-oss-copy-sourceリクエストヘッダーにversionIdをリクエストのサブ条件として追加します。 x-oss-copy-sourceは、/SourceBucketName/SourceObjectName?versionId=111111の形式で設定できます。
ソースオブジェクトの名前はURLエンコードされている必要があります。 応答には、ソースオブジェクトのバージョンidを示すx-oss-copy-source-version-IDパラメーターが含まれています。
versionIdが指定されておらず、ソースオブジェクトの現在のバージョンが削除マーカーである場合、OSSは404 not Foundを返します。 versionIdがリクエストで指定され、指定されたバージョンのソースオブジェクトが削除マーカーである場合、OSSは400 Bad requestを返します。
構文
PUT /ObjectName?partNumber=PartNumber&uploadId=UploadId HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Content-Length: Size
Authorization: SignatureValue
x-oss-copy-source: /SourceBucketName/SourceObjectName
x-oss-copy-source-range: bytes=first-last
リクエストヘッダー
UploadPartCopyリクエストのリクエストヘッダー (一般的なリクエストヘッダーを除く) を次の表に示します。
ヘッダー | データ型 | 説明 |
x-oss-copy-source | String | ソースオブジェクトにアクセスするアドレス。 ソースオブジェクトを読み取る権限が必要です。 デフォルトでは、このヘッダーは空のままです。 |
x-oss-copy-source-range | String | ソースオブジェクトからコピーするバイトの範囲。 たとえば、バイトを0〜9に設定した場合、OSSはバイト0からバイト9まで合計10バイトを転送します。 デフォルトでは、このヘッダーは空のままです。
|
次の表に、x-oss-copy-sourceで指定されたソースオブジェクトに使用されるリクエストヘッダーを示します。
ヘッダー | データ型 | 説明 |
x-oss-copy-source-if-match | String | データコピー条件。 ソースオブジェクトのETag値が指定されたETag値と同じ場合、OSSはデータをコピーします。 それ以外の場合、OSSは412 Precondition Failedを返します。 デフォルトでは、このヘッダーは空のままです。 |
x-oss-copy-source-if-none-match | String | オブジェクト転送条件。 指定されたETag値がソースオブジェクトのETag値と一致しない場合、OSSはオブジェクトを転送し、OK 200を返します。 それ以外の場合、OSSは304 Not Modifiedを返します。 デフォルトでは、このヘッダーは空のままです。 |
x-oss-copy-source-if-unmodified-since | String | オブジェクト転送条件。 指定された時間がオブジェクトの実際の変更時間以降の場合、OSSはオブジェクトを転送し、OK 200を返します。 それ以外の場合、OSSは412 Precondition Failedを返します。 デフォルトでは、このヘッダーは空のままです。 |
x-oss-copy-source-if-modified-since | String | オブジェクト転送条件。 指定された時刻がオブジェクトの実際の変更時刻よりも早い場合、OSSはオブジェクトを転送し、OK 200を返します。 それ以外の場合、OSSは304 Not Modifiedを返します。 デフォルトでは、このヘッダーは空のままです。 時間形式: ddd、dd MMM yyyy HH:mm:ss GMT。 例: 11月2015日金曜日14:47:53 GMT |
例
リクエストの例
PUT /multipart.data?partNumber=1&uploadId=0004B9895DBBB6EC98E36 HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Content-Length: 6291456 Date: Wed, 22 Feb 2012 08:32:21 GMT Authorization: OSS qn6q**************:77Dv**************** x-oss-copy-source: /oss-example/src-object x-oss-copy-source-range: bytes=100-6291756
通常のレスポンス例
HTTP/1.1 200 OK Server: AliyunOSS Connection: keep-alive x-oss-request-id: 3e6aba62-1eae-d246-6118-8ff42cd0**** Date: Thu, 17 Jul 2014 06:27:54 GMT <?xml version="1.0" encoding="UTF-8"?> <CopyPartResult xmlns="http://doc.oss-cn-hangzhou.aliyuncs.com"> <LastModified>2014-07-17T06:27:54.000Z </LastModified> <ETag>"5B3C1A2E053D763E1B002CC607C5****"</ETag> </CopyPartResult>
UploadPartCopyリクエストでversionIdを指定するサンプルリクエスト
PUT /multipart.data?partNumber=2&uploadId=63C06A5CFF6F4AE4A6BB3AD7F01C**** HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Date: Tue, 09 Apr 2019 07:01:56 GMT Authorization: OSS qn6q**************:77Dv**************** x-oss-copy-source: /oss-example/src-object?versionId=CAEQMxiBgMC0vs6D0BYiIGJiZWRjOTRjNTg0NzQ1MTRiN2Y1OTYxMTdkYjQ0****
通常のレスポンス例
HTTP/1.1 200 OK Server: AliyunOSS Connection: keep-alive x-oss-copy-source-version-id: CAEQMxiBgMC0vs6D0BYiIGJiZWRjOTRjNTg0NzQ1MTRiN2Y1OTYxMTdkYjQ0**** x-oss-request-id: 5CAC4364B7AEADE017000660 Date: Tue, 09 Apr 2019 07:01:56 GMT <?xml version="1.0" encoding="UTF-8"?> <CopyPartResult> <LastModified>2019-04-09T07:01:56.000Z</LastModified> <ETag>"25A9F4ABFCC05743DF6E2C886C56****"</ETag> </CopyPartResult>
OSS SDK
エラーコード
エラーコード | HTTPステータスコード | 説明 |
OperationNotSupported | 400 | UploadPartCopyは、アーカイブバケット内のオブジェクトには適用できません。 |