

# CloudFront와 Amazon S3 오리진 간의 통신에 HTTPS 요구
<a name="using-https-cloudfront-to-s3-origin"></a>

오리진이 Amazon S3 버킷인 경우 CloudFront와 통신을 위해 HTTPS를 사용하는 옵션은 버킷을 사용하는 방식에 따라 달라집니다. 웹 사이트 엔드포인트로 Amazon S3 버킷이 구성되어 있는 경우, Amazon S3에서 해당 구성으로 HTTPS 연결을 지원하지 않으므로 HTTPS를 사용하여 오리진과 통신하도록 CloudFront를 구성할 수 없습니다.

오리진이 HTTPS 통신을 지원하는 Amazon S3 버킷일 경우 CloudFront는 뷰어가 요청을 전송하는 데 사용된 프로토콜을 사용하여 S3로 요청을 전달합니다. [프로토콜(사용자 지정 오리진만 해당)](DownloadDistValuesOrigin.md#DownloadDistValuesOriginProtocolPolicy) 설정의 기본 설정은 **최종 사용자와 일치(Match Viewer)**이며 변경할 수 없습니다. 그러나 Amazon S3 오리진에 대해 오리진 액세스 제어(OAC)를 사용 설정하면 CloudFront와 Amazon S3 간에 사용되는 통신은 사용자가 어떻게 설정하는지에 따라 달라집니다. 자세한 내용은 [새 오리진 액세스 제어 생성](private-content-restricting-access-to-s3.md#create-oac-overview-s3) 섹션을 참조하세요.

CloudFront와 Amazon S3 간의 통신에 HTTPS를 요구하려면, **최종 사용자 프로토콜 정책(Viewer Protocol Policy)** 값을 **Redirect HTTP to HTTPS(HTTP를 HTTPS로 재지정)** 또는 **HTTPS Only(HTTPS만)**로 변경해야 합니다. 이 단원의 나머지 절차에서는 CloudFront 콘솔을 사용하여 **최종 사용자 프로토콜 정책(Viewer Protocol Policy)** 값을 변경하는 방법을 설명합니다. CloudFront API를 사용하여 배포용 `ViewerProtocolPolicy` 요소를 업데이트하는 자세한 내용은 *Amazon CloudFront API 참조*의 [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html)을 참조하세요.

HTTPS 통신을 지원하는 Amazon S3 버킷과 함께 HTTPS를 사용하면 Amazon S3가 SSL/TLS 인증서를 제공하므로 사용자가 제공할 필요가 없습니다.

## Amazon S3 오리진에 대해 HTTPS 요구
<a name="configure-cloudfront-HTTPS-S3-origin"></a>

다음 절차에서는 CloudFront에서 Amazon S3 오리진에 대해 HTTPS를 요구하도록 구성하는 방법을 알아봅니다.<a name="using-https-cloudfront-to-s3-origin-procedure"></a>

**CloudFront에서 Amazon S3 오리진에 대해 HTTPS를 요구하도록 구성하려면**

1. AWS Management Console에 로그인한 다음 [https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)에서 CloudFront 콘솔을 엽니다.

1. CloudFront 콘솔의 상단 창에서 업데이트할 배포의 ID를 선택합니다.

1. **동작** 탭에서 업데이트할 캐시 동작을 선택한 후 **편집**을 선택합니다.

1. **최종 사용자 프로토콜 정책**에 다음 값 중 하나를 지정합니다.  
**Redirect HTTP to HTTPS**  
최종 사용자가 두 프로토콜 모두 사용할 수 있지만, HTTP 요청은 자동으로 HTTPS 요청으로 리디렉션됩니다. CloudFront는 HTTP 상태 코드 301(영구 이동됨)을 새로운 HTTPS URL과 함께 반환합니다. 그러면 최종 사용자는 HTTPS URL을 사용하여 이 요청을 CloudFront에 다시 제출합니다.  
CloudFront는 HTTP에서 HTTPS로 `DELETE`, `OPTIONS`, `PATCH`, `POST` 또는 `PUT` 요청을 리디렉션하지 않습니다. HTTPS에 리디렉션할 캐시 동작을 구성하는 경우, CloudFront는 해당 캐시 동작에 대한 HTTP `DELETE`, `OPTIONS`, `PATCH`, `POST`, 또는 `PUT` 요청에 HTTP 상태 코드 403(금지됨)으로 응답합니다.
최종 사용자가 HTTPS 요청으로 리디렉션되는 HTTP 요청을 만들 경우 CloudFront에서 두 요청 모두에 대해 요금을 부과합니다. HTTP 요청의 경우에는 CloudFront에서 최종 사용자에게 반환되는 요청 및 헤더에만 요금이 부과됩니다. HTTPS 요청의 경우에는 요청, 헤더, 그리고 오리진에 의해 반환된 객체 모두에 요금이 부과됩니다.  
**HTTPS Only**  
최종 사용자가 HTTPS를 사용할 경우에만 콘텐츠에 액세스할 수 있습니다. 최종 사용자가 HTTPS 요청 대신에 HTTP 요청을 보내면 CloudFront는 HTTP 상태 코드 403(금지됨)을 반환하고 객체는 반환하지 않습니다.

1. **예, 편집합니다**를 선택합니다.

1. 최종 사용자와 CloudFront 간에 그리고 CloudFront와 S3 간에 HTTPS를 요구하려는 캐시 동작에 대해 3\$15단계를 반복합니다.

1. 업데이트한 구성을 프로덕션 환경에서 사용하기 전에 다음 사항을 확인합니다.
   + 각 캐시 동작의 경로 패턴이 최종 사용자에 HTTPS를 사용하도록 지정한 요청에만 적용되는가.
   + 캐시 동작이 CloudFront에서 평가하도록 할 순서대로 나열되었는가. 자세한 내용은 [경로 패턴](DownloadDistValuesCacheBehavior.md#DownloadDistValuesPathPattern) 단원을 참조하세요.
   + 캐시 동작이 올바른 오리진에 요청을 라우팅하는가.