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 제약 조건: |
아니요 |
Metadata
|
객체에 설정할 메타데이터 이름-값 쌍을 지정합니다. MetadataDirective가 유형: 문자열 기본값: 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>