본문 바로가기

SW LAB/Cloud

AWS CloudFront : 소개

Amazon CloudFront 란 ?

Amazon CloudFront는 .html, .css, .js 및 이미지 파일과 같은 정적 및 동적 웹 콘텐츠를 사용자에게 더 빨리 배포하도록 지원하는 웹 서비스입니다. CloudFront는 엣지 위치라고 하는 데이터 센터의 전 세계 네트워크를 통해 콘텐츠를 제공합니다. CloudFront를 통해 서비스하는 콘텐츠를 사용자가 요청하면 지연 시간이 가장 낮은 엣지 로케이션으로 라우팅되므로 콘텐츠 전송 성능이 뛰어납니다.

컨텐츠를 전송하도록 CludeFront를 설정하는 방법

CloudFront 배포를 생성하여 CloudFront에게 어디로부터 콘텐츠를 전송하고자 하는지와 이러한 콘텐츠 전송을 추적 및 관리하는 방법에 대한 세부 정보를 알립니다. 그런 다음 CloudFront는 최종 사용자와 인접한 컴퓨터(엣지 서버)를 사용하여 사용자가 콘텐츠를 사용하거나 보고자 할 때 빠르게 전송합니다.

  1. Amazon S3 버킷 또는 고유 HTTP 서버와 같은 오리진 서버를 지정합니다.
  2. 오리진 서버에 파일을 업로드합니다.
  3. 어떤 오리진 서버에서 파일을 가져올지 알려주는 CloudFront 배포를 만듭니다. 또한 CloudFront에서 모든 요청을 기록할지, 배포를 만들자마자 활성화할지 등 세부사항을 지정합니다.
  4. CoudeFront는 새 배포에 도메인 이름을 할당합니다. 이는 CloudFront Console에서 볼 수 있습니다.
  5. 모든 해당 Edge Location 또는 지리적으로 분산된 데이터센터의 POP(Point of Presence) 서버 모음으로 보냅니다.
    기본적으로 Edge Location의 캐시에 24시간 동안 남아있지만, 설정에 따라 최소 0초, 무제한까지 설정할 수 있습니다.

CloudFront 사용 사례

  • 정적 웹 사이트 컨텐츠 전송 속도 향상
    정적 컨텐츠를 전송하기 위한 간단한 방법은 Amazon S3 버킷을 사용하는 것입니다.
    S3와 CloudFront를 함께 사용하면 OAI(Origin Access ID)를 통해 S3 컨텐츠에 대한 엑세스를 쉽게 제한할 수 있습니다.

  • 온디멘드 또는 라이브 스티리밍 비디오 제공

  1. 온디맨드 스트리밍의 경우 CloudFront를 사용하면 MPEG DASH, Apple HLS, Microsoft Smooth
    Streaming, CMAF 등과 같은 일반적인 형식으로 기기에 상관없이 스트리밍할 수 있습니다.
  2. 라이브 스트림 방송의 경우에는, 엣지에 미디어 조각을 캐싱하여 해당 조각을 올바른 순서로 전송하는 매니페스트 파일에 대한 여러 요청을 결합함으로써 오리진 서버의 부하를 줄일 수 있습니다.
  • 시스템 처리를 통해 특정 필드 암호화
    CloudFront에서 HTTPS를 구성할 경우 오리진 서버에 대한 종단 간 연결의 보안이 보장됩니다. 파일 수준 암호화를 추가하는 경우, HTTPS 보안뿐 아니라 시스템 처리 전체에서 특정 데이터를 보호함으로써 오리진의 특정 애플리케이션만 데이터를 보게 할 수 있습니다.

  • 엣지에서의 사용자 지정
    예를 들어 오리진 서버가 유지보수를 위해 다운된 경우 최종 사용자에
    게 일반 HTTP 오류 메시지를 표시하는 대신 사용자 지정 오류 메시지를 표시할 수 있습니다. 또는 함수를 사용하여 CloudFront가 오리진으로 요청을 전송하기 전에 사용자를 인증하고 콘텐츠에 대한 액세스를 제어할 수 있습니다.

  • Lambda@Edge 사용자 지정을 사용하여 프라이빗 콘텐츠 제공
    Lambda@Edge를 사용하면 서명된 URL 및 쿠키 사용 옵션으로, 자체 사용자 지정 오리진에서 프라이빗 콘텐츠를 제공하도록 CloudFront 배포를 구성할 수 있습니다.
    오리진에 대한 액세스를 CloudFront 전용으로 제한하는 방법에는 몇 가지가 있으며, 방화벽에 CloudFront IP 화이트리스트 사용하거나, 공유 암호를 전달하는 사용자 지정 헤더를 사용하는 방법 등이 있습니다.

CloudFront에서 콘텐츠를 제공하는 방법

CloudFront에서 사용자에게 콘텐츠를 제공하는 방법

  1. 사용자는 웹사이트나 어플리케이션으로 정적 컨텐츠(이미지나 HTML파일)을 요청합니다.
  2. DNS가 최적의 CloudFront POP(Edge Location)으로 라우팅합니다.
  3. POP에서 CloudFront는 요청된 파일이 있다면 전달합니다. 없다면 다음 절차를 수행합니다.
  4. CloudFront는 오리진서버에 파일을 요청하고, 첫번째 바이트가 도착하면 바로 사용자에게 전달을 수행합니다.

CloudFront에서 리전 엣지 캐시를 사용하는 방식

리전 엣지 캐시는 최종 사용자가 쉽게 접할 수 있도록 전역으로 배포되는 CloudFront 위치입니다.
리전 엣지 캐시는 개별 POP보다 캐시가 더 큽니다. 따라서 객체가 가장 가까운 리전 엣지 캐시 위치에 더 오래 캐시 상태로 유지됩니다. 이에 따라 최종 사용자에게 보다 가까운 위치에 더 많은 콘텐츠를 유지할 수 있으며, CloudFront가 오리진 서버로 되돌아갈 필요가 없고 최종 사용자의 전반적인 능률이 향상됩니다.
앞서 사용자에게 컨텐츠를 제공하는 순서에서 POP의 캐시에 데이터가 없을 경우 오리진 서버가 아니라, Resion Edge Cache에 데이터를 요청하고 없을 경우 유사하게 데이터를 수신받아 최종 사용자에게 제공하게 됩니다.

  • 리전 엣지 캐시는 POP에 기능 패리티를 둡니다. 예를 들어, 캐시 무효화 요청이 들어오면 객체가
    만료되기 전에 POP 캐시 및 리전 엣지 캐시 모두에서 객체가 제거됩니다. 다음에 최종 사용자가
    객체를 요청할 때, CloudFront에서는 최신 버전의 객체를 가져오도록 오리진에 반환합니다.
  • 프록시 메서드 PUT/POST/PATCH/OPTIONS/DELETE는 POP에서 오리진으로 바로 이동하며 리
    전 엣지 캐시를 통해 프록시되지 않습니다.
  • 요청 시간에 결정되는 동적 콘텐츠(모든 헤더를 전달하도록 구성된 캐시 동작)는 리전 엣지 캐시
    를 통해 이동하지 않으며, 오리진으로 바로 이동합니다.

Amazon CloudFront 시작하기

간단한 CloudFront 배포로 시작하기

  1. S3 서비스로 이동 후, Bucket을 생성합니다.
  2. CloudFront 서비스로 이동 후, Create Distribution를 클릭합니다.
  3. 사전에 만든 Bucket를 선택하여 자동완성 된 값을 그대로 사용하고, 나머지는 기본 값으로 사용합니다.
  4. Create Distribution를 클릭하여 생성합니다.

링크 테스트

  1. S3 서비스로 이동 후, 테스트 이미지를 업로드 합니다.
  2. 테스트용 HTML을 작성합니다.
<html>
<head>My CloudFront Test</head>
<body>
<p>My text content goes here.</p>
<p><img src="https://<domain name>/<object name>" alt="my test image"/>
</body>
</html>

Domain Name은 CloudFront 에서 배포(Distributions) 메뉴에서 확인이 가능합니다.

  1. 작성한 html 문서를 열어서 확인합니다.

배포작업

CloudFront에게 어디로부터 컨텐츠를 전송하고자 하는지와 이러한 컨텐츠 전송을 추적 및 관리하는 방법에 대한 세부정보를 다룹니다.

배포의 개요

CloudFront를 사용하여 컨텐츠를 배포하려는 경우 배포를 생성하고 원하는 구성 설정을 선택합니다.

  • 컨텐츠 오리진
    CloudFront가 배포할 파일을 가져오는 Amazon S3 버킷, MediaPackage 채널 또는 HTTP 서버. 최대 25개의 Amazon S3 버킷, 채널 및/또는 HTTP 서버를 결합하여 오리진으로 지정할 수 있습니다.
  • 액세스
    파일을 모든 사람이 사용할 수 있도록 할지 아니면 일부 사용자로만 액세스를 제한할지 여부.
  • 보안
    CloudFront에서 사용자가 HTTPS를 사용하여 콘텐츠에 액세스하도록 지정할지 여부.
  • 쿠키 또는 쿼리 문자열 전송
    CloudFront에서 쿠키 및/또는 쿼리 문자열을 오리진으로 전달할지 여부.
  • 지리적 제약
    CloudFront에서 특정 국가의 사용자가 콘텐츠에 액세스하는 것을 차단할지 여부.
  • 액세스 로그
    CloudFront가 최종 사용자 활동을 표시하는 액세스 로그를 생성할지 여부.

배포 만들기

... 이어서 작성 ...

'SW LAB > Cloud' 카테고리의 다른 글

AWS Athena : 성능 테스트  (0) 2020.04.25
AWS Athena : 최적화  (0) 2020.04.24
AWS CloudFront : 소개  (0) 2020.04.24
AWS Athena : 소개  (0) 2020.04.24
CDN 관련 용어집  (0) 2020.04.24
AWS Networking Cookbook : (1) VPC 구성 (기본편)  (0) 2020.04.24

태그