使用上の注意
サイズが1 GBを超えるオブジェクトをコピーするには、UploadPartCopyを呼び出します。 1 GB未満のオブジェクトをコピーする方法の詳細については、「CopyObject」をご参照ください。
UploadPartCopyを呼び出すときは、次の項目に注意してください。
ソースバケットと宛先バケットは同じリージョンにある必要があります。
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 |
OSS SDK
次のプログラミング言語およびプラットフォームのOSS SDKを使用して、UploadPartCopyを呼び出すことができます。
エラーコード
エラーコード | HTTPステータスコード | 説明 |
OperationNotSupported | 400 | UploadPartCopyは、アーカイブバケット内のオブジェクトには適用できません。 |