

# Amazon CloudFront란 무엇입니까?
<a name="Introduction"></a>

Amazon CloudFront는 .html, .css, .js 및 이미지 파일과 같은 정적 및 동적 웹 콘텐츠를 사용자에게 더 빨리 배포하도록 지원하는 웹 서비스입니다. CloudFront는 엣지 로케이션이라고 하는 데이터 센터의 전 세계 네트워크를 통해 콘텐츠를 제공합니다. CloudFront를 통해 서비스하는 콘텐츠를 사용자가 요청하면 지연 시간이 가장 낮은 엣지 로케이션으로 요청이 라우팅되므로 가능한 최고의 성능으로 콘텐츠가 제공됩니다.
+ 콘텐츠가 이미 지연 시간이 가장 낮은 엣지 로케이션에 있는 경우 CloudFront가 콘텐츠를 즉시 제공합니다.
+ 콘텐츠가 엣지 로케이션에 없는 경우 CloudFront는 콘텐츠의 최종 버전에 대한 소스로 지정된 오리진(Amazon S3 버킷, MediaPackage 채널, HTTP 서버(예: 웹 서버) 등)에서 콘텐츠를 검색합니다.

예를 들어, CloudFront가 아닌 일반적인 웹 서버에서 이미지를 제공한다고 가정합니다. 예를 들어 `https://example.com/sunsetphoto.png` URL을 사용하여 sunsetphoto.png라는 이미지를 서비스할 수 있습니다.

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

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

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

**Topics**
+ [콘텐츠를 전송하도록 CloudFront를 설정하는 방법](#HowCloudFrontWorksOverview)
+ [표준 배포 또는 다중 테넌트 배포 중에서 선택](#choose-standard-or-multi-tenant)
+ [가격 책정](#pricing)
+ [CloudFront 사용 방법](IntroductionUseCases.md)
+ [CloudFront에서 콘텐츠를 제공하는 방법](HowCloudFrontWorks.md)
+ [CloudFront 엣지 서버의 위치 및 IP 주소 범위](LocationsOfEdgeServers.md)
+ [AWS SDK와 함께 CloudFront 사용](sdk-general-information-section.md)
+ [CloudFront 기술 리소스](#resources-cloudfront)

## 콘텐츠를 전송하도록 CloudFront를 설정하는 방법
<a name="HowCloudFrontWorksOverview"></a>

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

![\[CloudFront 작동 방식\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/images/how-you-configure-cf.png)
<a name="HowCloudFrontWorksConfiguration"></a>

**콘텐츠를 전송하도록 CloudFront를 구성하는 방법**

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

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

1. 오리진 서버에 파일을 업로드합니다. *객체*라고도 하는 파일은 일반적으로 웹 페이지, 이미지 및 미디어 파일을 포함하지만 HTTP를 통해 제공될 수 있는 모든 항목이 될 수 있습니다.

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

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

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

1. CloudFront에서는 배포의 구성(사용자의 콘텐츠가 아님)을 모든 해당 *엣지 로케이션* 또는 CloudFront가 파일의 사본을 캐싱하는 지리적으로 분산된 데이터 센터의 *POP(Point of Presence)* 서버 모음으로 보냅니다.

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

또는 CloudFront를 설정하여 고유한 도메인 이름을 배포와 사용할 수도 있습니다. 이 경우 URL이 `https://www.example.com/logo.jpg`가 될 수 있습니다.

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

## 표준 배포 또는 다중 테넌트 배포 중에서 선택
<a name="choose-standard-or-multi-tenant"></a>

CloudFront는 단일 웹사이트 또는 앱과 다중 테넌트 시나리오에 대한 배포 옵션을 제공합니다.

**표준 배포**  
웹사이트 또는 애플리케이션별로 고유한 구성을 위해 설계되었습니다. 이는 다음과 같은 사용 사례에서 선택합니다.  
+ 독립 실행형 CloudFront 배포가 필요함
+ 각 사이트 또는 애플리케이션에 자체 사용자 지정 설정이 필요함
대부분의 사람들은 표준 배포로 시작합니다.

**다중 테넌트 배포 및 배포 테넌트(CloudFront SaaS Manager)**  
SaaS 공급자 및 다중 테넌트 시나리오를 위해 특별히 설계되었습니다. 이는 다음과 같은 사용 사례에서 선택합니다.  
+ 여러 고객 웹사이트 또는 애플리케이션에 서비스를 제공하기 위해 SaaS 플랫폼을 구축하고 있음
+ 여러 유사한 배포를 효율적으로 관리해야 함
+ 공유 구성을 중앙 집중식으로 제어하려고 함
자세한 내용은 [다중 테넌트 배포의 작동 방식 이해](distribution-config-options.md) 섹션을 참조하세요.

## 가격 책정
<a name="pricing"></a>

CloudFront는 엣지 로케이션에서 전송되는 데이터에 대해 HTTP 또는 HTTPS 요청과 함께 요금을 부과합니다. 요금은 사용 유형, 리전 및 기능 선택에 따라 다릅니다.

Amazon Simple Storage Service (S3), Elastic Load Balancing, Amazon API Gateway와 같은 AWS 오리진을 사용하면 오리진에서 CloudFront로 데이터를 전송할 때 항상 무료입니다. AWS 오리진을 사용할 때 CloudFront에서 최종 사용자로의 아웃바운드 데이터 전송에 대한 요금만 청구됩니다.

자세한 내용은 [CloudFront 요금](https://aws.amazon.com/cloudfront/pricing/) 및 청구 및 비용 절감 번들 [FAQ](https://aws.amazon.com/cloudfront/faqs/)를 참조합니다.

# CloudFront 사용 방법
<a name="IntroductionUseCases"></a>

CloudFront를 사용하면 다양한 목표를 달성할 수 있습니다. 이 단원에서는 이에 대한 정보를 몇 가지 설명하고 추가 정보에 대한 링크를 제공합니다.

**Topics**
+ [정적 웹 사이트 콘텐츠 전송 속도 향상](#IntroductionUseCasesStaticWebsite)
+ [온디맨드 비디오 또는 라이브 스트리밍 비디오 제공](#IntroductionUseCasesStreaming)
+ [시스템 처리를 통해 특정 필드 암호화](#IntroductionUseCasesFieldLevelEncryption)
+ [엣지에서의 사용자 지정](#IntroductionUseCasesProgrammableCDN)
+ [Lambda@Edge 사용자 지정을 사용하여 프라이빗 콘텐츠 제공](#IntroductionUseCasesPrivateContentAtTheEdge)

## 정적 웹 사이트 콘텐츠 전송 속도 향상
<a name="IntroductionUseCasesStaticWebsite"></a>

CloudFront는 전 세계 최종 사용자에게 제공되는 정적 콘텐츠(이미지, 스타일 시트, JavaScript 등)의 전송 속도를 높일 수 있습니다. CloudFront를 사용하면 AWS 백본 네트워크와 CloudFront 엣지 서버의 장점을 활용하여 해당 웹 사이트를 방문하는 뷰어에게 빠르고 안전하며 신뢰할 수 있는 환경을 제공할 수 있습니다.

정적 콘텐츠를 저장하고 전송하기 위한 간단한 방법은 Amazon S3 버킷을 사용하는 것입니다. S3와 CloudFront를 함께 사용하면 [오리진 액세스 제어](private-content-restricting-access-to-s3.md)를 통해 Amazon S3 콘텐츠에 대한 액세스를 쉽게 제한할 수 있으며 이외에도 다양한 장점이 있습니다.

빠른 시작을 도와주는 CloudFormation 템플릿을 비롯해 CloudFront와 Amazon S3를 함께 사용하는 방법에 대한 자세한 내용은 [안전한 정적 웹 사이트 시작하기](getting-started-secure-static-website-cloudformation-template.md) 섹션을 참조하세요.

## 온디맨드 비디오 또는 라이브 스트리밍 비디오 제공
<a name="IntroductionUseCasesStreaming"></a>

CloudFront는 전 세계 최종 사용자에게 미디어(녹화 파일 및 라이브 이벤트)를 스트리밍하기 위한 몇 가지 옵션을 제공합니다.
+ 온디맨드 비디오(VOD) 스트리밍의 경우 CloudFront를 사용하면 MPEG DASH, Apple HLS, Microsoft Smooth Streaming, CMAF 등과 같은 일반적인 포맷으로 디바이스에 상관없이 스트리밍할 수 있습니다.
+ 라이브 스트림 방송의 경우에는, 엣지에 미디어 조각을 캐싱하여 해당 조각을 올바른 순서로 전송하는 매니페스트 파일에 대한 여러 요청을 결합함으로써 오리진 서버의 부하를 줄일 수 있습니다.

CloudFront를 사용하여 스트리밍 콘텐츠를 전송하는 방법에 대한 자세한 내용은 [CloudFront를 사용한 온디맨드 비디오 및 라이브 스트리밍 비디오](on-demand-streaming-video.md) 단원을 참조하십시오.

## 시스템 처리를 통해 특정 필드 암호화
<a name="IntroductionUseCasesFieldLevelEncryption"></a>

CloudFront에서 HTTPS를 구성할 경우 오리진 서버에 대한 종단 간 연결의 보안이 보장됩니다. 파일 수준 암호화를 추가하는 경우, HTTPS 보안뿐 아니라 시스템 처리 전체에서 특정 데이터를 보호함으로써 오리진의 특정 애플리케이션만 데이터를 보게 할 수 있습니다.

필드 레벨 암호화를 설정하려면 CloudFront에 퍼블릭 키를 추가한 후 이 키를 사용하여 암호화하려는 필드 세트를 지정합니다. 자세한 내용은 [필드 수준 암호화를 사용하여 민감한 데이터 보호](field-level-encryption.md) 단원을 참조하세요.

## 엣지에서의 사용자 지정
<a name="IntroductionUseCasesProgrammableCDN"></a>

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

CloudFront에서 LLambda@Edge를 사용하면 CloudFront가 제공하는 콘텐츠를 다양한 방법으로 사용자 지정할 수 있습니다. Lambda@Edge에 대한 자세한 내용과 CloudFront를 사용하여 함수를 생성하고 배포하는 방법을 알아보려면 [Lambda@Edge를 사용하여 엣지에서 사용자 지정](lambda-at-the-edge.md) 단원을 참조하십시오. 해당 솔루션에 맞게 사용자 지정할 수 있는 다양한 코드 샘플을 보려면 [Lambda@Edge 예제 함수](lambda-examples.md) 단원을 참조하십시오.

## Lambda@Edge 사용자 지정을 사용하여 프라이빗 콘텐츠 제공
<a name="IntroductionUseCasesPrivateContentAtTheEdge"></a>

Lambda@Edge를 사용하면 서명된 URL 또는 서명된 쿠키를 사용하는 것 이외에, 자체 사용자 지정 오리진에서 프라이빗 콘텐츠를 제공하도록 CloudFront 배포를 구성할 수 있습니다.

CloudFront를 통해 프라이빗 콘텐츠를 제공하려면 다음과 같이 합니다.
+ 최종 사용자가 [서명된 URL 또는 서명된 쿠키](PrivateContent.md)를 사용하여 콘텐츠에 액세스하도록 요구합니다.
+ CloudFront의 오리진 대상 서버에서만 사용할 수 있도록 오리진에 대한 액세스를 제한합니다. 이렇게 하려면 다음 중 하나를 수행합니다.
  + Amazon S3 오리진의 경우 [오리진 액세스 제어(OAC)를 사용](private-content-restricting-access-to-s3.md)할 수 있습니다.
  + 사용자 지정 오리진의 경우 다음과 같이 할 수 있습니다.
    + 사용자 지정 오리진이 Amazon VPC 보안 그룹 또는 AWS Firewall Manager에 의해 보호되는 경우 [CloudFront 관리형 접두사 목록을 사용](LocationsOfEdgeServers.md#managed-prefix-list)하여 CloudFront의 오리진 대상 IP 주소에서만 오리진으로의 인바운드 트래픽을 허용할 수 있습니다.
    + 사용자 지정 HTTP 헤더를 사용하여 CloudFront의 요청에 대해서만 액세스를 제한합니다. 자세한 내용은 [사용자 지정 오리진의 파일에 대한 액세스 제한](private-content-overview.md#forward-custom-headers-restrict-access) 및 [사용자 지정 헤더를 오리진 요청에 추가](add-origin-custom-headers.md) 섹션을 참조하세요. 사용자 지정 헤더를 사용하여 Application Load Balancer 오리진에 대한 액세스를 제한하는 예제는 [Application Load Balancer에 대한 액세스 제한](restrict-access-to-load-balancer.md) 단원을 참조하세요.
    + 사용자 지정 오리진에 사용자 지정 액세스 제어 로직이 필요한 경우 Lambda@Edge를 사용하여 블로그 게시물 [Amazon CloudFront 및 Lambda@Edge를 사용한 프라이빗 콘텐츠 제공](https://aws.amazon.com/blogs/networking-and-content-delivery/serving-private-content-using-amazon-cloudfront-aws-lambdaedge/)에 설명된 대로 해당 로직을 구현할 수 있습니다.

# CloudFront에서 콘텐츠를 제공하는 방법
<a name="HowCloudFrontWorks"></a>

초기 설정 후에 CloudFront는 해당 웹 사이트나 애플리케이션과 상호 작용하여 콘텐츠 전송 속도를 높입니다. 이 단원에서는 최종 사용자가 콘텐츠를 요청할 때 CloudFront가 콘텐츠를 어떻게 제공하는지를 설명합니다.

**Topics**
+ [CloudFront에서 사용자에게 콘텐츠를 제공하는 방법](#HowCloudFrontWorksContentDelivery)
+ [CloudFront에서 리전 에지 캐시를 사용하는 방식](#CloudFrontRegionaledgecaches)

## CloudFront에서 사용자에게 콘텐츠를 제공하는 방법
<a name="HowCloudFrontWorksContentDelivery"></a>

콘텐츠를 제공하도록 CloudFront를 구성한 후에 사용자가 객체를 요청하면 다음과 같은 결과를 얻습니다.

1. 사용자가 웹 사이트 또는 애플리케이션에 액세스하고 이미지 파일 및 HTML 파일 같은 하나 이상의 객체에 대한 요청을 보냅니다.

1. DNS는 요청을 최적으로 처리할 수 있는 CloudFront POP(엣지 로케이션)로 라우팅합니다. 일반적으로는 지연 시간 관점에서 가장 가까운 CloudFront POP입니다.

1. CloudFront는 해당 캐시에 요청된 객체가 있는지 확인합니다. 객체가 캐시에 있으면 CloudFront는 객체를 사용자에게 반환합니다. 객체가 캐시에 *없으면* CloudFront가 다음을 수행합니다.

   1. CloudFront는 배포의 사양과 요청을 비교하고 요청을 해당하는 객체로 사용자의 원본 서버(예: Amazon S3 버킷 또는 HTTP 서버)에 전달합니다.

   1. 원본 서버는 객체를 다시 엣지 로케이션으로 보냅니다.

   1. 오리진에서 첫 번째 바이트가 도착하면 CloudFront가 객체를 사용자에게 전달하기 시작합니다. CloudFront는 다음에 다른 사용자가 객체를 요청할 때 캐시에 해당 객체를 추가합니다.

![\[CloudFront를 통한 사용자로부터 오리진으로의 요청 및 응답\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/images/how-cloudfront-delivers-content.png)


## CloudFront에서 리전 에지 캐시를 사용하는 방식
<a name="CloudFrontRegionaledgecaches"></a>

CloudFront 상호 접속 위치(*POP* 또는 *엣지 로케이션*이라고도 함)는 많이 사용되는 콘텐츠를 최종 사용자에게 빠르게 제공할 수 있도록 합니다. CloudFront에는 또한 *리전 엣지 캐시*가 있어 POP에 있을 정도로 많이 사용되는 콘텐츠가 아닌 경우에도 최종 사용자가 보다 많은 콘텐츠를 가까이에서 액세스할 수 있도록 하여 콘텐츠의 성능을 개선하는 데 도움을 줍니다.

리전 엣지 캐시는 모든 유형의 콘텐츠, 특히 시간이 지나면서 점차 사용되지 않게 되는 콘텐츠에 유용합니다. 이러한 콘텐츠의 예로는 동영상, 사진 또는 아트워크와 같은 사용자 생성 콘텐츠, 제품 사진 및 동영상과 같은 전자 상거래 자산, 갑자기 사용자가 많아질 수 있는 뉴스 및 이벤트 관련 콘텐츠 등이 있습니다.

**리전 캐시 작동 방식**  
리전 엣지 캐시는 최종 사용자가 쉽게 접할 수 있도록 전역으로 배포되는 CloudFront 위치입니다. 최종 사용자에게 콘텐츠를 직접 제공하는 전역 엣지 로케이션인 POP와 원본 서버 사이에 위치합니다. 객체의 사용도가 떨어지면 개별 POP가 이러한 객체를 제거하여 보다 많이 사용되는 콘텐츠가 해당 공간을 사용하도록 합니다. 리전 엣지 캐시는 개별 POP보다 캐시가 더 큽니다. 따라서 객체가 가장 가까운 리전 엣지 캐시 위치에 더 오래 캐시 상태로 유지됩니다. 따라서 더 많은 콘텐츠를 최종 사용자와 가까운 거리가 유지할 수 있으므로 CloudFront가 오리진 서버로 돌아가야 할 필요성이 줄어들고 최종 사용자를 위한 전반적인 성능도 향상됩니다.

최종 사용자가 웹 사이트나 애플리케이션을 통해 요청하면, DNS는 이 요청을 사용자의 요청을 가장 잘 처리할 수 있는 POP로 라우팅합니다. 일반적으로 지연 시간을 기준으로 가장 가까운 CloudFront 엣지 로케이션이 여기에 해당합니다. POP에서 CloudFront는 해당 캐시에 요청된 객체가 있는지 확인합니다. 객체가 캐시에 있으면 CloudFront는 객체를 사용자에게 반환합니다. 객체가 캐시에 없으면, 일반적으로 POP가 가장 가까운 리전 엣지 캐시로 이동하여 객체를 가져옵니다. POP가 리전 엣지 캐시를 건너뛰고 오리진으로 직접 이동하는 경우에 대한 자세한 내용은 다음 참고 사항을 참조하세요.

리전 엣지 캐시 위치에서 CloudFront는 해당 캐시에 요청된 객체가 있는지 다시 확인합니다. 객체가 캐시에 있으면 CloudFront가 객체를 요청한 POP에 전달합니다. 리전 엣지 캐시 위치에서 첫 번째 바이트가 도착하면 CloudFront가 객체를 사용자에게 전달하기 시작합니다. CloudFront는 다음에 다른 사용자가 객체를 요청할 때 POP에서 캐시에 해당 객체를 추가합니다.

객체가 POP 또는 리전 엣지 캐시 위치에서 캐시되지 않는 경우, CloudFront는 배포의 사양과 요청을 비교하고 요청을 원본 서버로 전달합니다. 원본 서버가 객체를 리전 엣지 캐시 위치로 다시 보낸 이후, 해당 객체가 POP에 전달되고, CloudFront가 파일을 사용자에게 전달합니다. 이 경우 CloudFront는 다음 번에 최종 사용자가 해당 객체를 요청할 때 POP 뿐만 아니라 리전 엣지 캐시 위치의 캐시에도 객체를 추가합니다. 이를 통해 리전의 모든 POP에서 로컬 캐시를 공유하도록 하고, 오리진 서버에 요청이 여러 번 제출되지 않습니다. CloudFront는 또한 원본 서버와의 연결을 계속 유지하므로 최대한 빨리 오리진으로부터 해당 객체를 가져올 수 있습니다.

**참고**  
리전 엣지 캐시는 POP에 기능 패리티를 둡니다. 예를 들어, 캐시 무효화 요청이 들어오면 객체가 만료되기 전에 POP 캐시 및 리전 엣지 캐시 모두에서 객체가 제거됩니다. 다음에 최종 사용자가 객체를 요청할 때, CloudFront에서는 최신 버전의 객체를 가져오도록 오리진에 반환합니다.
프록시 HTTP 메서드(`PUT`, `POST`, `PATCH`, `OPTIONS`, `DELETE`)는 POP에서 오리진으로 바로 이동하며 리전 엣지 캐시를 통해 프록시되지 않습니다.
요청 시 결정된 동적 요청은 리전 엣지 캐시를 통과하지 않고 오리진으로 직접 이동합니다.
오리진이 Amazon S3 버킷이고 요청의 최적 리전 엣지 캐시가 S3 버킷과 동일한 AWS 리전에 있는 경우, POP가 리전 엣지 캐시를 건너뛰고 S3 버킷으로 직접 이동합니다.

다음 다이어그램에서는 CloudFront 엣지 로케이션 및 리전 엣지 캐시를 통해 요청 및 응답이 어떻게 전달되는지 보여줍니다.

![\[엣지 로케이션 및 리전 엣지 캐시를 통해 최종 사용자에서 오리진까지의 요청/응답 경로를 보여주는 다이어그램.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/images/regional-edge-caches.png)


# CloudFront 엣지 서버의 위치 및 IP 주소 범위
<a name="LocationsOfEdgeServers"></a>

CloudFront 엣지 서버의 위치 목록은 [Amazon CloudFront 글로벌 엣지 네트워크](https://aws.amazon.com/cloudfront/features/#Global_Edge_Network) 페이지를 참조하십시오.

Amazon Web Services(AWS)는 현재 IP 주소 범위를 JSON 형식으로 게시합니다. 현재 범위를 보려면 [ip-ranges.json](https://ip-ranges.amazonaws.com/ip-ranges.json)을 다운로드합니다. 자세한 내용은 *Amazon Web Services 일반 참조*의 [AWS IP 주소 범위](https://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html) 단원을 참조하세요.

CloudFront 엣지 서버와 연결된 IP 주소 범위를 찾으려면 ip-ranges.json에서 다음 문자열을 검색합니다.

```
"region": "GLOBAL",
"service": "CLOUDFRONT"
```

또는 [https://d7uri8nf7uskq.cloudfront.net/tools/list-cloudfront-ips](https://d7uri8nf7uskq.cloudfront.net/tools/list-cloudfront-ips)에서 CloudFront IP 범위만 볼 수 있습니다.

## CloudFront 관리형 접두사 목록 사용
<a name="managed-prefix-list"></a>

CloudFront 관리형 접두사 목록은 전 세계적으로 배포된 CloudFront의 모든 원본 서버의 IP 주소 범위를 포함합니다. 원본이 AWS에 호스트되고 Amazon VPC [보안 그룹](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html)에서 보호되는 경우 CloudFront 관리형 접두사 목록을 사용하여 CloudFront의 원본 서버에서 원본으로의 인바운드 트래픽만 허용하여 CloudFront 이외의 트래픽이 원본에 도달하지 못하도록 차단할 수 있습니다. CloudFront가 관리형 접두사 목록을 유지 관리하기 때문에 CloudFront의 모든 글로벌 원본 서버의 IP 주소를 언제나 최신 상태로 유지합니다. CloudFront 관리형 접두사 목록을 사용할 경우, IP 주소 범위 목록을 직접 읽거나 유지 관리할 필요가 없습니다.

예를 들어 오리진이 유럽(런던) 리전(`eu-west-2`)의 Amazon EC2 인스턴스라고 가정합니다. 인스턴스가 VPC에 있는 경우 CloudFront 관리형 접두사 목록에서 인바운드 HTTPS 액세스를 허용하는 보안 그룹 규칙을 만들 수 있습니다. 그 결과 CloudFront의 모든 글로벌 원본 서버가 인스턴스에 도달할 수 있습니다. 보안 그룹에서 나머지 인바운드 규칙을 모두 제거할 경우 CloudFront가 아닌 트래픽이 인스턴스에 도달하는 것을 차단할 수 있습니다.

CloudFront 관리형 접두사 목록은 다음과 같습니다.
+ `com.amazonaws.global.cloudfront.origin-facing`(IPv4)
+ `com.amazonaws.global.ipv6.cloudfront.origin-facing`(IPv6)



자세한 내용은 [https://docs.aws.amazon.com/vpc/latest/userguide/working-with-aws-managed-prefix-lists.html#use-aws-managed-prefix-list](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-aws-managed-prefix-lists.html#use-aws-managed-prefix-list)Amazon VPC 사용 설명서의 *AWS 관리형 접두사 목록 사용*을 참조하십시오.

**중요**  
CloudFront 관리형 접두사 목록은 고유한 방식으로 Amazon VPC 할당량에 적용됩니다. 자세한 내용은 *Amazon VPC 사용 설명서*의 [AWS 관리형 접두사 목록 가중치](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-aws-managed-prefix-lists.html#aws-managed-prefix-list-weights)를 참조하십시오.

# AWS SDK와 함께 CloudFront 사용
<a name="sdk-general-information-section"></a>

다양한 프로그래밍 언어에 대해 AWS 소프트웨어 개발 키트(SDK)를 사용할 수 있습니다. 각 SDK는 개발자가 선호하는 언어로 애플리케이션을 쉽게 구축할 수 있도록 하는 API, 코드 예제 및 설명서를 제공합니다.


| SDK 설명서 | 코드 예제 | 
| --- | --- | 
| [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/sdk-for-cpp) | [AWS SDK for C\$1\$1 코드 예제](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp) | 
| [AWS CLI](https://docs.aws.amazon.com/cli) | [AWS CLI 코드 예제](https://docs.aws.amazon.com/code-library/latest/ug/cli_2_code_examples.html) | 
| [AWS SDK for Go](https://docs.aws.amazon.com/sdk-for-go) | [AWS SDK for Go 코드 예제](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/gov2) | 
| [AWS SDK for Java](https://docs.aws.amazon.com/sdk-for-java) | [AWS SDK for Java 코드 예제](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2) | 
| [AWS SDK for JavaScript](https://docs.aws.amazon.com/sdk-for-javascript) | [AWS SDK for JavaScript 코드 예제](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3) | 
| [AWS SDK for Kotlin](https://docs.aws.amazon.com/sdk-for-kotlin) | [AWS SDK for Kotlin 코드 예제](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/kotlin) | 
| [AWS SDK for .NET](https://docs.aws.amazon.com/sdk-for-net) | [AWS SDK for .NET 코드 예제](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/dotnetv3) | 
| [AWS SDK for PHP](https://docs.aws.amazon.com/sdk-for-php) | [AWS SDK for PHP 코드 예제](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php) | 
| [AWS Tools for PowerShell](https://docs.aws.amazon.com/powershell) | [AWS Tools for PowerShell 코드 예제](https://docs.aws.amazon.com/code-library/latest/ug/powershell_5_code_examples.html) | 
| [AWS SDK for Python (Boto3)](https://docs.aws.amazon.com/pythonsdk) | [AWS SDK for Python (Boto3) 코드 예제](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python) | 
| [AWS SDK for Ruby](https://docs.aws.amazon.com/sdk-for-ruby) | [AWS SDK for Ruby 코드 예제](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/ruby) | 
| [AWS SDK for Rust](https://docs.aws.amazon.com/sdk-for-rust) | [AWS SDK for Rust 코드 예제](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/rustv1) | 
| [AWS SDK for SAP ABAP](https://docs.aws.amazon.com/sdk-for-sapabap) | [AWS SDK for SAP ABAP 코드 예제](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/sap-abap) | 
| [AWS SDK for Swift](https://docs.aws.amazon.com/sdk-for-swift) | [AWS SDK for Swift 코드 예제](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/swift) | 

**예제 가용성**  
필요한 예제를 찾을 수 없습니까? 이 페이지 하단의 **피드백 제공** 링크를 사용하여 코드 예제를 요청합니다.

## CloudFront 기술 리소스
<a name="resources-cloudfront"></a>

다음 리소스를 사용하여 CloudFront에 대한 기술적인 질문에 대한 답변을 얻으세요.
+ [AWS re:Post](https://repost.aws/tags/TA8pHF0m5aQdawzT2gwPcVYQ/amazon-cloudfront) – 개발자가 CloudFront와 관련된 기술 질문에 대해 토론을 할 수 있는 커뮤니티 기반의 질문 및 답변 사이트입니다.
+ [지원 센터](https://console.aws.amazon.com/support/home) - 이 사이트에는 최근 지원 사례와 AWS Trusted Advisor 및 상태 확인 결과에 대한 정보가 포함되어 있습니다. 또한 토론 포럼, 기술 FAQ, 서비스 상태 대시보드에 대한 링크와 지원 플랜에 대한 정보를 제공합니다.
+ [AWS Premium Support](https://aws.amazon.com/premiumsupport/) – 1:1 신속 대응 지원 채널을 통해 AWS에서 애플리케이션을 구축하고 실행할 수 있도록 지원하는 AWS Premium Support에 대해 알아봅니다.
+ [AWS IQ](https://iq.aws.amazon.com/?utm=docs) - AWS 공인 전문가의 도움을 받습니다.