CopyObject

最終更新日:2025-08-25 16:19:37

このAPIは、オブジェクトストレージ上に既に存在するオブジェクトのコピーを作成するために使用します。実行には IAM 権限 wos:PutObject が必要です。

  1. COPY操作は、GET操作とPUT操作の組み合わせと見ることができます。リクエストヘッダーに x-wos-copy-source を追加することで、PUTメソッドによりオブジェクトのコピーを宛先バケットへ移動できます。
  2. コピーの条件を指定したい場合(例えば、etagが一致する場合や、指定した日時より前後で更新されている場合など)、x-wos-copy-source-if-matchx-wos-copy-source-if-none-matchx-wos-copy-source-if-unmodified-sincex-wos-copy-source-if-modified-since などのリクエストヘッダーを設定してください。
  3. オブジェクトのコピー操作を行うと、メタデータもコピーされます。コピーリクエスト時に新しいメタデータを指定すれば、元のメタデータを上書きできます。

リクエスト構文

PUT /destinationObjectName HTTP/1.1
Host: Bucket.Endpoint
x-wos-copy-source: /sourceBucket/sourceObject
x-wos-copy-source-if-match: etag
x-wos-copy-source-if-none-match: etag
x-wos-copy-source-if-unmodified-since: time_stamp
x-wos-meta-*:metainfo
Authorization: Authorization string
Date: date

URIリクエストパラメータ

なし

リクエストヘッダー

Common Request Headers に加えて、以下のヘッダーを使用できます。

ヘッダー 説明 必須
x-wos-copy-source コピー元のバケット名とオブジェクト名を指定します。この値はURLエンコードする必要があります。
型: 文字列
例: x-wos-copy-source:/src_bucket/src_object
Yes
x-wos-copy-source-if-match x-wos-copy-source-if-match の値がコピー元オブジェクトのetagと一致する場合のみコピー操作が実行されます。それ以外は412(条件付き失敗)が返されます。
型: 文字列
例: x-wos-copy-source-if-match: etag
制約: 他のパラメータとは同時使用できませんが、x-wos-copy-source-if-unmodified/modified-since とは併用可能。
No
x-wos-copy-source-if-none-match x-wos-copy-source-if-none-match の値がコピー元オブジェクトのetagと一致しない場合のみコピー操作が実行されます。一致する場合は412(条件付き失敗)が返されます。
型: 文字列
例: x-wos-copy-source-if-none-match: etag
No
x-wos-copy-source-if-unmodified-since コピー元オブジェクトが指定した日時以降に変更されていなければコピー操作が実行されます。そうでない場合は412(条件付き失敗)が返されます。他のパラメータとは同時使用できませんが、x-wos-copy-source-if-match とは併用可能。
型: HTTP日時文字列(RFC2616形式
例: x-wos-copy-source-if-unmodified-since: timestamp
No
x-wos-copy-source-if-modified-since コピー元オブジェクトが指定した日時を含む以降に変更されていた場合のみコピー操作が実行されます。そうでない場合は412(条件付き失敗)が返されます。他のパラメータとは同時使用できませんが、x-wos-copy-source-if-none-match とは併用可能。
型: HTTP日時文字列(RFC2616形式
例: x-wos-copy-source-if-modified-since: time-stamp
No
x-wos-metadata-directive コピー先オブジェクトのメタデータを、x-wos-meta-* で指定した内容(REPLACE)で上書きするか、コピー元オブジェクトのメタデータをそのまま引き継ぐか(COPY)指定します。
型: 文字列
例: x-wos-metadata-directive: COPY
No
x-wos-meta-* カスタマイズしたメタデータ。headObjectやgetObjectType時のヘッダーとして返されます。
型: 文字列
例: x-wos-metadata-abc : test
No

リクエストボディ

なし

レスポンス構文

HTTP/1.1 status_code
x-wos-request-id: request id
Content-Type: type
Date: date
Content-Length: length
Server: WS-web-server

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CopyObjectResult xmlns=" http://wcs.chinanetcenter.com/document">
    <LastModified>modifiedDate</LastModified>
    <ETag>etagValue</ETag>
</CopyObjectResult>

レスポンスヘッダー

Common Response Headers をご利用ください。

レスポンスボディ

項目名 説明
CopyObjectResult コピーした結果を格納するコンテナ
型: XML
LastModified オブジェクトの最終更新日時
型: 文字列
ETag 新しいオブジェクトのETag値
型: 文字列

特殊エラー

状況 HTTPステータス エラーコード メッセージ
書式エラー(コピー元指定が無い等) 400 Bad Request InvalidArgument Copy Source must mention the source bucket and key: sourcebucket/sourcekey
コピー対象オブジェクトが5GBを超えている 400 Bad Request EntityTooLarge Your proposed copy exceeds the maximum allowed object size.
コピー元・コピー先名が完全一致(かつメタデータ変更なし) 400 Bad Request InvalidRequest This copy request is illegal because it is trying to copy an object to itself without changing the object’s metadata attribute.

PUT /destobject HTTP/1.1
Host: bucket.s3-cn-east-1.wcsapi.com
Date: Sat, 03 Dec 2011 08:48:07 +0000
Authorization: WOS BF6C09F302931425E9A7:2rZR+iaH8xUewvUKuicLhLHpNoU=
x-wos-copy-source: /srcbucket/srcobject

HTTP/1.1 200 OK
x-wos-request-id: 318BC8BC148832E5
Date: Wed, 28 Oct 2009 22:32:00 GMT
Connection: close
Server: WS-Web-Server
<CopyObjectResult>
  <LastModified>2009-10-28T22:32:00</LastModified>
  <ETag>"9b2cf535f27731c974343645a3985328"</ETag>
</CopyObjectResult>