[AWS] Amazon CloudFront

Amazon CloudFront

Cloudfront 는?

Cloudfront 는 AWS 에서 제공하는 CDN(컨텐츠 전송 네트워크)입니다.
CDN 서비스를 이용하면 서비스 대기 시간과 성능이 개선되어
이미지, 오디오, 비디오 및 일반 웹 페이지 등을 최종 사용자에게 빠르게 제공할 수 있습니다.

서비스를 하는 곳이 S3 에서 설정한 같은 리전이면 데이터를 빠르게 전송할 수 있지만,
다른 리전일 경우 아무래도 같은 지역에 비해 비교적 지연 시간이 있을 수 있습니다.
CloudFront 는 오리진 서버에 위치한 원본 파일을 전세계에 위치한 에지 로케이션으로 배포하고
에지 로케이션은 이 데이터를 캐싱하며 사용자는 자신의 위치와 가까운 에지 로케이션에서
캐싱된 데이터를 제공 받으므로 이런 문제를 어느 정도 해결할 수 있습니다.

오리진 서버는 S3 버킷, EC2 혹은 ELB(Elastic Load Balancer)와 같은
다른 AWS 이거나 자체 오리진 서버일 수 있습니다.





Cloudfront 사용법

S3 에서 버킷을 생성하고 파일을 업로드를 다 마쳤다는 전제하에 순서를 써보자면 아래와 같습니다.

  1. CloudFront 는 Storage & Content Delivery 내부에 있으며 CloudFront 를 클릭하여 이동합니다.
  2. CloudFront Distribution 은 CloudFront 의 독립적 단위입니다. Create Distribution 버튼을 클릭합니다.
  3. Web 아래쪽에 있는 Get Started 버튼을 클릭합니다.
  4. Origin Settings 에 항목을 채워 넣습니다. 각 항목에 대한 설명입니다.



항목 설명
Origin Domain Name 오리진의 도메인 이름입니다.
인풋 박스를 클릭하면 현재 사용할 수 있는 항목이 나오는데
S3 의 버킷을 사용할 것이므로 그에 맞게 해당 항목을 클릭합니다
Origin Path Orgin Path 로 입력된 디렉토리 명을 실제 접근 시 생략할 수 있습니다.
가령 blockoBucket 이라는 S3 버킷이 있고 내부에 src 라는 디렉토리와
그 내부에 index.html 파일이 존재한다고 가정했을 때 Origin Path 가 /src 라면
blockoBucket/index.html 으로 접근 시 CloundFront 는
blockoBucket/src/index.html 파일을 제공합니다.
Origin ID 오리진을 구분하는 ID 이며, Origin Domain Name 이 입력되면 자동으로 채워집니다.
Restrict Bucket Access S3 버킷에 CloudFront 만 접근할 수 있도록 설정하는 옵션입니다.
Origin Access Identity 오리진에 접근 시 사용할 식별자입니다.
새로 생성하거나 이미 있는 것을 사용할 수 있습니다.
Comment Origin Access Identity 에서 새로운 식별자 생성을 클릭할 경우
식별자를 생성 시 사용할 이름입니다.
새로 사용할 식별자의 이름을 적어주면 됩니다.
Grant Read Permissions on Bucket CloudFront 가 S3 에 접근할 수 있는 권한을
버킷의 Policy 에 업데이트하는 지에 대한 설정입니다.
Yes 로 설정하면 다른 모든 접속은 제한되고 CloudFront 만 접근할 수 있도록
버킷에 Bucket Policy 가 설정됩니다.


  1. 아래에 계속 Default Cache Behavior Settings 를 채워 넣습니다.


항목 설명    
Path Pattern CloudFront 로 파일을 가져올 규칙입니다.
기본값은 *로 설정되어 있어서 모든 파일을 가져오게 됩니다.
이 부분은 여기서는 수정할 수 없고 배포를 생성한 뒤 따로 추가할 수 있습니다.
   
Viewer Protocol Policy CloudFront 로 보여질 프로토콜 정책 입니다.

HTTP and HTTPS: HTTP 와 HTTPS 를 둘 다 사용합니다.
Redirect HTTP to HTTPS: 모든 HTTP 접속을 HTTPS 로 리다이렉트 합니다.
HTTPS Only: HTTPS 만 사용합니다.
   
Allowed HTTP Methods 허용하는 HTTP 메서드 종류입니다.

GET, HEAD: 파일을 읽기만 할 때 선택합니다.
GET, HEAD, PUT, POST, PATCH, DELETE, OPTIONS: 동적 콘텐츠 전송을 사용할 때 선택합니다.
   
Object Caching 파일의 캐시 유지 시간을 설정합니다. 유지 시간이 지나면 CloudFront 에서 파일이 삭제됩니다.
Use Origin Cache Headers: 오리진 HTTP 헤더의 캐시 설정(Cache-Control)을 따릅니다.
각 파일마다 캐시 설정을 다르게 할 수 있는 장점이 있습니다.
캐시 설정이 없으면 기본 캐시 유지 시간은 24 시간 입니다.


Customize: 기본 캐시 유지 시간을 따로 설정합니다.

- Minimum TTL: 최소 캐시 유지시간 입니다. 초 단위로 설정해야 합니다.
이 Minimum TTL 설정 시간과 오리진 HTTP 헤더의
캐시 설정(Cache-Control) 시간 중 긴 시간이 적용됩니다.
   
Forward Cookies 오리진의 쿠키를 CloudFront 를 거쳐 사용자에게 전달할지 설정합니다.

None: 쿠키를 전달하지 않습니다. 캐시 성능이 좀더 향상됩니다.
Whitelist: 쿠키를 선별하여 전달합니다.
(Whitelist Cookies: 전달할 쿠키 이름을 설정합니다. 각 쿠키는 새 줄로 구분합니다.)
Forward Query Strings CloudFront 에서 오리진으로 쿼리 문자열을 전달합니다.
오리진에서 쿼리 문자열에 따라 파일을 구분하여 보여주고 싶을 때 설정합니다.
설정하지 않으면 캐시 성능이 향상됩니다.
Smooth Streaming 실시간 스트리밍 프로토콜인 Microsoft Smooth Streaming 을 사용하고 싶을 때 설정합니다.    
Restrict Viewer Access Signed URL 로 CloudFront 사용을 제한하고 싶을 때 설정합니다.    


  1. 아래에 계속해서 Distribution Settings 를 채워 넣습니다.


항목 설명
Price Class 요금 그리고 사용 지역을 설정합니다.
Use All Edge Locations 를 지정하면 세계 모든 에지 로케이션을 이용할 수 있고
그만큼 좋은 성능을 보여줄 수 있으나 대신 다른 옵션보다 가격이 높습니다.
Use Only US and Europe: 미국과 유럽의 에지 로케이션만 사용합니다.
Use Only US, Europe and Asia: 미국과 유럽, 아시아의 에지 로케이션만 사용합니다.
Use All Edge Locations: 모든 에지 로케이션을 사용합니다.
위의 두 옵션보다는 요금이 많이 나옵니다.
Alternate Domain Names Route 53 에서 도메인을 연결하려면 이 부분을 설정해야 합니다.
여러 도메인이라면 새 줄로 구분하고 최대 10 개까지 설정할 수 있습니다.
각자 구입한 도메인 이름을 설정하면 됩니다.
SSL Certificate HTTPS 프로토콜을 사용하기 위한 인증서 설정입니다.
Default CloudFront Certificate: CloudFront 의 인증서를 사용합니다.
Custom SSL Certificate: 사용자가 구입한 도메인과 인증서를 사용하고 싶을 때 설정합니다.
인증서 저장은 IAM 에서 할 수 있습니다.
Custom SSL Client Support 커스텀 SSL 클라이언트 설정입니다. 앞에서 Custom SSL Certificate 를 설정해야 합니다.
All Clients: 전용 IP 사용자 지정 SSL 설정입니다.
Only Clients that Support Server Name Indication: 서버 이름 표시(SNI)를 설정합니다.
Default Root Object CloudFront 배포 도메인의 최상위(Root)로 접속했을 때 기본적으로 보여줄 파일 이름입니다.
Logging CloudFront 접속 로그 설정입니다.
Bucket for Logs: CloudFront 로그를 저장할 S3 버킷을 선택합니다.
Log Prefix: S3 버킷에 로그를 저장할 때, 디렉터리 명을 설정합니다.
Comment 메모입니다. 추가적인 설명을 기록하고 싶을 때 사용합니다
Distribution State 배포를 생성한 뒤 배포 상태 설정입니다.
Enabled 로 설정하면 곧바로 사용할 수 있는 상태가 되며
Disabled 로 설정하면 그냥 배포만 생성하고 비활성화 상태로 둡니다.



위의 순서대로 하면 Cloudfront 배포가 생성되었습니다.
Status 를 보면 inProgress 로 표시되며 인디케이터가 회전하고 있을 것입니다.
보통 배포가 모든 에지 로케이션에 전파되기까지 약 15~20 분이 소요됩니다.
모든 에지 로케이션에 전파가 완료되면 Status 가 Deployed 로 바뀝니다.
Domain Name 에 CloudFront 배포의 도메인이 표시됩니다.
웹 브라우저에서 접속하여 확인하고 이상이 없으면 끝입니다.


배포 삭제하는 방법

CloudFront 배포를 삭제하려면 배포 목록에서 배포를 선택한 뒤
Disable 버튼을 클릭하여 동작을 정지시킵니다.
모든 에지 로케이션에 전파되기까지 15~20 분 정도 걸립니다.
Status 가 Deployed 로 바뀌었다면 Delete 버튼을 클릭하여 배포를 삭제합니다.