AWS Cloudfront

Siyun·2025년 2월 21일
0

AWS

목록 보기
12/37

Amazon CloudFront(CDN=컨텐츠 전송 네트워크)

  • 전 세계의 엣지 로케이션 네트워크를 사용하여 콘텐츠를 전송한다.
  • 전 세계의 엣지 로케이션에 미리 캐싱하여 읽기 성능을 높인다.
  • 사용자가 CloudFront에서 제공하는 콘텐츠를 요청하면 가장 짧은 지연 시간을 제공하는 엣지 로케이션으로 요청이 라우팅된다.
  • 현재 전 세계 엣지 로케이션 수는 400개가 넘는다.
  • 컨텐츠가 전체적으로 분산되어 있으므로 DDoS공격에서 보호 받을 수 있다.
  • CloudFront를 통해 버킷에 데이터를 보내는 방법도 가능 (Ingress라고 함)

📍 CloudFront의 컨텐츠 제공 방식
미국 사용자가 호주의 컨텐츠 요청 -> CloudFront가 호주에서 컨텐츠를 페치해서 가져옴 -> 다른 미국 사용자가 같은 컨텐츠 요청 -> CloudFront가 미국 엣지에 있는 컨텐츠를 제공

📍 CloudFront의 원본 제공 방식 1
S3버킷으로 CloudFront를 통해 파일을 분산,캐싱하기 허용 -> 버킷에는 CloudFront만 접근하게 보장(OAC=Origin Access Control, 원본 접근 제어)

📍 CloudFront의 원본 제공 방식 2
HTTP 백엔드(서버)와 같은 사용자 정의 원본을 쓸 수 있다. ALB, S3 웹사이트, EC2인스턴스가 그 예시. 그러면 제공되는 소스들(EC2, ALB 등)들은 모두 퍼블릭이여야 한다.
그렇지 않으면 CloudFront에는 가상프라이빗클라우드(VPC)가 없기 때문에 EC2인스턴스나 ALB 등에 접근할 수 없게 된다. 따라서 엣지 로케이션의 모든 공용 IP가 EC2에 접근할 수 있도록 하는 보안 그룹 역시 설정해준다.
CloudFront IP 범위 링크 : https://d7uri8nf7uskq.cloudfront.net/tools/list-cloudfront-ips

Cloudfront와 CRR(교체 리전 복제)간의 차이

  • Cloudfront는 전세계의 엣지 네트워크를 이용한다. 전세계를 대상으로 한 정적 컨텐츠를 사용하고자 할 때 용이하다.
  • 교체 리전 복제는 복제를 원하는 각 리전에 설정이 되어 있어야 한다. (=전세계 대상이 아님) 파일은 캐싱되지 않고 실시간으로 갱신된다. 또한 읽기 전용으로만 설정이 가능하다. 일부 리전을 대상으로 동적 컨텐츠를 낮은 지연 시간으로 제공하고자 할 때 유용하다.

CloudFront 실습

퍼블릭이 아닌 버킷의 객체를 CloudFront를 통해 접근하기

1. 배포할 파일들을 담은 S3버킷을 생성

2. CloudFront 콘솔 > Create a CloudFront distribution 선택


Origin domain : 배포할 S3 버킷을 선택한다. (S3 버킷이 아니여도 원하는 어떤 도메인 이름도 입력 가능)
Orgin Access : 아이덴티티에 어떻게 엑세스할지를 묻는 것. pulic으로 할 시 버킷 자체가 반드시 pulic이여야 한다. OAC가 권장되고 이를 선택할 시 새로운 OAC를 생성해야 한다. 생성하고 나면 S3 버킷 정책을 CloudFront가 버킷에 접근할 수 있도록 수정해야한다.

3. 다른 내용은 일단 스킵하고 생성

WAF에서 보안 보호를 현재는 필요없기 때문에 비활성화한다.
생성하고 나면 S3버킷을 수정하라고 뜨고 Copy policy 버튼이 나오는데 그걸로 카피해서 S3 버킷정책을 수정해주면 된다.

4. 도메인 이름으로 확인

CloudFront의 배포물이 준비되면 제공하는 도메인 이름을 통해 컨텐츠를 받아올 수 있다.

CloudFront > Origin access로 들어가면 OAC를 확인할 수 있다.


CloudFront 지리적 제한 (Geo Restriction)

  • 배포판에 접근할 수 있는 사용자를 국가에 따라 제한할 수 있다.
  • 허용 목록을 설정하여 승인 국가 목록을 정의하고 차단 목록을 설정해 금지 국가 목록을 설정할 수 있다.
  • 국가는 GeoIP 데이터베이스를 사용해 사용자의 IP를 해당 국가에 매핑하는 방식으로 결정된다.

지리적 제한 설정 실습

1. CloudFront 배포판 선택 > Security > WAF 아래에 Cloud Geographic restrictions을 통해 지리적 제한을 볼 수 있다.

2. Countries의 Edit을 눌러 편집할 수 있다.

허용 목록과 차단 목록을 눌러 국가를 연결할 수 있다.


CloudFront 요금(Pricing)

  • 엣지 로케이션 위치한 대륙이나 지리 위치에 따라 데이터 전송 비용이 다르다.
  • CloudFront에서 더 많은 데이터가 전송될수록 비용은 낮아진다.

CloudFront 요금 참고 : https://aws.amazon.com/ko/cloudfront/pricing/

가격 등급(Price Classes)

비용 절감을 위해 전 세계 엣지 로케이션 수를 줄이는 방법이 있다.
3가지 등급이 있다.

1) Price Class All: 전 세계 모든 엣지 로케이션을 사용한다. 이 옵션은 최고의 성능을 제공하지만, 비용이 가장 많이 든다.

2) Price Class 200: 대부분의 리전을 사용하지만, 가장 비싼 리전은 제외된다. 이 옵션은 성능과 비용의 균형을 맞추고자 할 때 적합하다.

3) Price Class 100: 가장 저렴한 리전만 사용한다. 이 등급은 북미와 유럽의 엣지 로케이션에만 배포하며, 비용 절감이 주된 목표일 때 적합한 옵션이다.

출처-아마존


CloudFront 캐시 무효화(Cache Invalidations)

  • CloudFront 엣지 로케이션은 백엔드 오리진의 업데이트 사항을 모르고 캐시의 TTL이 만료되면 백엔드 오리진으로부터 업데이트된 콘텐츠를 받게 된다.
  • 최대한 빨리 새 콘텐츠를 받게 하려면 캐시에 있는 TTL을 모두 제거할 수 있다.
  • 특정 경로를 지정해 무효화 할 수 있다.
profile
공부 기록

0개의 댓글