

# 조건부 읽기를 사용하여 메타데이터를 기반으로 객체를 검색하거나 복사하는 방법
<a name="conditional-reads"></a>

조건부 읽기를 사용하면 읽기 요청에 헤더를 추가하여 S3 작업에 사전 조건을 추가할 수 있습니다. 이러한 사전 조건이 충족되지 않을 경우 읽기 요청이 실패합니다.

`GET`, `HEAD` 또는 `COPY` 요청에 대한 조건부 읽기를 사용하여 해당 메타데이터에 기반한 객체만 반환할 수 있습니다.

객체를 업로드하는 경우 Amazon S3는 S3만 수정할 수 있는 시스템 제어 메타데이터를 생성합니다. 엔터티 태그(ETag)와 Last-Modified를 시스템 제어 메타데이터의 예로 들 수 있습니다. 객체의 ETag는 객체의 특정 버전을 나타내는 문자열입니다. Last-Modified 날짜는 객체의 생성 날짜 또는 최종 수정 날짜 중 가장 최근 날짜를 나타내는 메타데이터입니다.

조건부 읽기를 사용하면 객체의 ETag 또는 최종 수정 날짜를 기준으로 객체를 반환할 수 있습니다. 요청에 ETag 값을 지정하고 ETag 값이 일치하는 경우에만 객체를 반환할 수 있습니다. 이렇게 하면 객체의 특정 버전만 반환하거나 복사할 수 있습니다. 읽기 요청에서 Last-Modified 값을 지정하고 입력한 날짜 이후에 해당 객체가 수정된 경우에만 객체를 반환할 수 있습니다.

## 지원되는 API
<a name="conditional-read-apis"></a>

다음 S3 API는 조건부 읽기 사용을 지원합니다.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)

다음 헤더를 사용하여 엔터티 태그(ETag) 또는 마지막 수정 날짜에 따라 객체를 반환할 수 있습니다. ETag와 Last-Modified 등의 객체 메타데이터에 대한 자세한 내용은 [시스템 정의 객체 메타데이터](UsingMetadata.md#SysMetadata) 섹션을 참조하세요.

**[https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)**  

+ `If-Match` - ETag가 제공된 것과 일치하는 경우에만 객체를 반환합니다.
+ `If-Modified-Since` - 지정된 시간 이후에 수정된 경우에만 객체를 반환합니다.
+ `If-None-Match` - ETag가 제공된 것과 일치하지 않는 경우에만 객체를 반환합니다.
+ `If-Unmodified-Since` - 지정된 시간 이후에 수정되지 않은 경우에만 객체를 반환합니다.

이러한 헤더, 반환된 오류, S3가 단일 요청에서 여러 조건부 헤더를 처리하는 순서에 대한 자세한 내용은 Amazon Simple Storage Service API 참조의 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) 섹션을 참조하세요.

**[https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)**  

+ `If-Match` - ETag가 제공된 것과 일치하는 경우에만 객체를 반환합니다.
+ `If-Modified-Since` - 지정된 시간 이후에 수정된 경우에만 객체를 반환합니다.
+ `If-None-Match` - ETag가 제공된 것과 일치하지 않는 경우에만 객체를 반환합니다.
+ `If-Unmodified-Since` - 지정된 시간 이후에 수정되지 않은 경우에만 객체를 반환합니다.

이러한 헤더, 반환된 오류, S3가 단일 요청에서 여러 조건부 헤더를 처리하는 순서에 대한 자세한 내용은 Amazon Simple Storage Service API 참조의 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html) 섹션을 참조하세요.

**[https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)**  

+ `x-amz-copy-source-if-match` - ETag가 제공된 것과 일치하는 경우에만 소스 객체를 복사합니다.
+ `x-amz-copy-source-if-modified-since` - 지정된 시간 이후에 수정된 경우에만 소스 객체를 복사합니다.
+ `x-amz-copy-source-if-none-match` - ETag가 제공된 것과 일치하지 않는 경우에만 소스 객체를 복사합니다.
+ `x-amz-copy-source-if-unmodified-since` - 지정된 시간 이후에 수정되지 않은 경우에만 소스 객체를 복사합니다.
+ `If-Match` - ETag가 제공된 객체와 일치하는 경우에만 객체를 복사합니다. `If-Match`는 ETag 값을 문자열로 예상합니다.
+ `If-None-Match` - ETag가 제공된 것과 일치하지 않는 경우에만 객체를 복사합니다. `If-None-Match`는 '\$1'(별표) 문자를 예상합니다.

이러한 헤더, 반환된 오류, S3가 단일 요청에서 여러 조건부 헤더를 처리하는 순서에 대한 자세한 내용은 Amazon Simple Storage Service API 참조의 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) 섹션을 참조하세요.