CopyObjectは、OSS 内の既存のオブジェクトを別のオブジェクトにコピーするために使用されます。

OSS に PUT 要求を送信し、PUT 要求ヘッダーに “x-oss-copy-source”要素を追加して、コピー元を指定することができます。 OSS は自動的にこれがオブジェクトのコピー操作であると判断し、この操作をサーバー側で直接実行します。 オブジェクトのコピー操作が成功すると、システムは新しいオブジェクト情報を返します。

この操作は、1 GB 未満のファイルに適用されます。 1 GB を超えるファイルをコピーするには、マルチパートアップロード操作を使用する必要があります。 この操作の詳細については、UploadPartCopyを参照してください。

注意:オブジェクトのコピー操作では、ソースバケットとターゲットバケットは同じリージョンになければなりません。

リクエスト構文

  1. PUT /DestObjectName HTTP/1.1Host: DestBucketName.oss-cn-hangzhou.aliyuncs.comDate: GMT DateAuthorization: SignatureValuex-oss-copy-source: /SourceBucketName/SourceObjectName

リクエストヘッダ

名前 説明
x-oss-copy-source String コピー元アドレスを指定します(リクエスタにはソースオブジェクトを読み取る権限が必要です)。

デフォルト:なし

x-oss-copy-source-if-match String ソースオブジェクトの ETag 値がユーザによって提供された ETag 値と同じである場合、COPY 操作が実行され、コード 200 が返されます。 そうでない場合、システムは HTTP エラーコード 412 を返します(前処理に失敗)。 

デフォルト:なし

x-oss-copy-source-if-none-match String ソースオブジェクトの ETag 値がユーザによって提供された ETag 値と同じでない場合、COPY 操作が実行され、コード 200 が返されます。 それ以外の場合、システムは HTTP エラーコード 304 を返します(前処理に失敗)。 

デフォルト:なし

x-oss-copy-source-if-unmodified-since String 受け取ったパラメータで指定された時間がファイルの変更時刻と同じかそれより後の場合、システムはファイルを正常に転送し、200 OK を返します。 そうでない場合、システムは 412 Precondition Failed を返します。 

デフォルト:なし

x-oss-copy-source-if-modified-since String ユーザーが指定した時間後にソースオブジェクトが変更された場合、システムは COPY 操作を実行します。 そうでない場合、システムは 304 HTTP エラーコードを返します(前処理に失敗)。 

デフォルト:なし

x-oss-metadata-directive String 有効な値には、COPY および REPLACE があります。 このパラメータを COPY に設定すると、新しいオブジェクトのメタがソースオブジェクトからコピーされます。 このパラメータを REPLACE に設定すると、ソースオブジェクトのすべてのメタ値が無視され、この要求で指定されたメタ値が使用されます。 このパラメーターが COPY および REPLACE 以外の値に設定されている場合、システムは 400 Bad Request メッセージを返します。 値が COPY の場合、ソースオブジェクトの x-oss-server-side-encryption メタ値はコピーできません。
有効な値:
  • COPY  ( デフォルト )
  • REPLACE
x-oss-server-side-encryption String OSS がターゲットオブジェクトを作成するときのサーバー側エントロピー暗号化アルゴリズムを指定します。

有効な値: AES256 および KMS

注意
KMS 暗号化アルゴリズムを使用するには、コンソールで KMS (キー管理サービス)を有効にする必要があります。 それ以外の場合は、KmsServiceNotenabled エラーコードが報告されます。
x-oss-object-acl String OSS がオブジェクトを作成するときのアクセス許可を指定します。

有効な値: public-readprivatepublic-read-write

レスポンス要素

名前 説明
CopyObjectResult String オブジェクトのコピー結果

デフォルト:なし

ETag String 新しいオブジェクトの ETag 値。

親要素: CopyObjectResult

LastModified String 新しいオブジェクトの最終更新時刻。

親要素: CopyObjectResult

詳細分析

  • オブジェクトのコピー操作を使用して、既存のオブジェクトのメタ情報を変更することができます。
  • ソースオブジェクトアドレスがオブジェクトのコピー操作のターゲットオブジェクトアドレスと同じである場合、システムは x-oss-metadata-directive の値にかかわらず、ソースオブジェクト内のメタ情報を直接置き換えます。
  • OSS では、Copy Object 要求には、4 つの事前判定ヘッダーの任意の数を含めることができます。 関連するロジックの詳細については、Get Object の詳細分析を参照してください。
  • オブジェクトのコピー操作を完了するには、リクエスターがソース・オブジェクトを読み取るための許可を持っていなければなりません。
  • ソースオブジェクトとターゲットオブジェクトは、同じデータセンターに属している必要があります。 それ以外の場合は、エラーコード 403 AccessDenied が返されます。 エラーメッセージは、ターゲットオブジェクトがソースオブジェクトと同じデータセンターに存在しないことです。
  • オブジェクトのコピー操作の課金統計では、ソースオブジェクトのバケットで Get 要求の数が 1 増加し、ターゲットオブジェクトのバケットで Put 要求の数が 1 増加し、それに応じてストレージスペースが追加されます。
  • オブジェクトのコピー操作では、関連するすべての要求ヘッダーは x-oss- から開始されるため、署名文字列に追加する必要があります。
  • オブジェクトのコピー要求で x-oss-server-side-encryption ヘッダーが指定されていて、その値( AES256 )が有効な場合、オブジェクトのコピー操作が実行された後にサーバーオブジェクトでソースオブジェクトが暗号化されます。オブジェクトはサーバー側で暗号化されています。 さらに、Copy Object 応答ヘッダーには、x-oss-server-side-encryption が含まれています。この値は、対象オブジェクトの暗号化アルゴリズムに設定されています。 このターゲットオブジェクトがダウンロードされると、応答ヘッダーには、このターゲットオブジェクトの暗号化アルゴリズムに値が設定された x-oss-server-side-encryption も含まれます。 オブジェクトのコピー操作で x-oss-server-side-encryption 要求ヘッダーが指定されていない場合、ソースオブジェクトがサーバー側で暗号化されていても、サーバー側で暗号化されていないデータが対象オブジェクトです。
  • Copy Object 要求の x-oss-metadata-directive ヘッダーが COPY (デフォルト値)に設定されている場合、システムはソースオブジェクトの x-oss-server-side-encryption 値をコピーしません。 つまり、オブジェクトのコピー要求に応じて x-oss-server-side-encryption が指定されている場合のみ、対象オブジェクトはサーバー側で暗号化されます。
  • COPY 操作で x-oss-server-side-encryption 要求ヘッダーが指定されていて、要求値が AES256 ではない場合は、エラーコード “InvalidEncryptionAlgorithmError” でエラー 400 が戻されます。
  • コピーするファイルのサイズが 1 GB を超える場合は、エラーコード “EntityTooLarge” でエラー 400 が返されます。
  • この操作は、追加オブジェクトによって作成されたオブジェクトのコピーには使用できません。
  • ファイルタイプがシンボリックリンクの場合は、シンボリックリンクのみをコピーします。

リクエスト例:

  1. PUT /copy_oss.jpg HTTP/1.1Host: oss-example.oss-cn-hangzhou.aliyuncs.comDate: Fri, 24 Feb 2012 07:18:48 GMTx-oss-copy-source: /oss-example/oss.jpgAuthorization: OSS qn6qrrqxo2oawuk53otfjbyc:gmnwPKuu20LQEjd+iPkL259A+n0=

リターン例:

  1. HTTP/1.1 200 OKx-oss-request-id: 559CC9BDC755F95A64485981Content-Type: application/xmlContent-Length: 193Connection: keep-aliveDate: Fri, 24 Feb 2012 07:18:48 GMTServer: AliyunOSS<? xml version=”1.0 encoding=”UTF-8”? ><CopyObjectResult xmlns=”http://doc.oss-cn-hangzhou.aliyuncs.com”> <LastModified>Fri, 24 Feb 2012 07:18:48 GMT</LastModified> <ETag>”5B3C1A2E053D763E1B002CC607C5A0FE”</ETag></CopyObjectResult>