Amazon CloudFront
개발자 가이드 (API 버전 2016-09-29)

Amazon CloudFront란?

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

  • 콘텐츠가 이미 지연 시간이 가장 낮은 엣지 로케이션에 있는 경우 CloudFront가 콘텐츠를 즉시 제공합니다.

  • 콘텐츠가 엣지에 없는 경우 CloudFront는, 콘텐츠의 최종 버전에 대한 소스로 지정된 오리진(Amazon S3 버킷, MediaPackage 채널, HTTP 서버(예: 웹 서버) 등)에서 콘텐츠를 검색합니다.

이 개념을 가장 잘 보여 주는 예가 하나 있습니다. CloudFront가 아닌 일반적인 웹 서버에서 이미지를 서비스한다고 가정합니다. 예를 들어 http://example.com/sunsetphoto.png URL을 사용하여 sunsetphoto.png라는 이미지를 서비스할 수 있습니다.

사용자는 이 URL로 쉽게 이동해 이미지를 볼 수 있지만, 이미지가 발견될 때까지 인터넷으로 이루어진 상호 연결된 네트워크의 복잡한 모음을 통해 네트워크에서 다른 네트워크로 요청이 라우팅되었다는 사실은 아마도 모르고 있을 것입니다.

CloudFront는 AWS 백본 네트워크를 통해 콘텐츠를 가장 효과적으로 서비스할 수 있는 엣지로 각 사용자 요청을 라우팅하여 콘텐츠 배포 속도를 높입니다. 일반적으로 CloudFront 엣지가 최종 사용자에게 가장 빨리 제공합니다. AWS 네트워크를 사용하면 사용자의 요청이 반드시 통과해야 하는 네트워크의 수가 줄어들어 성능이 향상됩니다. 파일의 첫 바이트를 로드하는 데 걸리는 지연 시간이 줄어들고 데이터 전송 속도가 빨라집니다.

또한 파일(객체라고도 함)의 사본이 전 세계 여러 엣지 로케이션에 유지(또는 캐시)되므로 안정성과 가용성이 향상됩니다.

콘텐츠를 전송하도록 CloudFront를 설정하는 방법

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

 CloudFront의 작동 방식

콘텐츠를 제공하도록 CloudFront를 구성하는 방법

  1. Amazon S3 버킷 또는 고유 HTTP 서버와 같은 오리진 서버를 지정하고, CloudFront는 이로부터 파일을 가져온 다음 전 세계 CloudFront 엣지 로케이션에 배포합니다.

    오리진 서버는 객체의 최종 원본 버전을 저장합니다. HTTP를 통해 콘텐츠를 서비스하는 경우 오리진 서버가 Amazon S3 버킷 또는 웹 서버 같은 HTTP 서버입니다. HTTP 서버는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스나 사용자가 관리하는 서버에서 실행할 수 있습니다. 이 서버를 사용자 지정 오리진이라고도 합니다.

    Adobe Media Server RTMP 프로토콜을 사용해 미디어 파일을 주문형으로 배포할 경우 오리진 서버는 항상 Amazon S3 버킷입니다.

  2. 오리진 서버에 파일을 업로드합니다. 객체라고도 하는 파일에는 일반적으로 웹 페이지, 이미지 및 미디어 파일이 포함되지만, HTTP 또는 Adobe Flash Media Server에서 사용되는 프로토콜에 해당하는 지원되는 Adobe RTMP 버전을 통해 서비스할 수 있다면 무엇이든지 포함될 수 있습니다.

    Amazon S3 버킷을 오리진 서버로 사용할 경우 버킷에 있는 객체를 공개적으로 읽을 수 있는 상태로 만들 수 있으므로 객체의 CloudFront URL을 아는 사람이라면 누구나 액세스할 수 있습니다. 객체를 비공개로 유지하고 액세스할 수 있는 사용자를 제어할 수 있는 옵션도 있습니다. 서명된 URL과 서명된 쿠키를 사용하여 프라이빗 콘텐츠 제공을 참조하십시오.

  3. 사용자가 웹 사이트나 애플리케이션을 통해 파일을 요청할 경우 CloudFront에 어떤 오리진 서버에서 파일을 가져올지 알려 주는 CloudFront 배포를 만듭니다. 동시에 CloudFront에서 모든 요청을 기록할지, 배포를 만들자마자 활성화할지 여부와 같은 세부 사항을 지정합니다.

  4. CloudFront는 새 배포에 도메인 이름을 할당하고, 이는 CloudFront 콘솔에서 볼 수 있습니다. 또는 API 요청 등과 같은 프로그램 요청에 대한 응답으로 반환됩니다.

  5. CloudFront에서는 배포의 구성(사용자의 콘텐츠가 아님)을 모든 해당 엣지(CloudFront가 객체의 사본을 캐시하는 지리적으로 분산된 데이터 센터의 서버 모음)로 보냅니다.

웹 사이트 또는 애플리케이션을 개발할 경우 CloudFront가 URL에 제공하는 도메인 이름을 사용합니다. 예를 들어, CloudFront가 d111111abcdef8.cloudfront.net를 배포의 도메인 이름으로 반환할 경우 Amazon S3 버킷(또는 HTTP 서버의 루트 디렉터리)에 있는 logo.jpg의 URL이 http://d111111abcdef8.cloudfront.net/logo.jpg가 됩니다.

또는 고유한 도메인 이름을 사용할 수 있도록 CloudFront 배포를 구성할 수 있습니다. 이 경우 URL이 http://www.example.com/logo.jpg가 될 수 있습니다.

또는 파일에 머리글을 추가하도록 오리진 서버를 구성할 수 있습니다. 이는 CloudFront 엣지 로케이션의 캐시에 파일을 얼마나 오래 보관할지 나타냅니다. 기본적으로 각 객체는 만료되기 전에 24시간 동안 엣지 로케이션에 남아 있습니다. 최소 만료 시간은 0초이며, 최대 만료 시간 제한이 없습니다. 자세한 내용은 콘텐츠가 엣지 캐시에 유지되는 기간 관리(만료) 단원을 참조하십시오.