$ yh.log
[AWS 자격증] Amazon CloudFront 정리

[AWS 자격증] Amazon CloudFront 정리

AWSCloudFrontCDN자격증

작성자 : 오예환 | 작성일 : 2026-01-10 | 수정일 : 2026-01-10

Amazon CloudFront 정리

1. CloudFront 개요

CloudFront란?

  • Content Delivery Network (CDN) - 콘텐츠 전송 네트워크
  • 전 세계 수백 개의 Edge Location에서 콘텐츠 캐싱
  • 읽기 성능 향상, 사용자 경험 개선

보안 기능

  • DDoS 방어 (전 세계 분산 구조)
  • AWS Shield 통합
  • AWS WAF (Web Application Firewall) 통합

2. CloudFront Origins (원본)

지원하는 Origin 유형

Origin 유형설명보안
S3 Bucket파일 배포 및 캐싱, S3 업로드도 가능OAC (Origin Access Control)
VPC OriginVPC Private Subnet 내 애플리케이션ALB/NLB/EC2
Custom Origin (HTTP)S3 정적 웹사이트, 모든 퍼블릭 HTTP 백엔드-

S3를 Origin으로 사용 시

                    ┌─── Edge (LA) ───┐

S3 Bucket ←─────────┼─── Edge (Mumbai)│ ←── Users
(Origin)   Private     (전 세계)
      AWS      ├─── Edge (Melbourne)

   OAC              └─── Edge (São Paulo)
   +
 Bucket Policy
  • OAC (Origin Access Control) + S3 Bucket Policy로 보안

3. CloudFront vs S3 Cross Region Replication

비교 항목CloudFrontS3 Cross Region Replication
네트워크Global Edge Network리전별 설정 필요
업데이트TTL 기반 캐싱 (예: 1일)거의 실시간
특징캐싱읽기 전용
용도정적 콘텐츠 (전 세계 배포)동적 콘텐츠 (특정 리전 저지연)

4. CloudFront 캐싱

기본 개념

  • 캐시는 각 Edge Location에 존재
  • Cache Key로 객체 식별
  • Cache Hit 비율 최대화 = Origin 요청 최소화
  • CreateInvalidation API로 캐시 강제 갱신 가능

동작 흐름

Client Edge Location [캐시 확인]

              ┌─── Cache Hit 즉시 반환

              └─── Cache Miss Origin에서 가져옴 캐시 저장 반환

                                               TTL 만료

5. Cache Key

기본 Cache Key 구성

Cache Key = hostname + resource portion of URL
 
예: mywebsite.com + /content/stories/example-story.html

Cache Key 확장

  • 사용자, 디바이스, 언어, 위치에 따라 콘텐츠가 다른 경우
  • Cache Policy로 추가 요소 포함 가능:
    • HTTP Headers
    • Cookies
    • Query Strings

6. Cache Policy (캐시 정책)

캐시 기준 설정

요소옵션
HTTP HeadersNone, Whitelist
CookiesNone, Whitelist, Include All-Except, All
Query StringsNone, Whitelist, Include All-Except, All

TTL 설정

  • 0초 ~ 1년 설정 가능
  • Origin에서 Cache-Control, Expires 헤더로도 설정 가능

HTTP Headers 옵션

옵션설명캐싱 성능
None기본 헤더만 포함, 헤더 전달 안 함최고
Whitelist지정한 헤더만 Cache Key에 포함 + Origin에 전달중간

Query Strings 옵션

옵션설명캐싱 성능
NoneQuery String 무시, 전달 안 함최고
Whitelist지정한 것만 포함 + 전달좋음
Include All-Except지정한 것 제외하고 포함 + 전달중간
All모든 Query String 포함 + 전달최저

7. Origin Request Policy

개요

  • Cache Key에는 포함하지 않고 Origin 요청에만 포함할 값 지정
  • 캐시 중복 방지

포함 가능 항목

  • HTTP Headers: None, Whitelist, All viewer headers
  • Cookies: None, Whitelist, All
  • Query Strings: None, Whitelist, All

Cache Policy vs Origin Request Policy

Client 요청:
GET /content/stories/example-story.html?ref=123abc&split-pages=false
Headers: User-Agent, Authorization, Date, Keep-Alive
Cookie: session_id=12344321
 
┌─────────────────────────────────────────────────────┐
                  Cache Policy
  Cache Key:
  - mywebsite.com
  - /content/stories/example-story.html
  - Header: Authorization
└─────────────────────────────────────────────────────┘
 
┌─────────────────────────────────────────────────────┐
             Origin Request Policy
  Forward to Origin:
  - Headers: User-Agent, Authorization
  - Cookies: session_id
  - Query Strings: ref
└─────────────────────────────────────────────────────┘
 
Origin으로 전달되는 요청:
GET /content/stories/example-story.html?ref=123abc
Headers: User-Agent, Authorization
Cookie: session_id=12344321

8. Cache Invalidation (캐시 무효화)

필요한 상황

  • Origin 파일 업데이트 후 TTL 만료 전 캐시 갱신 필요

무효화 방법

  • CreateInvalidation API 사용
  • 전체 무효화: /*
  • 특정 경로: /images/*, /index.html

동작

S3 Bucket (Origin)
 파일 업데이트

CloudFront에 Invalidation 요청


┌─────────────────┐   ┌─────────────────┐
 Edge Location 1 Edge Location 2
   캐시 무효화   캐시 무효화
└─────────────────┘   └─────────────────┘

9. Cache Behaviors (캐시 동작)

개요

  • URL 경로 패턴별 다른 설정 적용
  • 다른 Origin으로 라우팅 가능

경로 패턴 예시

패턴Origin용도
/images/*S3 Bucket이미지 파일
/api/*ALBAPI 요청
/*S3 Bucket기본 (항상 마지막 처리)

로그인 페이지 예시

CloudFront Distribution

    ├─ /login EC2 (인증 서버) → Signed Cookies 생성

    └─ /* (default) → S3 Bucket (Signed Cookies 필요)

10. Static vs Dynamic 분리 전략

Cache Hit 최대화 방법

┌─────────────────────────────────────────────────────┐
                   CloudFront CDN Layer

  Static Content    Dynamic Content
  (S3)                    │    (ALB + EC2)           │

  - 헤더/세션 캐싱 없음  - 적절한 헤더/쿠키 캐싱
  - 캐시 히트율 최대화
└─────────────────────────────────────────────────────┘

11. ALB/EC2를 Origin으로 사용

방법 1: VPC Origins (권장)

  • VPC Private Subnet 내 애플리케이션 배포 가능
  • 인터넷에 노출 불필요
Users CloudFront Edge VPC Origin Private Subnet
                                            ├─ ALB
                                            ├─ NLB
                                            └─ EC2

방법 2: Public Network

ALB 사용 시:

Edge Location (Public IP)
 Allow Edge Location IPs
ALB (Must be Public)
 Allow ALB Security Group
EC2 (Can be Private)

EC2 직접 사용 시:

Edge Location (Public IP)
 Allow Edge Location IPs
EC2 (Must be Public)

💡 Edge Location IP 목록:
http://d7uri8nf7uskq.cloudfront.net/tools/list-cloudfront-ips


12. Geo Restriction (지역 제한)

설정 방식

방식설명
Allowlist지정 국가에서만 접근 허용
Blocklist지정 국가에서 접근 차단

특징

  • 3rd party Geo-IP 데이터베이스로 국가 판별
  • 사용 사례: 저작권법에 따른 콘텐츠 접근 제어

13. Signed URL / Signed Cookies

용도

  • 프리미엄 사용자에게만 유료 콘텐츠 배포

Signed URL vs Signed Cookies

구분Signed URLSigned Cookies
대상개별 파일 (파일당 1개 URL)여러 파일 (1개 쿠키로 다수 파일)

정책에 포함되는 정보

  • URL 만료 시간
  • 접근 가능 IP 범위
  • Trusted Signers (서명 가능한 AWS 계정)

URL 유효 기간 권장

콘텐츠 유형유효 기간
공유 콘텐츠 (영화, 음악)짧게 (몇 분)
개인 콘텐츠길게 (몇 년까지 가능)

동작 흐름

1. Client Application (인증/인가)
2. Application AWS SDK로 Signed URL 생성
3. Application Client에 Signed URL 반환
4. Client CloudFront (Signed URL로 요청)
5. CloudFront OAC S3 객체 반환

14. CloudFront Signed URL vs S3 Pre-Signed URL

비교 항목CloudFront Signed URLS3 Pre-Signed URL
접근 범위경로 기반 (Origin 무관)특정 S3 객체
키 관리계정 전체 Key Pair (root 관리)IAM Principal의 키
필터링IP, 경로, 날짜, 만료제한적
캐싱✅ 활용 가능❌ 직접 S3 접근
권장 용도CloudFront 배포 콘텐츠S3 직접 접근

15. Signed URL 서명 프로세스

서명자 유형

유형설명권장
Trusted Key GroupAPI로 키 생성/교체, IAM으로 보안권장
AWS Account Key Pairroot 계정 + 콘솔로 관리❌ 비권장

키 사용 방식

┌─────────────────────────────────────────┐
              Key Pair 생성
  - Private Key: 애플리케이션 (EC2 )    │
  - Public Key: CloudFront에 업로드
└─────────────────────────────────────────┘


┌─────────────────────────────────────────┐
  Private Key로 URL 서명 (애플리케이션)   │
└─────────────────────────────────────────┘


┌─────────────────────────────────────────┐
  Public Key로 URL 검증 (CloudFront)      │
└─────────────────────────────────────────┘

16. CloudFront 요금

Price Classes

Price Class설명비용성능
Price Class All모든 리전높음최고
Price Class 200대부분 리전 (고비용 리전 제외)중간좋음
Price Class 100최저가 리전만최저제한적

비용 절감 방법

  • Edge Location 수를 줄여 비용 절감
  • Price Class 100/200 선택

17. Multiple Origins (다중 Origin)

경로 패턴별 Origin 라우팅

CloudFront Distribution

    ├─ /api/* ALB (API 서버)

    └─ /* S3 Bucket (정적 파일)

18. Origin Groups (고가용성)

구성

  • Primary Origin + Secondary Origin
  • Primary 실패 시 Secondary로 자동 전환

동작 흐름

Client CloudFront Primary Origin (Origin A)

                    ┌─────┴─────┐
 정상 응답 반환

 에러 응답 Secondary Origin (Origin B) 시도
                    └───────────┘

S3 + CloudFront 리전 레벨 고가용성

Origin Group
    ├─ Primary: S3 Bucket (us-east-1)
 Replication
    └─ Secondary: S3 Bucket (eu-west-1)

19. Field Level Encryption

개요

  • 민감한 정보를 Edge에서 암호화
  • HTTPS에 추가적인 보안 레이어
  • 비대칭 암호화 사용

동작 흐름

Client Edge Location ALB Web Server

        Public Key로            Private Key로
        암호화                   복호화

설정

  • POST 요청의 특정 필드 지정 (최대 10개)
  • Public Key 지정하여 암호화

20. Real-Time Logs

개요

  • CloudFront 요청을 실시간으로 Kinesis Data Streams에 전송
  • 콘텐츠 전송 성능 모니터링, 분석, 조치

설정 옵션

  • Sampling Rate: 로그를 받을 요청 비율
  • 특정 필드 선택
  • 특정 Cache Behaviors (경로 패턴) 선택

아키텍처 예시

CloudFront Kinesis Data Streams Lambda (실시간 처리)

                    └→ Kinesis Data Firehose S3/Redshift (저장/분석)

핵심 요약

Cache 최적화 전략

전략설명
Cache Key 최소화불필요한 헤더/쿠키/쿼리 제외
Static/Dynamic 분리정적 콘텐츠는 캐싱, 동적은 별도 처리
적절한 TTL 설정콘텐츠 특성에 맞게
Cache Behaviors 활용경로별 최적화된 설정

Origin 유형별 사용 사례

Origin사용 사례
S3 Bucket정적 웹사이트, 이미지, 미디어
VPC Origin (ALB/EC2)Private Subnet 앱, API
Custom HTTP기존 HTTP 서버, S3 정적 웹사이트

보안 기능 요약

기능용도
OACS3 Origin 보안
Geo Restriction국가별 접근 제어
Signed URL/Cookies프리미엄 콘텐츠 보호
Field Level Encryption민감 필드 암호화