

# 캐시 동작 설정
<a name="DownloadDistValuesCacheBehavior"></a>

캐시 동작을 설정하면 웹사이트에 있는 파일의 지정된 URL 경로 패턴에 대해 다양한 CloudFront 기능을 구성할 수 있습니다. 예를 들어, 하나의 캐시 동작이 CloudFront용 오리진 서버로 사용 중인 웹 서버의 `.jpg` 디렉터리에 있는 전체 `images` 파일에 적용될 수 있습니다. 각 캐시 동작에 대해 구성 가능한 기능에는 다음이 포함됩니다.
+ 경로 패턴
+ CloudFront 배포에 대해 다수의 오리진을 구성한 경우, CloudFront에서 요청을 전달하려는 대상 오리진
+ 쿼리 문자열을 오리진에 전달할지 여부
+ 지정된 파일에 액세스하기 위해 서명된 URL이 필요한지 여부
+ 사용자가 HTTPS를 사용하여 그러한 파일에 액세스하도록 지정할지 여부
+ 오리진에서 파일에 추가한 `Cache-Control` 헤더의 값과 관계없이 그러한 파일이 CloudFront 캐시에 머무르는 최소 시간

새 배포를 만든 경우, 배포를 만들 때 지정한 오리진에 모든 요청을 자동으로 전달하는 기본 캐시 동작에 대해 설정을 지정합니다. 배포를 만든 후에는 경로 패턴과 일치하는 객체(예: `*.jpg`)에 대한 요청을 받았을 때 CloudFront에서 응답하는 방식을 정의하는 추가 캐시 동작을 만들 수 있습니다. 추가 캐시 동작을 만든 경우 기본 캐시 동작은 항상 마지막으로 처리됩니다. 나머지 캐시 동작은 CloudFront 콘솔에 나열한 순서에 따라 처리됩니다. 또는 CloudFront API를 사용하는 경우 배포에 대한 `DistributionConfig` 요소에 나열한 순서대로 처리됩니다. 자세한 내용은 [경로 패턴](#DownloadDistValuesPathPattern) 단원을 참조합니다.

캐시 동작을 만들 때 CloudFront에서 객체를 가져오려는 대상 오리진을 하나만 지정합니다. CloudFront에서 오리진 전체로부터 객체를 배포하려는 경우, 기본 캐시 동작을 포함해 캐시 동작은 최소한 보유한 오리진의 수만큼 있어야 합니다. 예를 들어 두 개의 오리진이 있는 경우 기본 캐시 동작이 하나뿐이라면, 이 기본 캐시 동작으로 인해 CloudFront는 두 개의 오리진 중 하나에서 객체를 가져오지만, 나머지 오리진은 사용되지 않습니다.

현재 하나의 배포에 추가할 수 있는 캐시 동작의 최대 수를 살펴보고 더 높은 할당량(이전에는 제한이라고 함)을 요청하려면, [배포의 일반 할당량](cloudfront-limits.md#limits-web-distributions) 단원을 참조하세요.

**Topics**
+ [

## 경로 패턴
](#DownloadDistValuesPathPattern)
+ [

## 오리진 또는 오리진 그룹
](#DownloadDistValuesTargetOriginId)
+ [

## 뷰어 프로토콜 정책
](#DownloadDistValuesViewerProtocolPolicy)
+ [

## 허용되는 HTTP 메서드
](#DownloadDistValuesAllowedHTTPMethods)
+ [

## 필드 레벨 암호화 구성
](#DownloadDistValuesFieldLevelEncryption)
+ [

## 캐싱된 HTTP 메서드
](#DownloadDistValuesCachedHTTPMethods)
+ [

## HTTP/2를 통한 gRPC 요청 허용
](#enable-grpc-distribution)
+ [

## 선택한 요청 헤더 기반의 캐시
](#DownloadDistValuesForwardHeaders)
+ [

## 허용 목록 헤더
](#DownloadDistValuesAllowlistHeaders)
+ [

## 객체 캐싱
](#DownloadDistValuesObjectCaching)
+ [

## Minimum TTL
](#DownloadDistValuesMinTTL)
+ [

## Maximum TTL
](#DownloadDistValuesMaxTTL)
+ [

## 기본 TTL
](#DownloadDistValuesDefaultTTL)
+ [

## 쿠키 전달
](#DownloadDistValuesForwardCookies)
+ [

## 허용 목록 쿠키
](#DownloadDistValuesAllowlistCookies)
+ [

## 쿼리 문자열 전달 및 캐싱
](#DownloadDistValuesQueryString)
+ [

## 쿼리 문자열 허용 목록
](#DownloadDistValuesQueryStringAllowlist)
+ [

## Smooth Streaming
](#DownloadDistValuesSmoothStreaming)
+ [

## 최종 사용자 액세스 제한(서명된 URL 또는 서명된 쿠키 사용)
](#DownloadDistValuesRestrictViewerAccess)
+ [

## 신뢰할 수 있는 서명자
](#DownloadDistValuesTrustedSigners)
+ [

## AWS 계정 번호
](#DownloadDistValuesAWSAccountNumbers)
+ [

## 자동으로 객체를 압축
](#DownloadDistValuesCompressObjectsAutomatically)
+ [

## CloudFront 이벤트
](#DownloadDistValuesEventType)
+ [

## Lambda 함수 ARN
](#DownloadDistValuesLambdaFunctionARN)
+ [

## 본문 포함
](#include-body)

## 경로 패턴
<a name="DownloadDistValuesPathPattern"></a>

경로 패턴(예: `images/*.jpg`)은 이 캐시 동작을 적용하려는 요청을 지정합니다. CloudFront가 최종 사용자 요청을 받으면, 요청된 경로는 배포에 나열된 캐시 동작의 순서대로 경로 패턴과 비교됩니다. 첫 번째 일치 결과로 해당 요청에 적용되는 캐시 동작이 결정됩니다. 예를 들어, 다음과 같은 3개의 경로 패턴과 순서로 3개의 캐시 동작이 있다고 가정합니다.
+ `images/*.jpg`
+ `images/*`
+ `*.gif`

**참고**  
`/images/*.jpg`와 같이 경로 패턴 시작 부분에 슬래시(/)를 포함하도록 선택할 수 있습니다. 선행 / 포함 여부와 상관 없이 CloudFront의 동작은 동일합니다. 경로 시작 부분에 /를 지정하지 않으면 이 문자가 자동으로 암시되며, CloudFront는 선행 /가 있든 없든 경로를 동일하게 처리합니다. 예를 들어, CloudFront는 `/*product.jpg`와 `*product.jpg`를 동일하게 취급합니다.

`images/sample.gif` 파일에 대한 요청은 첫 번째 경로 패턴을 충족하지 않으므로 연결된 캐시 동작은 이 요청에 적용되지 않습니다. 이 파일은 두 번째 경로 패턴을 만족하므로 세 번째 경로 패턴과도 일치하더라도 두 번째 경로 패턴과 연결된 캐시 동작이 이 요청에 적용됩니다.

**참고**  
새 배포를 만들 때 기본 캐시 동작에 대한 **경로 패턴**의 값은 **\$1**(모든 파일)로 설정되고 이는 변경할 수 없습니다. 이 값에 따라 CloudFront에서는 객체에 대한 모든 요청을 [오리진 도메인](DownloadDistValuesOrigin.md#DownloadDistValuesDomainName) 필드에서 지정한 오리진으로 전달합니다. 객체에 대한 요청이 나머지 캐시 동작 중 어느 것의 경로 패턴과도 일치하지 않는 경우, CloudFront에서는 기본 캐시 동작에서 지정한 동작을 적용합니다.

**중요**  
경로 패턴과 그 순서를 주의 깊게 정의하지 않으면 사용자에게 콘텐츠에 대한 원치 않는 액세스 권한을 주게 될 수 있습니다. 예를 들어, 하나의 요청이 두 캐시 동작의 경로 패턴과 일치한다고 가정합니다. 첫 번째 캐시 동작은 서명된 URL이 필요하고 두 번째 캐시 동작은 서명된 URL이 필요하지 않습니다. CloudFront에서는 첫 번째 일치 결과와 연결된 캐시 동작을 처리하므로 사용자는 서명된 URL을 사용하지 않고도 객체에 액세스할 수 있습니다.

MediaPackage 채널을 사용하는 경우, 오리진의 엔드포인트 유형에 대해 정의하는 캐시 동작을 위한 특정 경로 패턴을 포함시켜야 합니다. 예를 들어 DASH 엔드포인트의 경우 **경로 패턴**에 `*.mpd`를 입력합니다. 자세한 정보와 특정 지침은 [AWS Elemental MediaPackage를 사용하여 포맷된 라이브 비디오 제공](live-streaming.md#live-streaming-with-mediapackage) 단원을 참조하십시오.

사용자가 지정한 경로는 지정된 디렉터리와 이 디렉터리의 하위 디렉터리에 있는 모든 파일에 대한 요청에 적용됩니다. CloudFront에서는 경로 패턴을 평가할 때 쿼리 문자열 또는 쿠키를 고려하지 않습니다. 예를 들어, `images` 디렉터리에 `product1` 및 `product2` 하위 디렉터리가 포함되어 있으면, 경로 패턴 `images/*.jpg`는 모든 `images`, `images/product1`, `images/product2` 디렉터리의 모든 .jpg 파일에 대한 요청에 적용됩니다. 다른 캐시 동작을 `images/product1` 및 `images` 디렉터리의 파일이 아닌 `images/product2` 디렉터리의 파일에 적용하려는 경우, `images/product1`에 대한 별도의 캐시 동작을 만들어 `images` 디렉터리에 대한 캐시 동작보다 위로(이전으로) 해당 캐시 동작을 이동합니다.

다음 와일드카드 문자를 경로 패턴에 사용할 수 있습니다.
+ `*`는 0개 이상의 문자에 해당합니다.
+ `?`는 정확히 1문자에 해당합니다.

다음 예는 와일드카드 문자가 어떻게 작동하는지 보여줍니다.


****  

| 경로 패턴 | 경로 패턴과 일치하는 파일 | 
| --- | --- | 
|  `*.jpg`  |  모든 .jpg 파일  | 
|  `images/*.jpg`  |  `images` 디렉터리와 `images` 디렉터리의 하위 디렉터리에 있는 모든 .jpg 파일  | 
|  `a*.jpg`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/DownloadDistValuesCacheBehavior.html)  | 
|  `a??.jpg`  |  `a`로 시작하여 나머지는 정확히 두 문자가 오는 파일 이름을 지닌 모든 .jpg 파일(예: `ant.jpg`, `abe.jpg`)  | 
|  `*.doc*`  |  파일 이름 확장명이 `.doc`로 시작하는 모든 .jpg 파일(예: `.doc`, `.docx`, `.docm` 파일). 이 경우, `*.doc?` 경로 패턴을 사용할 수 없습니다. 이 경로 패턴은 `.doc` 파일에 대한 요청에 적용할 수 없기 때문입니다. `?` 와일드카드 문자는 정확히 한 문자를 대체합니다.  | 

경로 패턴의 최대 길이는 255자입니다. 이 값에는 다음 문자 중 어느 것이든 포함할 수 있습니다.
+ A\$1Z, a\$1z

  경로 패턴은 대소문자를 구분하므로 경로 패턴 `*.jpg`는 `LOGO.JPG` 파일에 적용되지 않습니다.
+ 0\$19
+ \$1 - . \$1 \$1 / \$1 " ' @ : \$1
+ &, `&amp;`로 처리되고 반환됨

### 경로 정규화
<a name="path-normalization"></a>

CloudFront는 [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986#section-6)과 일치하는 URI 경로를 정규화한 다음 경로를 올바른 캐시 동작과 일치시킵니다. 캐시 동작이 일치하면 CloudFront는 원본 URI 경로를 오리진에 보냅니다. 일치하지 않으면 요청이 기본 캐시 동작과 일치하도록 선택할 수 있습니다.

다중 슬래시 (`//`) 또는 마침표 (`..`) 와 같은 일부 문자는 정규화되어 경로에서 제거됩니다. 이렇게 하면 CloudFront가 의도한 캐시 동작과 일치시키기 위해 사용하는 URL을 변경할 수 있습니다.

**Example 예제**  
캐시 동작의 `/a/b*` 및 `/a*` 경로를 지정합니다.  
+ `/a/b?c=1` 경로를 보내는 뷰어는 `/a/b*` 캐시 동작과 일치할 것입니다.
+ `/a/b/..?c=1` 경로를 보내는 뷰어는 `/a*` 캐시 동작과 일치합니다.

경로가 정규화되는 문제를 해결하려면 요청 경로나 캐시 동작의 경로 패턴을 업데이트하면 됩니다.

## 오리진 또는 오리진 그룹
<a name="DownloadDistValuesTargetOriginId"></a>

이 설정은 기존 배포에 대한 캐시 동작을 생성하거나 업데이트하는 경우에만 적용됩니다.

기존 오리진 또는 오리진 그룹의 값을 입력합니다. 이를 통해 요청(예: https://example.com/logo.jpg)이 캐시 동작의 경로 패턴(예: \$1.jpg)이나 기본 캐시 동작의 경로 패턴(\$1)과 일치할 때 CloudFront에서 요청을 라우팅하려는 오리진 또는 오리진 그룹을 식별합니다.

## 뷰어 프로토콜 정책
<a name="DownloadDistValuesViewerProtocolPolicy"></a>

최종 사용자가 CloudFront 엣지 로케이션의 콘텐츠를 액세스하는 데 사용하게 하려는 프로토콜 정책을 선택합니다.
+ **HTTP 및 HTTPS**: 최종 사용자는 두 프로토콜 모두를 사용할 수 있습니다.
+ **Redirect HTTP to HTTPS**(HTTP를 HTTPS로 재지정): 최종 사용자는 두 프로토콜 모두 사용할 수 있지만, HTTP 요청은 자동으로 HTTPS 요청으로 리디렉션됩니다.
+ **HTTPS Only**(HTTPS만 해당): 최종 사용자는 HTTPS를 사용하는 경우에만 콘텐츠에 액세스할 수 있습니다.

자세한 내용은 [뷰어와 CloudFront 간의 통신에 HTTPS 요구](using-https-viewers-to-cloudfront.md) 단원을 참조합니다.

## 허용되는 HTTP 메서드
<a name="DownloadDistValuesAllowedHTTPMethods"></a>

CloudFront에서 오리진을 처리하고 전달하기 위한 HTTP 메서드를 지정합니다.
+ **GET, HEAD:** 오리진에서 객체를 가져오거나 객체 헤더를 가져오기 위해서만 CloudFront를 사용할 수 있습니다.
+ **GET, HEAD, OPTIONS:** 오리진에서 객체를 가져오거나 객체 헤더를 가져오기 위해, 또는 오리진 서버에서 지원되는 옵션 목록을 가져오기 위해서만 CloudFront를 사용할 수 있습니다.
+ **GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE:** CloudFront를 사용하여 객체를 추가, 업데이트, 삭제하고 가져올 수 있으며 객체 헤더를 가져올 수 있습니다. 또한 웹 양식에서 데이터를 제출하는 등의 기타 POST 작업을 수행할 수 있습니다.
**참고**  
워크로드에서 gRPC를 사용하는 경우 **GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE**를 선택해야 합니다. gRPC 워크로드에는 `POST` 메서드가 필요합니다. 자세한 내용은 [CloudFront 배포에 gRPC 사용](distribution-using-grpc.md) 섹션을 참조하세요.  
CloudFront에서는 `GET` 및 `HEAD` 요청과 선택적으로 `OPTIONS` 요청에 대한 응답을 캐싱합니다. `OPTIONS` 요청에 대한 응답은 `GET` 및 `HEAD` 요청에 대한 응답과 별도로 캐시됩니다(`OPTIONS` 메서드는 `OPTIONS` 요청에 대한 [캐시 키](understanding-the-cache-key.md)에 포함됨). CloudFront에서는 다른 메서드를 사용하는 요청에 대한 응답을 캐시하지 않습니다.

**중요**  
**GET, HEAD, OPTIONS** 또는 **GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE**를 선택하는 경우 사용자가 수행하길 원치 않는 작업을 수행하지 못하도록 Amazon S3 버킷 또는 사용자 지정 오리진에 대한 액세스를 제한해야 할 수 있습니다. 다음 예에서는 액세스를 제한하는 방법을 설명합니다.  
**배포에 대한 오리진으로 Amazon S3를 사용하려는 경우:** CloudFront 오리진 액세스 제어를 만들어 Amazon S3 콘텐츠에 대한 액세스를 제한하고 이 오리진 액세스 제어에 적절한 사용 권한을 부여해야 합니다. 예를 들어, `PUT`을 사용할 의도로 이러한 메서드*만* 허용 및 전달하도록 CloudFront를 구성한 경우, `DELETE` 요청을 적절히 처리하도록 Amazon S3 버킷 정책을 구성해야 합니다. 자세한 내용은 [Amazon S3 오리진에 대한 액세스 제한](private-content-restricting-access-to-s3.md) 단원을 참조합니다.
**사용자 지정 오리진을 사용하는 경우:** 모든 메서드를 처리하도록 오리진 서버를 구성합니다. 예를 들어, `POST`를 사용할 의도로 이러한 메서드만** 허용 및 전달하도록 CloudFront를 구성한 경우, `DELETE` 요청을 적절히 처리하도록 오리진 서버를 구성해야 합니다.

## 필드 레벨 암호화 구성
<a name="DownloadDistValuesFieldLevelEncryption"></a>

특정 데이터 필드에 필드 레벨 암호화를 적용하고자 하는 경우 드롭다운 목록에서 필드 레벨 암호화 구성을 선택합니다.

자세한 내용은 [필드 수준 암호화를 사용하여 민감한 데이터 보호](field-level-encryption.md) 섹션을 참조하세요.

## 캐싱된 HTTP 메서드
<a name="DownloadDistValuesCachedHTTPMethods"></a>

최종 사용자가 `OPTIONS` 요청을 제출할 때 CloudFront에서 오리진의 응답을 캐싱할지 여부를 지정합니다. CloudFront에서는 `GET` 및 `HEAD` 요청에 대한 응답을 항상 캐싱합니다.

## HTTP/2를 통한 gRPC 요청 허용
<a name="enable-grpc-distribution"></a>

배포에서 gRPC 요청을 허용할지 여부를 지정합니다. gRPC를 사용하려면 다음 설정을 선택합니다.
+ **[허용된 HTTP 메서드](#DownloadDistValuesAllowedHTTPMethods)**에서 **GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE** 메서드를 선택합니다. gRPC에는 `POST` 메서드가 필요합니다.
+ `POST` 메서드를 선택한 후 나타나는 gRPC 확인란을 선택합니다.
+ **[지원되는 HTTP 버전](DownloadDistValuesGeneral.md#DownloadDistValuesSupportedHTTPVersions)**에서 **HTTP/2**를 선택합니다.

자세한 내용은 [CloudFront 배포에 gRPC 사용](distribution-using-grpc.md) 섹션을 참조하세요.

## 선택한 요청 헤더 기반의 캐시
<a name="DownloadDistValuesForwardHeaders"></a>

CloudFront에서 지정된 헤더의 값을 기반으로 객체를 캐싱할지 여부를 지정합니다.
+ **없음(캐싱 향상)(None (improves caching))** - CloudFront가 헤더 값을 기반으로 객체를 캐싱하지 않습니다.
+ **허용 목록** - CloudFront가 지정된 헤더의 값만을 기반으로 객체를 캐싱합니다. **허용 목록 헤더**를 사용하여 CloudFront에서 캐싱의 기준으로 설정할 헤더를 선택합니다.
+ **모두(All)** - CloudFront가 이 캐시 동작과 연결된 객체를 캐싱하지 않습니다. 대신 CloudFront는 각 요청을 오리진에 전송합니다. (Amazon S3 오리진에는 권장하지 않음)

어떤 옵션을 선택하든 상관없이, CloudFront는 오리진에 특정 헤더를 전달하고 전달한 헤더에 따라 작업을 수행합니다. CloudFront가 헤더 전달을 처리하는 방법에 대한 자세한 내용은 [HTTP 요청 헤더 및 CloudFront 동작(사용자 지정 및 Amazon S3 오리진)](RequestAndResponseBehaviorCustomOrigin.md#request-custom-headers-behavior) 단원을 참조하세요.

요청 헤더를 사용하여 CloudFront에서 캐싱을 구성하는 방법에 대한 자세한 내용은 [요청 헤더 기반의 콘텐츠 캐싱](header-caching.md) 단원을 참조하세요.

## 허용 목록 헤더
<a name="DownloadDistValuesAllowlistHeaders"></a>

이 설정은 **선택한 요청 헤더 기반의 캐시**에 대해 **허용 목록**을 선택한 경우에만 적용됩니다.

객체를 캐싱할 때 CloudFront에서 고려할 헤더를 지정합니다. 사용 가능한 헤더 목록에서 헤더를 선택하고 **추가**를 선택합니다. 사용자 지정 헤더를 전달하려면 필드에 헤더 이름을 입력하고 **Add Custom**(사용자 지정 항목 추가)을 선택합니다.

현재 각 캐시 동작에 대해 허용 목록을 작성할 수 있는 헤더의 최대 수를 살펴보고 더 높은 할당량(이전에는 제한이라고 함)을 요청하려면, [헤더에 대한 할당량](cloudfront-limits.md#limits-custom-headers) 단원을 참조하세요.

## 객체 캐싱
<a name="DownloadDistValuesObjectCaching"></a>

오리진 서버에서 객체에 `Cache-Control` 헤더를 추가하여 CloudFront 캐시에 객체가 머무르는 시간을 제어하는 경우와, `Cache-Control` 값을 변경하지 않으려는 경우 **오리진 캐시 헤더 사용(Use Origin Cache Headers)**을 선택합니다.

`Cache-Control` 헤더와 관계없이 CloudFront 캐시에 객체가 머무르는 최소 및 최대 시간과 객체에서 `Cache-Control` 헤더가 누락된 경우 CloudFront 캐시에 객체가 머무르는 기본 시간을 지정하려면 **사용자 지정(Customize)**을 선택합니다. 그런 다음 **최소 TTL**, **기본 TTL** 및 **최대 TTL** 필드에서 값을 지정합니다.

자세한 내용은 [콘텐츠가 캐시에 유지되는 기간(만료) 관리](Expiration.md) 단원을 참조합니다.

## Minimum TTL
<a name="DownloadDistValuesMinTTL"></a>

객체가 업데이트되었는지 여부를 확인하기 위해 CloudFront에서 오리진으로 다른 요청을 전송하기 전에 객체를 CloudFront 캐시에 유지할 최소 시간(초)을 지정합니다.

**주의**  
최소 TTL이 0보다 큰 경우 오리진 헤더에 `Cache-Control: no-cache`, `no-store` 또는 `private` 지시문이 있더라도 CloudFront는 적어도 캐시 정책의 최소 TTL에 지정된 기간 동안 콘텐츠를 캐싱합니다.

자세한 내용은 [콘텐츠가 캐시에 유지되는 기간(만료) 관리](Expiration.md) 섹션을 참조하세요.

## Maximum TTL
<a name="DownloadDistValuesMaxTTL"></a>

객체가 업데이트되었는지 여부를 확인하도록 CloudFront에서 오리진에 쿼리하기 전에 CloudFront 캐시에서 객체를 머무르게 하려는 최대 시간을 초 단위로 지정합니다. **최대 TTL**에 지정하는 값은 오리진이 객체에 `Cache-Control max-age`, `Cache-Control s-maxage` 또는 `Expires` 등의 HTTP 헤더를 추가할 경우에만 적용됩니다. 자세한 내용은 [콘텐츠가 캐시에 유지되는 기간(만료) 관리](Expiration.md) 단원을 참조합니다.

**최대 TTL**의 값을 지정하려면 **Object Caching**(객체 캐싱) 설정의 **Customize**(사용자 지정) 옵션을 선택해야 합니다.

**최대 TTL**의 기본값은 31536000초(1년)입니다. **최소 TTL** 또는 **기본 TTL**의 값을 31536000초 이상으로 변경할 경우 **최대 TTL**의 기본값은 **기본 TTL**의 값으로 변경됩니다.

## 기본 TTL
<a name="DownloadDistValuesDefaultTTL"></a>

객체가 업데이트되었는지 여부를 결정하도록 CloudFront가 오리진에 다른 요청을 전달하기 전에 객체를 CloudFront 캐시에 유지하려는 기본 시간을 초 단위로 지정합니다. **기본 TTL**에 지정하는 값은 오리진이 객체에 `Cache-Control max-age`, `Cache-Control s-maxage`, `Expires` 등의 HTTP 헤더를 추가하지 *않는* 경우에만 적용됩니다. 자세한 내용은 [콘텐츠가 캐시에 유지되는 기간(만료) 관리](Expiration.md) 단원을 참조합니다.

**기본 TTL**에 값을 지정하려면 **Object Caching**(객체 캐싱) 설정에 대해 **Customize**(사용자 지정) 옵션을 선택해야 합니다.

**기본 TTL**의 기본값은 86400초(1일)입니다. **Minimum TTL(최소 TTL)**의 값을 86,400초 이상으로 변경할 경우 **Default TTL(기본 TTL)**의 기본값은 **Minimum TTL(최소 TTL)**의 값으로 변경됩니다.

## 쿠키 전달
<a name="DownloadDistValuesForwardCookies"></a>

**참고**  
Amazon S3 오리진의 경우 이 옵션은 웹 사이트 엔드포인트로 구성된 버킷에만 적용됩니다.

CloudFront에서 쿠키를 오리진 서버로 전달할지 여부와 전달할 쿠키(전달하는 경우)를 지정합니다. 선택한 쿠키(쿠키의 허용 목록)만 전달하도록 선택한 경우, 쿠키 이름을 **허용 목록 쿠키** 필드에 입력합니다. **모두(All)**를 선택하는 경우 CloudFront에서는 애플리케이션에서 사용하는 쿠키 수와 관계없이 모든 쿠키를 전달합니다.

Amazon S3에서는 쿠키를 처리하지 않으며 오리진에 쿠키를 전달함으로써 캐싱 가능성이 줄어듭니다. Amazon S3 오리진에 요청을 전달하는 캐시 동작의 경우 **쿠키 전달(Forward Cookies)**에 대해 **없음(None)**을 선택합니다.

오리진으로 쿠키를 전달하는 것에 대한 자세한 내용은 [쿠키 기반의 콘텐츠 캐싱](Cookies.md) 단원을 참조합니다.

## 허용 목록 쿠키
<a name="DownloadDistValuesAllowlistCookies"></a>

**참고**  
Amazon S3 오리진의 경우 이 옵션은 웹 사이트 엔드포인트로 구성된 버킷에만 적용됩니다.

**쿠키 전달** 목록의 **허용 목록**을 선택하는 경우, **허용 목록 쿠키** 필드에 이 캐시 동작에 대해 CloudFront에서 오리진 서버에 전달하려는 쿠키 이름을 입력합니다. 각 쿠키 이름을 새 줄에 입력합니다.

다음 와일드카드를 지정하여 쿠키 이름을 지정할 수 있습니다.
+ **\$1**는 쿠키 이름의 0개 이상의 문자에 해당합니다.
+ **?**는 쿠키 이름의 정확히 1문자에 해당합니다.

예를 들어, 다음과 같은 쿠키 이름이 포함된 객체에 대한 최종 사용자 요청을 가정합니다.

`userid_member-number`

각각의 사용자는 *member-number*에 대한 고유한 값을 갖습니다. 이 경우에는 CloudFront에서 각 멤버별로 개별 버전의 객체를 캐싱하려 합니다. 모든 쿠키를 오리진에 전달함으로써 이를 달성할 수는 있지만, 최종 사용자 요청에 CloudFront에서 캐싱하길 원치 않는 쿠키가 일부 포함됩니다. 또는, 다음 값을 쿠키 이름으로 지정할 수 있습니다. 이렇게 하면 CloudFront에서 해당 오리진에 `userid_`로 시작하는 모든 쿠키를 전달합니다.

`userid_*`

현재 각 캐시 동작에 대해 허용 목록을 작성할 수 있는 쿠키 이름의 최대 수를 살펴보고 더 높은 할당량(이전에는 제한이라고 함)을 요청하려면, [쿠키에 대한 할당량(레거시 캐시 설정)](cloudfront-limits.md#limits-allowlisted-cookies) 단원을 참조하세요.

## 쿼리 문자열 전달 및 캐싱
<a name="DownloadDistValuesQueryString"></a>

CloudFront는 쿼리 문자열 파라미터 값을 기준으로 콘텐츠의 다른 버전을 캐싱할 수 있습니다. 다음 옵션 중 하나를 선택합니다.

**None (Improves Caching)**  
오리진에서 쿼리 문자열 파라미터 값과 상관 없이 객체의 동일한 버전을 반환하는 경우 이 옵션을 선택합니다. 이렇게 하면 CloudFront에서 캐시로부터 요청을 제공할 수 있는 가능성이 높아지고, 그에 따라 성능이 향상되며 오리진에 걸리는 부하가 줄어듭니다.

**모두 전달, 허용 목록 기반으로 캐싱**  
오리진 서버에서 하나 이상의 쿼리 문자열 파라미터를 기준으로 다른 버전의 객체를 반환할 경우 이 옵션을 선택합니다. 그런 다음 [쿼리 문자열 허용 목록](#DownloadDistValuesQueryStringAllowlist) 필드에서 CloudFront가 이 캐싱의 기준으로 사용하도록 하려는 파라미터를 지정합니다.

**Forward all, cache based on all**  
오리진 서버에서 모든 쿼리 문자열 파라미터를 기준으로 다른 버전의 객체를 반환할 경우 이 옵션을 선택합니다.

성능 향상을 포함하여 쿼리 문자열 파라미터를 기준으로 하는 캐싱에 대한 자세한 내용은 [쿼리 문자열 파라미터 기반의 콘텐츠 캐싱](QueryStringParameters.md) 단원을 참조하십시오.

## 쿼리 문자열 허용 목록
<a name="DownloadDistValuesQueryStringAllowlist"></a>

이 설정은 [쿼리 문자열 전달 및 캐싱](#DownloadDistValuesQueryString)에 **모두 전달, 허용 목록 기반으로 캐싱**을 선택한 경우에만 적용됩니다. CloudFront가 캐싱 기반으로 사용할 쿼리 문자열 파라미터를 지정할 수 있습니다.

## Smooth Streaming
<a name="DownloadDistValuesSmoothStreaming"></a>

Microsoft Smooth Streaming 포맷의 미디어 파일을 배포하려는데 IIS 서버가 없으면 **예**를 선택합니다.

Microsoft Smooth Streaming 포맷의 미디어 파일을 배포하기 위한 오리진으로 사용하려는 Microsoft IIS 서버가 있거나, Smooth Streaming 미디어 파일을 배포하지 않으려는 경우 **아니요**를 선택합니다.

**참고**  
**예**를 지정한 경우에도 콘텐츠가 **경로 패턴** 값과 일치하는 경우 이 캐시 동작을 사용하여 다른 콘텐츠를 배포할 수 있습니다.

자세한 내용은 [Microsoft Smooth Streaming용 온디맨드 비디오 구성](on-demand-video.md#on-demand-streaming-smooth) 단원을 참조합니다.

## 최종 사용자 액세스 제한(서명된 URL 또는 서명된 쿠키 사용)
<a name="DownloadDistValuesRestrictViewerAccess"></a>

이 캐시 동작의 `PathPattern`과 일치하는 객체에 대한 요청에 퍼블릭 URL을 사용하려는 경우 **아니요**를 선택합니다.

이 캐시 동작의 `PathPattern`과 일치하는 객체에 대한 요청에 서명된 URL을 사용하려는 경우 **예**를 선택합니다. 그런 다음, 서명된 URL 생성에 사용하려는 AWS 계정을 지정합니다. 이러한 계정은 신뢰할 수 있는 서명자라고도 합니다.

신뢰할 수 있는 서명자에 대한 자세한 내용은 [서명된 URL 및 서명된 쿠키를 생성할 수 있는 서명자 지정](private-content-trusted-signers.md) 단원을 참조합니다.

## 신뢰할 수 있는 서명자
<a name="DownloadDistValuesTrustedSigners"></a>

이 설정은 **최종 사용자 액세스 제한(서명된 URL 또는 서명된 쿠키 사용)**에 대해 **예**를 선택한 경우에만 적용됩니다.

이 캐시 동작에 대해 신뢰할 수 있는 서명자로 사용하려는 AWS 계정을 선택합니다.
+ **셀프**: 현재 AWS Management Console에 신뢰할 수 있는 서명자로 로그인된 계정을 사용합니다. 현재 IAM 사용자로 로그인되어 있는 경우, 연결된 AWS 계정이 신뢰할 수 있는 서명자로 추가됩니다.
+ **계정 지정(Specify Accounts):** 신뢰할 수 있는 서명자에 대한 계정 번호를 [**AWS 계정 번호(Account Numbers)**] 필드에 입력합니다.

서명된 URL을 생성하려면 AWS 계정에 하나 이상의 활성 CloudFront 키 페어가 있어야 합니다.

**중요**  
콘텐츠 배포에 이미 사용 중인 배포를 업데이트하려는 경우, 서명된 URL 생성을 시작할 준비가 되었을 때만 신뢰할 수 있는 서명자를 추가합니다. 배포에 신뢰할 수 있는 서명자를 추가한 후에, 사용자는 서명된 URL을 사용하여 이 캐시 동작의 `PathPattern`과 일치하는 객체에 액세스해야 합니다.

## AWS 계정 번호
<a name="DownloadDistValuesAWSAccountNumbers"></a>

이 설정은 **신뢰할 수 있는 서명자**에 대해 **계정 지정**을 선택한 경우에만 적용됩니다.

현재 계정에 추가로 또는 현재 계정 대신에 AWS 계정을 사용하여 서명된 URL을 생성하려는 경우, 이 필드에 한 줄당 AWS 계정 번호 하나씩을 입력합니다. 다음 사항에 유의하세요.
+ 지정하는 계정에는 하나 이상의 활성 CloudFront 키 페어가 있어야 합니다. 자세한 내용은 [서명자에 대해 키 페어 생성](private-content-trusted-signers.md#private-content-creating-cloudfront-key-pairs) 단원을 참조합니다.
+ IAM 사용자에 대해 CloudFront 키 페어를 생성할 수 없으므로 IAM 사용자는 신뢰할 수 있는 서명자로 사용할 수 없습니다.
+ 계정의 AWS 계정 번호를 가져오는 방법에 대한 자세한 내용은 **AWS 계정 Management 참조 안내서의 [AWS 계정 식별자 보기](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html)를 참조하세요.
+ 현재 계정에 대한 계정 번호를 입력하면 CloudFront에서는 **셀프** 확인란을 자동으로 선택하고 **AWS 계정 번호** 목록에서 계정 번호를 삭제합니다.

## 자동으로 객체를 압축
<a name="DownloadDistValuesCompressObjectsAutomatically"></a>

최종 사용자가 압축된 콘텐츠를 지원하는 경우 CloudFront가 특정 유형의 파일을 자동 압축하도록 하려면 **예(Yes)**를 선택합니다. CloudFront가 콘텐츠를 압축하면 파일 크기가 더 작아지므로 다운로드 속도가 빨라지고 웹 페이지는 사용자에게 더 빨리 렌더링됩니다. 자세한 내용은 [압축된 파일 제공](ServingCompressedFiles.md) 단원을 참조합니다.

## CloudFront 이벤트
<a name="DownloadDistValuesEventType"></a>

이 설정은 **Lambda 함수 연결**에 적용됩니다.

다음 CloudFront 이벤트가 하나 이상 발생할 때 Lambda 함수를 실행하도록 선택할 수 있습니다.
+ CloudFront가 최종 사용자의 요청을 수신할 때(최종 사용자 요청)
+ CloudFront가 오리진에 요청을 전달하기 전(오리진 요청)
+ CloudFront가 오리진의 응답을 수신할 때(오리진 응답)
+ CloudFront가 최종 사용자에게 응답을 반환하기 전(최종 사용자 응답)

자세한 내용은 [함수를 트리거할 이벤트를 선택합니다.](lambda-how-to-choose-event.md) 단원을 참조합니다.

## Lambda 함수 ARN
<a name="DownloadDistValuesLambdaFunctionARN"></a>

이 설정은 **Lambda 함수 연결**에 적용됩니다.

트리거를 추가할 Lambda 함수의 Amazon 리소스 이름(ARN)을 지정합니다. 함수의 ARN을 가져오는 방법에 대한 자세한 내용은 [CloudFront 콘솔을 사용한 트리거 추가](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-edge-add-triggers.html#lambda-edge-add-triggers-cf-console) 절차의 1단계를 참조하세요.

## 본문 포함
<a name="include-body"></a>

이 설정은 **Lambda 함수 연결**에 적용됩니다.

자세한 내용은 [본문 포함](lambda-generating-http-responses.md#lambda-include-body-access)을 참조하세요.