CloudFront
개요
CDN(컨텐츠 전송 네트워크) 서비스를 제공한다.
웹사이트의 컨텐츠를 서로 다른 엣지 로케이션에 미리 캐싱하여 읽기 성능을 높인다.
전세계에 분포된 216개의 엣지 로케이션 덕분에 사용자들이 낮은 레이턴시로 접근할 수 있다.
컨텐츠가 전체적으로 분산되어 있으므로 DDoS 공격에서 보호를 받을 수 있다.
엣지 로케이션에 사용자가 원하는 데이터가 없다면 요청을 보내 조회한 후 데이터를 캐싱해둔다.
Origins
S3 버킷
S3 버킷에는 CloudFront만 접근할 수 있게 하고, CloudFront를 통해 파일을 분산하고 캐싱하도록 한다.
OAC(Origin Access Control, 원본 접근 제어) 방식으로 보안을 강화하고 OAI(Origin Access Identity)를 대체한다.
CloudFront는 S3에 파일을 업로드하기 위한 Ingress로 사용될 수 있다.
CloudFront과 엣지 로케이션을 이용해, 특정 리전에 속한 S3 버킷을 전세계의 엣지 로케이션으로 분산시킬 수 있다.
교차 리전 복제 방식은 CloudFront 방식과 달리 전 세계를 대상으로 하는 것이 아니라 특정 리전을 대상으로 한다. 파일이 거의 실시간으로 갱신되며 캐싱이 되지 않는다. 따라서 일부 리전에 동적 컨텐츠를 낮은 지연시간에 제공하기 위해 사용된다.
Custom Origin (HTTP)
ALB나 EC2 인스턴스, 또는 S3 웹사이트, HTTP 애플리케이션이 원본이 될 수 있다.
즉, 동적 데이터를 라우팅할 수도 있다.
EC2 인스턴스가 원본일 경우 EC2 인스턴스는 Public이어야 하며 Edge Location에서 Public IP를 통해 접근 가능해야 한다. CloudFront에는 VPC가 제공되지 않기 때문이다.
ALB가 원본일 경우 ALB는 Public이어야 하며 Edge Location에서 Public IP를 통해 접근 가능해야 한다. ALB에 연결된 EC2 인스턴스들은 Private이어도 된다.
S3 웹사이트의 경우 버킷을 활성화해서 정적 웹 사이트로 설정해야 한다.
동작 방식
전세계에 퍼져 있는 CloudFront의 엣지가 있고 연결 대상 원본(S3 버킷이나 HTTP 서버)가 존재한다.
클라이언트가 엣지 로케이션에 HTTP 요청을 보내면, 엣지는 캐싱 여부를 확인 후 캐싱되어 있지 않으면 원본으로 가서 요청을 보낸다. 요청 결과를 가져오면서 로컬 캐시에 저장을 한다.
지리적 제한 설정
GeoIP 데이터베이스를 사용하여 사용자의 IP를 해당 국가에 매핑한다.
국가 별 허용 목록과 차단 목록을 정의할 수 있다.
저작권 법에 따라 콘텐츠에 대한 접근을 제어하는 용도로 사용할 수 있다.
가격 등급
엣지 로케이션 위치와 사용량에 따라 가격이 달라진다.
10TB부터 시작하며, 사용량이 많을수록 저렴해진다.
가격 절감을 위해 세 가지 등급 중 하나를 사용할 수 있다.
Price Class All : 모든 리전
Price Class 200 : 대부분의 리전이 해당된다. 특히 비싼 리전들만 제외된다.
Price Class 100 : 유럽, 아메리카 대륙 리전만 해당된다.
캐시 무효화
원본 데이터를 업데이트하는 경우 CloudFront는 이를 제 때 반영하지 못할 수 있다.
캐시 무효화를 통해 전체 혹은 부분 캐시를 없앨 수 있다.
특정 경로의 데이터만 무효화할 수도 있고 전체 데이터를 무효화할 수도 있다.
Last updated