すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:UploadPartCopy

最終更新日:Sep 23, 2024

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-rangeリクエストヘッダーが指定されていない場合、ソースオブジェクト全体がコピーされます。

  • x-oss-copy-source-rangeリクエストヘッダーが指定されている場合、レスポンスにはオブジェクト全体の長さと、この操作でコピーされたバイトの範囲が含まれます。 たとえば、Content-Range: bytes 0〜9/44は、オブジェクト全体の長さが44バイトであり、コピーされるバイトの範囲がバイト0〜バイト9であることを示します。

  • 指定された範囲が範囲規則に準拠していない場合、OSSはオブジェクト全体をコピーし、レスポンスにContent-rangeを含めません。

次の表に、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

次のプログラミング言語およびプラットフォームのOSS SDKを使用して、UploadPartCopyを呼び出すことができます。

エラーコード

エラーコード

HTTPステータスコード

説明

OperationNotSupported

400

UploadPartCopyは、アーカイブバケット内のオブジェクトには適用できません。