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

Object Storage Service:UploadPartCopy

最終更新日:Feb 27, 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エンコードされている必要があります。 x-oss-copy-source-version-idがレスポンスで返され、ソースオブジェクトのバージョンIDが示されます。

versionIdが指定されておらず、ソースオブジェクトの現在のバージョンが削除マーカーである場合、OSSは404 not Foundを返します。 リクエストにバージョンIDが指定されており、ソースオブジェクトの指定されたバージョンが削除マーカーである場合、OSSは400 Bad requestを返します。

リクエスト構文

PUT /ObjectName?partNumber=PartNumber&uploadId=UploadId HTTP/1.1
ホスト: BucketName.oss-cn-hangzhou.aliyuncs.com
日付: GMT日付
コンテンツ-長さ: サイズ
権限付与: 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

Integer

ソースオブジェクトからコピーするバイトの範囲。 たとえば、バイト数を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
    ホスト: oss-example.oss-cn-hangzhou.aliyuncs.com
    コンテンツ-長さ: 6291456
    日付: 2月22日水2012 08:32:21 GMT
    権限付与: OSS qn6qrrqxo2oawuk53otf ****:J/lICfXEvPmmSW86bBAfMmUm ****
    x-oss-copy-source: /oss-example/src-object
    x-oss-copy-source-range: バイト=100-6291756 

    レスポンスの例

    HTTP/1.1 200 OK
    サーバー: AliyunOSS
    接続: キープアライブ
    x-oss-request-id: 3e6aba62-1eae-d246-6118-8ff42cd0 ****
    日付: 7月17日木曜日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: 27b: 54.000Z </LastModified>
        <ETag>"5B3C1A2E053D763E1B002CC607C5 ****"</ETag>
    </CopyPartResult> 
  • バケットのバージョン管理が有効になっている場合、UploadPartCopyのversionIdを指定するサンプルリクエスト

    PUT /multipart.data?partNumber=2&uploadId=63C06A5CFF6F4AE4A6BB3AD7F01C **** HTTP/1.1
    ホスト: oss-example.oss-cn-hangzhou.aliyuncs.com
    日付: 4月2019日火曜日07:01:56 GMT
    権限付与: OSS 6jftttm6x6san0ewtgyk ****:v/sJFtYvg7DTa4pJ2AMShZL/****
    x-oss-copy-source: /oss-example/src-object?versionId=CAEQMxiBgMC0vs6D0BYiIGJiZWRjOTRjNTg0NzQ1MTRiN2Y1OTYxMTdkYjQ0 **** 

    レスポンスの例

    HTTP/1.1 200 OK
    サーバー: AliyunOSS
    接続: キープアライブ
    x-oss-copy-source-version-id: CAEQMxiBgMC0vs6D0BYiIGJiZWRjOTRjNTg0NzQ1MTRiN2Y1OTYxMTdkYjQ0 ****
    x-oss-request-id: 5CAC4364B7AEADE017000660
    日付: 4月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は、アーカイブバケット内のオブジェクトには適用できません。