View a markdown version of this page

CopyObject(SOAP API) - Amazon Simple Storage Service

CopyObject(SOAP API)

참고

Amazon S3용 SOAP API는 신규 고객에게 제공되지 않으며 2025년 8월 31일에 서비스 종료(EOL)됩니다. REST API 또는 AWS SDK를 사용하는 것이 좋습니다.

설명

소스 객체의 키 및 버킷과 대상의 키 및 버킷을 지정하면 CopyObject 작업이 객체의 복사본을 생성합니다.

객체를 복사할 때 모든 메타데이터를 보존(기본값)하거나 새 메타데이터를 지정할 수 있습니다. 그러나 ACL은 보존되지 않으며 요청을 하는 사용자에 대해 private으로 설정됩니다. 기본 ACL 설정을 재정의하려면 복사 요청을 생성할 때 새 ACL을 지정합니다. 자세한 내용은 ACL 사용을 참조하십시오.

모든 복사 요청은 인증되어야 합니다. 또한 소스 객체에 대한 읽기 액세스 권한과 대상 버킷에 대한 쓰기 액세스 권한이 있어야 합니다. 자세한 내용은 인증 액세스 사용을 참조하세요.

Etag가 일치하는지 여부 또는 객체가 지정된 날짜 이전 또는 이후에 수정되었는지 여부와 같은 특정 조건에서만 객체를 복사하려면 요청 파라미터 CopySourceIfUnmodifiedSince, CopyIfUnmodifiedSince, CopySourceIfMatch 또는 CopySourceIfNoneMatch를 사용합니다.

참고

대형 객체를 복사하기 위해 SOAP 스택 소켓 제한 시간을 구성해야 할 수 있습니다.

구문 요청

<CopyObject xmlns="http://bucket_name.s3.amazonaws.com/2006-03-01"> <SourceBucket>source_bucket</SourceBucket> <SourceObject>source_object</SourceObject> <DestinationBucket>destination_bucket</DestinationBucket> <DestinationObject>destination_object</DestinationObject> <MetadataDirective>{REPLACE | COPY}</MetadataDirective> <Metadata> <Name>metadata_name</Name> <Value>metadata_value</Value> </Metadata> ... <AccessControlList> <Grant> <Grantee xsi:type="user_type"> <ID>user_id</ID> <DisplayName>display_name</DisplayName> </Grantee> <Permission>permission</Permission> </Grant> ... </AccessControlList> <CopySourceIfMatch>etag</CopySourceIfMatch> <CopySourceIfNoneMatch>etag</CopySourceIfNoneMatch> <CopySourceIfModifiedSince>date_time</CopySourceIfModifiedSince> <CopySourceIfUnmodifiedSince>date_time</CopySourceIfUnmodifiedSince> <AWSAccessKeyId>AWSAccessKeyId</AWSAccessKeyId> <Timestamp>TimeStamp</Timestamp> <Signature>Signature</Signature> </CopyObject>

요청 파라미터

이름 설명 필수
SourceBucket

소스 버킷의 이름입니다.

유형: 문자열

기본값: None

제약 조건: 유효한 소스 버킷.

SourceKey

소스 객체의 키 이름입니다.

유형: 문자열

기본값: None

제약 조건: READ 액세스 권한이 있는 유효한 소스 객체의 키.

DestinationBucket

대상 버킷의 이름입니다.

유형: 문자열

기본값: None

제약 조건: 대상 버킷에 대한 WRITE 액세스 권한이 있어야 합니다.

DestinationKey

대상 객체의 키입니다.

유형: 문자열

기본값: None

제약 조건: 대상 버킷에 대한 WRITE 액세스 권한이 있어야 합니다.

MetadataDirective

메타데이터가 소스 객체에서 복사되는지 아니면 요청에 제공된 메타데이터로 대체되는지 지정합니다.

유형: 문자열

기본값: COPY

유효한 값: COPY | REPLACE

제약 조건: COPY 또는 REPLACE 이외의 값은 즉시 오류가 발생합니다. MetadataDirective 헤더를 지정하고 해당 값을 REPLACE로 설정하지 않으면 객체를 자체로 복사할 수 없습니다.

아니요
Metadata

객체에 설정할 메타데이터 이름-값 쌍을 지정합니다. MetadataDirective가 COPY로 설정된 경우 모든 메타데이터가 무시됩니다.

유형: 문자열

기본값: None

제약 조건: 없음.

아니요
AccessControlList

이메일 주소 또는 정식 사용자 ID를 기준으로 사용자에게 액세스 권한을 부여합니다.

유형: 문자열

기본값: None

제약 조건: 없음

아니요
CopySourceIfMatch

객체의 엔터티 태그(ETag)가 지정된 태그와 일치하면 객체를 복사하고, 그렇지 않으면 PreconditionFailed를 반환합니다.

유형: 문자열

기본값: None

제약 조건: 없음. Etag가 일치하지 않으면 객체가 복사되지 않습니다.

아니요
CopySourceIfNoneMatch

객체의 엔터티 태그(ETag)가 지정된 Etag와 다르면 객체를 복사하고, 그렇지 않으면 오류를 반환합니다.

유형: 문자열

기본값: None

제약 조건: 없음.

아니요
CopySourceIfUnmodifiedSince

객체가 지정된 시간 이후에 수정되지 않았으면 객체를 복사하고, 그렇지 않으면 PreconditionFailed를 반환합니다.

유형: 날짜/시간

기본값: None

아니요
CopySourceIfModifiedSince

객체가 지정된 시간 이후에 수정되었으면 객체를 복사하고, 그렇지 않으면 오류를 반환합니다.

유형: 날짜/시간

기본값: None

아니요

Response Syntax

<CopyObjectResponse xmlns="http://bucket_name.s3.amazonaws.com/2006-03-01"> <CopyObjectResponse> <ETag>"etag"</ETag> <LastModified>timestamp</LastModified> </CopyObjectResponse> </CopyObjectResponse>

Response Elements

다음은 응답 요소의 목록입니다.

참고

SOAP API는 추가 공백을 반환하지 않습니다. 추가 공백은 REST API에서만 반환됩니다.

이름 설명
Etag

새 객체의 etag를 반환합니다. ETag는 객체의 콘텐츠에 대한 변경 사항만 반영하고 메타데이터에 대한 변경을 반영하지 않습니다.

유형: 문자열

상위 항목: CopyObjectResult

LastModified

객체가 마지막으로 수정된 날짜를 반환합니다.

유형: 문자열

상위 항목: CopyObjectResult

일반 응답 요소에 대한 자세한 내용은 REST 오류 응답 헤더 사용을 참조하세요.

특수 오류

이 작업에는 특수 오류가 없습니다. Amazon S3 오류에 관한 일반 정보는 오류 코드 목록 섹션을 참조하세요.

예제

이 예제는 메타데이터를 유지하면서 flotsam 버킷의 pacific 객체를 jetsam 버킷의 atlantic 객체로 복사합니다.

샘플 요청

<CopyObject xmlns="http://doc.s3.amazonaws.com/2006-03-01"> <SourceBucket>pacific</SourceBucket> <SourceObject>flotsam</SourceObject> <DestinationBucket>atlantic</DestinationBucket> <DestinationObject>jetsam</DestinationObject> <AWSAccessKeyId>AKIAIOSFODNN7EXAMPLE</AWSAccessKeyId> <Timestamp>2008-02-18T13:54:10.183Z</Timestamp> <Signature>Iuyz3d3P0aTou39dzbq7RrtSFmw=</Signature> </CopyObject>

샘플 응답

<CopyObjectResponse xmlns="http://doc.s3.amazonaws.com/2006-03-01"> <CopyObjectResponse> <ETag>"828ef3fdfa96f00ad9f27c383fc9ac7f"</ETag> <LastModified>2008-02-18T13:54:10.183Z</LastModified> </CopyObjectResponse> </CopyObjectResponse>

이 예제에서는 wonderland 버킷의 'tweedledee' 객체를 wonderland 버킷의 'tweedledum' 객체로 복사하여 해당 메타데이터를 대체합니다.

샘플 요청

<CopyObject xmlns="http://doc.s3.amazonaws.com/2006-03-01"> <SourceBucket>wonderland</SourceBucket> <SourceObject>tweedledee</SourceObject> <DestinationBucket>wonderland</DestinationBucket> <DestinationObject>tweedledum</DestinationObject> <MetadataDirective >REPLACE</MetadataDirective > <Metadata> <Name>Content-Type</Name> <Value>text/plain</Value> </Metadata> <Metadata> <Name>relationship</Name> <Value>twins</Value> </Metadata> <AWSAccessKeyId>AKIAIOSFODNN7EXAMPLE</AWSAccessKeyId> <Timestamp>2008-02-18T13:54:10.183Z</Timestamp> <Signature>Iuyz3d3P0aTou39dzbq7RrtSFmw=</Signature> </CopyObject>

샘플 응답

<CopyObjectResponse xmlns="http://doc.s3.amazonaws.com/2006-03-01"> <CopyObjectResponse> <ETag>"828ef3fdfa96f00ad9f27c383fc9ac7f"</ETag> <LastModified>2008-02-18T13:54:10.183Z</LastModified> </CopyObjectResponse> </CopyObjectResponse>

관련 리소스