Content Delivery Network (CDN)이다. DDoS 공격을 막고, 방화벽 역할을 하며, 외부 HTTPS 노출시켜 내부 HTTPS와 소통할 수 있게 한다. 또한 엣지 로케이션을 타고 가며 캐싱을 해 다음 Fetch 때는 더 빠르게 반응할 수 있도록 한다. CloudFront의 오리진(진입점)은 아래와 같다.
S3 버킷 - 파일을 엣지(지역 데이터 센터)에 뿌려서 캐시의 역할을 하게 할 수 있다. S3 버킷과 OAI(Origin Access Identity)를 통해 암호화할 수 있으며, S3에 파일을 업로드하는 입구로 쓸 수도 있다.
Custom Origin (HTTP) - ALB, EC2 instance, S3 website, 그리고 HTTP 백엔드 아무거나 오리진이 될 수 있다.
엣지 로케이션은 CloudFront의 한 지점으로 여기를 통해 요청이 들어가면 거기에 대한 응답을 엣지 로케이션이 캐싱한다. 요청이 엣지 로케이션으로 가도록 하는 것은 따로 설정할 수 있다.
Cloudfront는 위치에 따라서 Whitelist와 Blacklist를 만들어 각 지역별로 접근을 차단/허용할 수 있다.
CloudFront vs S3 Cross Region Replication
CloudFront
글로벌 엣지 네트워크
모든 파일은 TTL 만큼만 캐싱된다.
정적 콘텐츠를 사용하는데 최적이다.
S3 Cross Region Replication
지역별로 직접 세팅을 해주어야 한다.
거의 실시간으로 파일이 업데이트 된다.
읽기 전용
적은 리전에 짧은 시연 시간으로 동적 콘텐츠를 사용하는데 최적이다.
서명된 URL / 쿠키
유튜브 프리미엄처럼 특정 유저에게만 콘텐츠를 제공해야 할 필요가 있을 때 쓴다. URL 만료시간, 허용 IP 범위, 그리고 이 URL을 만들 수 있는 AWS 계정을 설정한다. 서명된 URL은 개개의 파일에, 쿠키는 여러 파일에 접근할 때 사용한다.
CloudFront Signed URL vs S3 Signed URL
CloudFront Signed URL - 오리진에 상관없이 URL만 있으면 접근이 가능하다. 루트 계정만 관리 가능하고 캐싱이 가능하다.
S3 Pre-Signed URL - IAM Key를 사용해 S3 버킷에 직접 접근해 파일을 가져온다. 버킷 정책 등 고려해야 할 게 많다.
Advanced
가격 - 지역 (엣지 로케이션) 별로 다 다르다. 아래는 3가지 클래스로 가격을 책정할 수 있다.
멀티 오리진 - URL별로 트래픽을 라우팅할 수 있다.
오리진 그룹 - 한 오리진이 fail 했을 때, 다른 오리진으로 트래픽을 보내도록 묶는 방법이다.
필드 레벨 암호화 - 민감한 정보를 CloudFront가 모르게 하는 기술이다. 비대칭키를 사용해 첫 엣지 로케이션에서 민감한 정보를 암호화한다. 그리고 쭉 암호화되어 있다 마지막 웹 서버(EC2)에 가서 웹 서버의 개인 키로 복호화를 하게 한다.
Global Accelerator
Q. 특정 리전에 배포된 어플리케이션을 어떻게 적은 지연 시간으로 전 세계 사람들이 이용할 수 있을까?
A. Edge Location을 타고 해당 리전에 접근하면 된다.
이렇게 이야기하면 CloudFront와는 무슨 차이냐 이야기할 수 있다. CloudFront는 정적/동적 콘텐스를 캐싱해서 전송한다. 그래서 빠른 속도를 낼 수 있다.
Global Accelerator는 단순한 Proxy로 TCP, UDP 통신 모두 직접적으로 최종 목적지의 IP를 가지게 된다. 이때, 여러 리전에 같은 IP의 같은 리소스를 두고 Anycast를 접근할 수 있다. Anycast는 같은 IP가 여러 개일 때, 가장 가까운 IP로 접근하는 방법을 말한다. 실제 리소스를 운영한다는 것이 CloudFront와의 차이일 것이다.