UploadPart リクエストに x-oss-copy-source リクエストヘッダーを追加することで、UploadPartCopy 操作を呼び出すことができます。この操作は、既存のオブジェクトからデータをコピーしてパートとしてアップロードします。
注意事項
1 GB を超えるファイルをコピーするには、UploadPartCopy を使用する必要があります。1 GB 未満のファイルを 1 回の操作でコピーするには、「CopyObject」をご参照ください。
UploadPartCopy 操作を使用する際は、次の点にご注意ください:
UploadPartCopy 操作のソースバケットと宛先バケットは、同じリージョンにある必要があります。
この操作を呼び出してパートをアップロードする前に、InitiateMultipartUpload 操作を呼び出して、OSS によって発行されたアップロード ID を取得する必要があります。
InitiateMultipartUpload 操作を呼び出すときに x-oss-server-side-encryption リクエストヘッダーを指定すると、アップロードされたパートは暗号化されます。x-oss-server-side-encryption ヘッダーは、UploadPart 操作のレスポンスで返されます。このヘッダーの値は、パートに使用されるサーバー側暗号化アルゴリズムを示します。詳細については、「InitiateMultipartUpload」をご参照ください。
マルチパートアップロードでは、最後のパートを除くすべてのパートが 100 KB を超えている必要があります。UploadPart 操作は、アップロードされたパートが最後のパートであるかどうかを判断できないため、すぐにパートのサイズをチェックしません。サイズは、CompleteMultipartUpload 操作が呼び出されたときにのみチェックされます。
権限
デフォルトでは、Alibaba Cloud アカウントは完全な権限を持っています。Alibaba Cloud アカウント配下の Resource Access Management (RAM) ユーザーまたは RAM ロールは、デフォルトではいかなる権限も持っていません。Alibaba Cloud アカウントまたはアカウント管理者は、RAM ポリシーまたはバケットポリシーを通じて操作権限を付与する必要があります。
API | アクション | 定義 |
UploadPartCopy |
| 既存のオブジェクトからデータをコピーしてパートをアップロードする際に、ソースオブジェクトのデータを読み取ります。 |
| 既存のオブジェクトからデータをコピーしてパートをアップロードする際に、宛先オブジェクトにデータを書き込みます。 | |
| 既存のオブジェクトからデータをコピーしてパートをアップロードする際に、versionId を通じてオブジェクトのバージョンを指定する場合、指定されたバージョンのソースオブジェクトを読み取るにはこの権限が必要です。 |
バージョニング
デフォルトでは、UploadPartCopy 操作は、既存のオブジェクトの現在のバージョンからデータをコピーしてパートとしてアップロードします。x-oss-copy-source リクエストヘッダーに versionId サブリソースを含めることで、オブジェクトの特定のバージョンからデータをコピーできます。例:x-oss-copy-source : /SourceBucketName/SourceObjectName?versionId=111111。
SourceObjectName は URL エンコードされている必要があります。レスポンスは、コピーされたオブジェクトの versionId を x-oss-copy-source-version-id ヘッダーで返します。
versionId を指定せず、コピーするオブジェクトの現在のバージョンが削除マーカーである場合、OSS は 404 Not Found を返します。versionId を指定して削除マーカーをコピーする場合、OSS は 400 Bad Request を返します。
課金
UploadPartCopy 操作を呼び出す際、ソースオブジェクトが低頻度アクセス (IA) オブジェクトである場合、IA オブジェクトのデータ取得料金が発生します。ソースオブジェクトが RestoreObject 操作を使用して解凍されていないアーカイブオブジェクトであり、バケットでアーカイブオブジェクトのリアルタイムアクセスが有効になっている場合、オブジェクトにアクセスすると、アーカイブオブジェクトのリアルタイムアクセスに対するデータ取得料金が発生します。料金はソースバケットに請求されます。課金の詳細については、「データ処理料金」をご参照ください。
リクエスト構文
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 | コピーするソースオブジェクトの範囲。たとえば、このヘッダーを bytes=0-9 に設定すると、オブジェクトの最初の 10 バイトがコピーされます。 デフォルト値:なし
|
次のリクエストヘッダーは、x-oss-copy-source で指定されたソースオブジェクトに適用されます。
名前 | タイプ | 説明 |
x-oss-copy-source-if-match | String | ソースオブジェクトの ETag が指定された ETag と一致する場合にのみコピー操作が実行されます。それ以外の場合は、412 Precondition Failed エラーが返されます。 デフォルト値:なし |
x-oss-copy-source-if-none-match | String | 指定された ETag 値がオブジェクトの ETag と一致しない場合、ファイルは転送され、`200 OK` レスポンスが返されます。それ以外の場合は、`304 Not Modified` レスポンスが返されます。 デフォルト値:なし |
x-oss-copy-source-if-unmodified-since | String | このヘッダーで指定された時刻がファイルの実際の変更時刻と同じかそれ以降である場合にのみ、ファイルがコピーされ、200 OK が返されます。それ以外の場合は、412 Precondition Failed エラーが返されます。 デフォルト値:なし |
x-oss-copy-source-if-modified-since | String | 指定された時刻がファイルの実際の変更時刻より前である場合にのみ、ファイルがコピーされ、200 OK が返されます。それ以外の場合は、304 Not Modified が返されます。 デフォルト値:なし フォーマット:GMT。例:Fri, 13 Nov 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: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e 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>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: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e 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>
SDK
ossutil コマンドラインインターフェイス
UploadPartCopy 操作に対応する ossutil コマンドについては、「upload-part-copy」をご参照ください。
エラーコード
エラーコード | HTTP ステータスコード | 説明 |
OperationNotSupported | 400 | アーカイブストレージクラスのバケットに対して UploadPartCopy 操作が呼び出されました。 |