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で指定されたソースオブジェクトに使用されるリクエストヘッダーを示します。
ヘッダー | データ型 | 説明 |
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
エラーコード
エラーコード | HTTPステータスコード | 説明 |
OperationNotSupported | 400 | UploadPartCopyは、アーカイブバケット内のオブジェクトには適用できません。 |