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와의 차이일 것이다.