[AWS] CloudFront

Hyun-Sung Kim·2025년 1월 6일

AWS

목록 보기
8/10

AWS CloudFront는 콘텐츠 전송 네트워크(CDN) 서비스를 지원하는 완전 관리형 AWS 서비스입니다.

AWS CloudFront를 사용하면 콘텐츠 전송 속도를 높이고 보안을 강화하며, 비용 효율적인 방식으로 대규모 트래픽을 처리할 수 있습니다.

클라우드 환경에서 글로벌 사용자 기반을 지원하거나 빠른 응답이 필요한 애플리케이션을 운영하려면 CloudFront는 필수적인 선택지가 될 수 있습니다.


1. 개 요

  • 장 점
    - 특정 origin이 위치하는 Region에 거주하는 End user들 뿐만 아니라 다른 Region에 위치한 End user들에게도, Request 시 origin으로부터 더 적은 latency로써 Response를 받기가 가능해짐.
  • 특 징
    - 처음 접근 이후, 2번 째 접속부터는 가까운 Edge Location을 통해 더 빠른 속도로 origin의 cache 데이터에 접근 가능.
    - ALB는 Regional 서비스이지만, CloudFront는 Global 서비스이다.
  • Origin 가능 개체
    • S3
    • ELB
  • Data Flow
    - Route53 -> CloudFront -> Origin

구축 절차

1) AWS 콘솔 - CloudFront - Create distribution

2) 생성 마법사에서 아래 옵션들을 구성

  • Origin domain
    - 미리 만들어둔, S3 버킷을 선택한다.

  • Origin path
    - 미리 만들어둔, S3 버킷 하위의 폴더를 선택한다.
  • OAI
    - public access를 disable 시킨 S3 버킷에 CloudFront만 접근하게 하기 위해 OAI(origin access identity)를 생성한다.

  • Price class

  • Alternate domain name (CNAME)
    - 이 값은 나중에, Route53에서 관련 A Record의 CloudFront 별칭으로 활용됨.
    - 2개 이상의 CNAME 값 입력 가능.
      
  • SSL certificate

3) 생성된 Distribution

4) S3 버킷 policy에 OAI 설정

  • S3 콘솔 -> Buckets -> 내 버킷 -> Permissions 탭 -> Bucket policy

  • 버킷 정책 예제

  • 참조 문서

    {
    		    "Version": "2012-10-17",
    		    "Id": "PolicyForCloudFrontPrivateContent",
    		    "Statement": [
    		        {
    		            "Effect": "Allow",
    		            "Principal": {
    		                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E3xxxxxxxxX"
    		            },
    		            "Action": "s3:GetObject",
    		            "Resource": "arn:aws:s3:::s3-company-oregon/*"
    		        }
    		    ]
    		}
  • OAI 확인하기

  • S3 버킷의 ARN 확인하기

  • 접속 Test
    - {CloudFront Distribution domain name}/{S3버킷에 업로드된 파일명}

5) Route53에 Record 등록

  • Record name : CloudFront의 CName(Alternate domain name)을 기입
  • Value : Domain name을 기입
또는


2.2 CloudFront 배포 접속

  • CloudFront 접속

    {Distribution domain name}/{S3 버킷에 업로드된 object명}

  • 주의 사항
    - 접속 URL은 대소문자를 구분하므로, origin object의 파일명을 유의해야 한다. (확장자 포함)

2.3 부가 기능

Behavior

< Cache key and origin requests >

  • TTL
    - Origin에 더 빠르게 접근하기 위해, 전세계에 퍼져 있는 것이 distribution인데, origin에 있는 Data의 값이 변경될 경우, 그 변경된 값이 전세계의 Edge location에까지 반영되기 까지 소요되는 시간

  • Legacy cache setting

    • Default TTL
      • 여기에 설정된 TTL 값 이후에, Origin에 변경된 정보가 Distribution에 반영됨
    • Maximum TTL
      • user의 code 상에 명시된 TTL이, 이 Max값보다 클 경우, mas 값이 적용됨
    • Minimum TTL
      • user의 code 상에 명시된 TTL이, 이 Minimum값보다 작을 경우, minimum 값이 적용됨

3. 운 영

3.1 캐쉬 무효화

CloudFront 엣지 캐시에서 파일이 만료되기 전에 파일을 제거해야 할 경우, 엣지 캐시에서 파일을 무효화합니다.

  • Cache 무효화 현재 상태

    aws cloudfront get-invalidation --id IJ1111111 --distribution-id E2xxxxxxxx

  • 필요한 IAM 권한
    - CreateInvalidation
  • 개발팀이 캐쉬 무효화 권한을 요청하면, 아래와 같이 custom IAM policy 생성 후, 해당 IAM 계정에 할당
profile
Cloud Engineer

0개의 댓글