CopyObject

최신 업데이트:2025-08-25 16:19:37

이 API는 객체 스토리지에 이미 존재하는 객체의 복사본을 생성하는 데 사용됩니다. 이 작업을 수행하려면 wos:PutObject 권한이 필요합니다.

  1. COPY 작업은 GET 작업과 PUT 작업이 결합된 형태로 볼 수 있습니다. 요청 헤더에 x-wos-copy-source를 추가하면, PUT 방식으로 객체를 대상 버킷에 복사할 수 있습니다.
  2. 객체 복사 시 제약 조건(예: etag이 일치할 때만 복사, 지정 시간 전/후에 수정된 경우에만 복사 등)을 적용하려면, x-wos-copy-source-if-match, x-wos-copy-source-if-none-match, x-wos-copy-source-if-unmodified-since, x-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 인코딩되어야 합니다.
타입: String
예시: x-wos-copy-source:/src_bucket/src_object
x-wos-copy-source-if-match 지정 etag 값과 일치할 때만 복사 작업을 수행합니다. 일치하지 않으면 412(Precondition Failed) 반환.
타입: String
타입:x-wos-copy-source-if-match: etag
이 파라미터는 x-wos-copy-source-if-unmodified/modified-since를 제외하고 다른 파라미터와 함께 사용할 수 없습니다.
아니오
x-wos-copy-source-if-none-match 지정 etag 값과 일치하지 않을 때만 복사 작업을 수행합니다. 일치하면 412(Precondition Failed) 반환.
타입: String
타입: x-wos-copy-source-if-none-match: etag
아니오
x-wos-copy-source-if-unmodified-since 이 시간이후로 소스 객체가 수정되지 않았을 경우에만 복사 작업을 수행합니다. 그렇지 않으면 412(Precondition Failed) 반환.
타입: HTTP 시간 문자열 형식
타입:x-wos-copy-source-if-unmodified -since: timestamp
아니오
x-wos-copy-source-if-modified-since 지정된 시간 이후에 소스 객체가 수정된 경우에만 복사 작업을 수행합니다. 그렇지 않으면 412(Precondition Failed) 반환.
타입: HTTP 시간 문자열 형식
타입:x-wos-copy-source-if-modified -since: timestamp
아니오
x-wos-metadata-directive x-wos-meta-*에 지정한 메타데이터로 대상 객체의 메타데이터를 대체(REPLACE)할지, 원본의 메타데이터를 복사만(COPY)할지 지정합니다.
타입: String
예시: x-wos-metadata-directive: COPY
아니오
x-wos-meta-* 사용자 정의 메타데이터입니다. headObject 및 getObjectType의 응답 헤더로 반환됩니다.
타입: String
예시: x-wos-metadata-abc: test
아니오

요청 본문

없음

응답 문법

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 객체가 마지막으로 수정된 시간.
타입: String
ETag 새 객체의 ETag 값.
타입: String

특별 오류

상황 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>
이 문서의 내용이 도움이 되었습니까?
아니오
정상적으로 제출되었습니다.피드백을 주셔서 감사합니다.앞으로도 개선을 위해 노력하겠습니다.