

# Amazon CloudFront로 웹사이트 속도 향상
<a name="website-hosting-cloudfront-walkthrough"></a>

[Amazon CloudFront](https://aws.amazon.com/cloudfront)를 사용하여 Amazon S3 웹 사이트의 성능을 향상시킬 수 있습니다. CloudFront를 통해 웹 사이트 파일(HTML, 이미지, 동영상 등)을 *엣지 로케이션*이라고 하는 전 세계 각지의 데이터 센터에서 사용할 수 있습니다. 방문자가 웹 사이트에서 파일을 요청할 때 CloudFront는 가장 가까운 엣지 로케이션에 있는 파일 사본으로 요청을 자동 리디렉션합니다. 이렇게 하면 방문자가 더 멀리 있는 데이터 센터에서 콘텐츠를 요청한 경우보다 다운로드 시간이 빨라집니다.

CloudFront는 지정된 기간 동안 엣지 로케이션에 있는 콘텐츠를 캐시합니다. 방문자가 만료일보다 더 오래 캐시된 콘텐츠를 요청하는 경우에 CloudFront는 그 콘텐츠의 최신 버전이 사용 가능한지 알아보기 위해 오리진 서버를 확인합니다. 최신 버전이 사용 가능하다면, CloudFront는 새로운 버전을 엣지 로케이션에 복사합니다. 원본 콘텐츠에 대한 변경 사항은 방문객이 그 콘텐츠를 요청할 때 엣지 로케이션에 복제됩니다.

**Route 53 없이 CloudFront 사용**  
이 페이지의 자습서에서는 Route 53을 사용하여 CloudFront 배포를 가리킵니다. 그러나 Route 53을 사용하지 않고 CloudFront를 사용하여 Amazon S3 버킷에 호스팅된 콘텐츠를 제공하려면 [Amazon CloudFront 자습서, Amazon S3용 동적 콘텐츠 배포 설정](https://aws.amazon.com/cloudfront/getting-started/S3/)을 참조하십시오. CloudFront를 사용하여 Amazon S3 버킷에 호스팅된 콘텐츠를 서비스할 때는 어떤 버킷 이름이라도 사용할 수 있으며 HTTP와 HTTPS가 모두 지원됩니다.

**CloudFormation 템플릿으로 설정 자동화**  
CloudFormation 템플릿을 사용하여 웹 사이트에 제공할 CloudFront 배포를 생성하는 안전한 정적 웹 사이트를 구성하는 방법에 대한 자세한 내용은 *Amazon CloudFront 개발자 안내서*의 [안전한 정적 웹 사이트 시작하기](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/getting-started-secure-static-website-cloudformation-template.html)를 참조하십시오.

**Topics**
+ [1단계: CloudFront 배포 생성](#create-distribution)
+ [2단계: 도메인 및 하위 도메인용 레코드 세트 업데이트](#update-record-sets)
+ [(선택 사항) 3단계: 로그 파일 확인](#check-log-files)

## 1단계: CloudFront 배포 생성
<a name="create-distribution"></a>

먼저 CloudFront 배포를 생성합니다. 이를 통해 전 세계 각지의 데이터 센터에서 웹 사이트를 사용할 수 있게 됩니다.

**Amazon S3 오리진으로 배포 생성**

1. 에서 CloudFront 콘솔을 엽니다[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)

1. [**Create Distribution**]을 선택합니다.

1. [**배포 생성(Create Distribution)**] 페이지의 [**오리진 설정(Origin Settings)**] 섹션에서 [**오리진 도메인 이름(Origin Domain Name)**]에 해당 버킷에 대한Amazon S3 웹 사이트 엔드포인트를 입력합니다(예: **example.com.s3-website.us-west-1.amazonaws.com**).

   CloudFront가 사용자 대신 **오리진 ID(Origin ID)**를 채웁니다.

1. **Default Cache Behavior Settings(기본 캐시 동작 설정)**에서는 기본값으로 설정되어 있는 값을 유지합니다.

   [**뷰어 프로토콜 정책(Viewer Protocol Policy)**]의 기본 설정을 사용하면 정적 웹 사이트에 HTTPS를 사용할 수 있습니다. 이 구성 옵션에 대한 자세한 내용은 *Amazon CloudFront 개발자 안내서*의 [웹 배포의 생성 또는 업데이트 시 지정하는 값](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/WorkingWithDownloadDistributions.html#DownloadDistValuesYouSpecify)을 참조하십시오.

1. **Distribution Settings(배포 설정)**에서 다음 작업을 수행합니다.

   1. **Use All Edge Locations (Best Performance)(전체 엣지 로케이션 사용(최상의 성능))**로 설정된 **Price Class(가격 등급)**를 그대로 둡니다.

   1. [**대체 도메인 이름(CNAME)(Alternate Domain Names (CNAMEs))**]을 루트 도메인과 `www` 하위 도메인으로 설정합니다. 이 자습서에서는 `example.com` 및 `www.example.com`입니다.
**중요**  
이 단계를 수행하기 전에 [대체 도메인 이름 사용과 관련된 요구 사항](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/CNAMEs.html#alternate-domain-names-requirements), 특히 유효한 SSL/TLS 인증서가 필요한지 확인하십시오.

   1. **SSL 인증서(SSL Certificate)**에서 **사용자 정의 SSL 인증서(Custom SSL Certificate)(example.com)**를 선택하고, 도메인 및 하위 도메인 이름을 포함하는 사용자 지정 인증서를 선택합니다.

      자세한 내용은 *Amazon CloudFront 개발자 안내서*의 [SSL 인증서](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesSSLCertificate)를 참조하십시오.

   1. **기본 루트 객체**에 인덱스 문서의 이름을 입력합니다(예: `index.html`).

      배포에 액세스하는 데 사용된 URL에 파일 이름이 없으면 CloudFront 배포가 인덱스 문서를 반환합니다. **기본 루트 객체**는 정적 웹 사이트에 대한 인덱스 문서의 이름과 정확히 일치해야 합니다. 자세한 내용은 [인덱스 문서 구성](IndexDocumentSupport.md) 섹션을 참조하세요.

   1. **로깅**을 **설정**으로 설정합니다.
**중요**  
배포를 생성 또는 업데이트하고 CloudFront 로깅을 사용 설정하면 CloudFront는 버킷 액세스 제어 목록(ACL)을 업데이트하여 버킷에 로그를 쓸 수 있는 `FULL_CONTROL` 권한을 `awslogsdelivery` 계정에 부여합니다. 자세한 내용은 *Amazon CloudFront 개발자 안내서*의 [표준 로깅 구성 및 로그 파일 액세스에 필요한 권한](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html#AccessLogsBucketAndFileOwnership)을 참조하세요. 로그를 저장하는 버킷이 S3 객체 소유권에 대해 버킷 소유자 적용 설정을 사용하여 ACL을 비활성화하면 CloudFront에서 버킷에 로그를 쓸 수 없습니다. 자세한 내용은 [객체 소유권 제어 및 버킷에 대해 ACL 사용 중지](about-object-ownership.md) 섹션을 참조하세요.

   1. **Bucket for Logs(로그용 버킷)**에서 앞서 생성한 로깅 버킷을 선택합니다.

      로깅 버킷 구성에 대한 자세한 내용은 [(선택 사항) 웹 트래픽 로깅](LoggingWebsiteTraffic.md) 단원을 참조하십시오.

   1. CloudFront 배포에 대한 트래픽에 의해 생성된 로그를 폴더에 저장하려면 **로그 접두사(Log Prefix)**에 폴더 이름을 입력합니다.

   1. 기타 모든 설정은 기본값을 유지합니다.

1. [**Create Distribution**]을 선택합니다.

1. 현재의 배포 상태를 보려면, 콘솔에서 배포를 찾아 **상태** 열을 확인합니다.

   `InProgress` 상태는 배포가 아직 완전히 이루어지지 않았음을 뜻합니다.

   배포가 완료되면 새 CloudFront 도메인 이름으로 콘텐츠를 참조할 수 있습니다.

1. CloudFront 콘솔에 표시되는 **도메인 이름**의 값을 기록합니다(예: `dj4p1rv6mvubz.cloudfront.net`).

1. CloudFront 배포가 이루어지고 있는지 확인하려면, 웹 브라우저에서 배포의 도메인 이름을 입력합니다.

   웹 사이트가 표시되는 경우 CloudFront 배포가 작동하는 것입니다. 웹 사이트의 Amazon Route 53에 사용자 지정 도메인이 등록되어 있는 경우 다음 단계에서 레코드 세트를 업데이트하려면 CloudFront 도메인 이름이 필요합니다.

## 2단계: 도메인 및 하위 도메인용 레코드 세트 업데이트
<a name="update-record-sets"></a>

CloudFront 배포를 성공적으로 생성했으므로 새 CloudFront 배포를 가리키도록 Route 53의 별칭 레코드를 업데이트합니다.

**CloudFront 배포를 가리키도록 별칭 레코드 업데이트**

1. [https://console.aws.amazon.com/route53/](https://console.aws.amazon.com/route53/)에서 Route 53 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **Hosted Zones(호스팅 영역)**를 선택합니다.

1. **Hosted Zones(호스팅 영역)** 페이지에서 하위 도메인을 위해 생성한 호스팅 영역(예: `www.example.com`)을 선택합니다.

1. **레코드**에서 하위 도메인에 대해 만든 *A* 레코드를 선택합니다.

1. **레코드 세부 정보**에서 **레코드 편집**을 선택합니다.

1. **다음으로 트래픽 라우팅**에서 **CloudFront 배포로 별칭**을 선택합니다.

1. **배포 선택**에서 CloudFront 배포를 선택합니다.

1. **저장**을 선택합니다.

1. 루트 도메인에 대한 *A* 레코드를 CloudFront 배포로 리디렉션하려면 루트 도메인에 대해 이 절차(예: `example.com`)를 반복합니다.

   레코드 세트를 업데이트한 내용은 2\~48시간 내에 적용됩니다.

1. 새 *A* 레코드가 적용되었는지 확인하려면 웹 브라우저에서 하위 도메인 URL을 입력합니다(예: `http://www.example.com`).

   브라우저가 루트 도메인(예: `http://example.com`)으로 리디렉션되지 않는 경우 새 A 레코드가 적용된 것입니다. 새로운 *A* 레코드가 적용되면 새로운 *A* 레코드에 의해 CloudFront 배포로 라우팅되는 트래픽은 루트 도메인으로 리디렉션되지 않습니다. `http://example.com` 또는 `http://www.example.com`을 이용해 사이트를 참조하는 방문자가 가장 가까운 CloudFront 엣지 로케이션으로 리디렉션됨으로써, 더 빨라진 다운로드 시간의 이점을 누릴 수 있습니다.
**작은 정보**  
브라우저는 리디렉션 설정을 캐시할 수 있습니다. 새로운 *A* 레코드 설정이 이미 적용되었어야 하는데 여전히 브라우저에서 `http://www.example.com`이 `http://example.com`으로 리디렉션된다면, 브라우저 애플리케이션을 닫았다가 다시 열어 브라우저의 검색 기록 및 캐시를 삭제하거나 다른 웹 브라우저를 사용하세요.

## (선택 사항) 3단계: 로그 파일 확인
<a name="check-log-files"></a>

액세스 로그는 웹 사이트를 방문하는 사람의 수를 알려 줍니다. 또한 [Amazon EMR](https://docs.aws.amazon.com/emr/latest/DeveloperGuide/)과 같은 다른 서비스로 분석할 수 있는 중요 비즈니스 데이터를 포함하고 있습니다.

CloudFront 로그는 CloudFront 배포를 생성하고 로깅을 사용 설정할 때 선택한 버킷과 폴더에 저장됩니다. CloudFront는 해당 요청 이후 24시간 이내에 로그 버킷에 로그를 기록합니다.

**웹 사이트의 로그 파일 보기**

1. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 Amazon S3 콘솔을 엽니다.

1. 웹 사이트에 대한 로깅 버킷을 선택합니다.

1. CloudFront 로그 폴더를 선택합니다.

1. 열기 전에 CloudFront에서 작성한 `.gzip` 파일을 다운로드합니다.

   실습용으로만 웹 사이트를 생성한 경우에는 요금이 발생하지 않도록 할당한 리소스를 삭제할 수 있습니다. 그렇게 하려면 [예제 리소스 정리](getting-started-cleanup.md) 단원을 참조하십시오. AWS 리소스를 삭제한 후에는 웹 사이트를 사용할 수 없습니다.