흰 스타렉스에서 내가 내리지

CF(4): CloudFront Behavior (동작) 본문

AWS

CF(4): CloudFront Behavior (동작)

주씨. 2024. 10. 26. 00:38
728x90

# Cache Behavior

  • CloudFront 의 요청이 어떻게 처리되는지 정의하는 다양한 설정의 모음
  • 경로 패턴 단위로 Behavior 구성
    • 예 : files/* , files/*.png , */png
    • 경로 패턴 목록 중 처음으로 매칭된 패턴의 동작을 적용.
    • 신규 생성 시 * 로 고정 
  • 주요 구성 내용
    • Origin
    • 뷰어 설정
    • Cache Policy, Viewer Response Policy, Lambda@EDGE 연결

 


# Viewer 설정

  • Viewer 프로토콜
    • CloudFront 에 접근하는 프로토콜
    • HTTP and HTTPS
    • Redirect HTTP to HTTPS
    • HTTPS only
  • HTTP Method
    • GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
  • 뷰어 액세스를 제한 : Presigned URL / Presigned Cookie 로만 접근 가능하도록 할지 여부
    • 허가된 사용자들에게만 콘텐츠를 제공하고 싶을 때 사용

 


# Policy 설정

  • Cache Policy
    • 어떤 cache-key (HTTP Header, 쿠키, querystring 등) 으로 컨텐츠를 캐시하는지
    • 얼마나 오래 캐시하는지 (TTL)
    • 컨텐츠 압축 저장 관련 설정
  • Origin Request Policy
    • Origin 에 컨텐츠를 요청할 때 어떤 내용을 전달할 것이지 (HTTP Header, querystring 등)
    • Cache Key 로 사용할지 여부와 독립적으로 설정 가능.
      • Origin 에 넘기긴 하지만 Cache Key 로 쓰고 싶지 않을 때
  • Response Header Policy
    • 응답 과정에서 어떤 HTTP Header 를 제거하거나 더할지 설정

 


# CloudFront 의 Cache Key

 

url path 와 color 라는 querystring 을 cache key 로 쓰겠다고 설정을 해 놓은 경우를 보자.

뷰어가 user_id 도 같이 query 에 담아서 보낸다. 

origin 에서는 user_id 를 로깅 용도로만 사용할 뿐, 이미지에 대한 차이는 없다. 

 

그러나 문제는, CloudFront 에서는 별도로 Cache Key 로 지정하지 않은 것들은 다 날려버리고 Origin 에 전달한다.

결과적으로, user_id querystring 은 Origin 에 전달되지 않는다. 

 

그렇다면, Cache key 로 지정하고 싶지는 않지만, Origin 에 전달하고 싶을 때는 어떻게 할까?

user_id 를 Origin Request Policy 에 추가해주면 된다.

 

 


# Response Headers Policy

 

예를 들어, 뷰어가 S3 버킷에 이미지 객체를 요청을 한다.

객체에 Body 이외의 메타데이터가 있을 때, 뷰어에 응답할 때 이 메타데이터가 그대로 헤더에 들어간다.

이 메타데이터에는 민감한 정보까지 담겨있다. 

 

이 때, Response Headers Policy 를 설정하여 어떤 정보들을 제외하고 포함할지 지정할 수 있다. 

 

  • 최대 10개까지 가능하고, 이 이상으로 설정하고 싶으면 Lambda@Edge 를 사용해야 한다. 
  • Authorization header 만 따로 불가능

 

 


# 기타 설정

  • Field Level Encryption : Cloudfront 의 컨텐츠를 보호하는 방법
  • Lambda@Edge

 


# CloudFront 콘솔에서 Behavior(동작) 살펴보기

배포에서의 동작 탭

경로 패턴의 기본값으로 와일드카드(*)로 되어 있다. 

`동작 생성` 버튼을 눌러 살펴보도록 하자. 

 

동작 생성 > 경로 패턴

경로 패턴을 지정할 수 있는데, js파일, jpg 파일 등 여러 경로들이 프리셋으로 있고, 원한다면 커스텀으로 만들 수 있다. 

 

동작 생성 > 원본 및 원본 그룹

경로 패턴에 따른 원본을 선택할 수 있다. 

내가 만든 s3 버킷을 등록해본다. 

 

동작 생성 > 뷰어

뷰어 프로토콜, HTTP Method 등을 설정할 수 있다. 

뷰어 액세스 제한은 presigned-url 과 presigned-cookie 를 어떻게 만들지에 대한 내용이다. 

 

동작 생성 > 캐시 키 및 원본 요청

Cache Policy 와 Origin Request Policy 를 선택할 수 있다. 

이 2가지에 대한 개념은 바로 위에서 설명했다. 까먹었으면 스크롤을 올려보자. 

 

`Create cache policy` 하이퍼링크를 통해 캐시 정책 생성을 할 수 있다.

캐시 정책 생성

minimum, maximum, default TTL 을 설정할 수 있다. 

Cache key 를 설정할 수 있다. header, query string, cookie 를 설정할 수 있다. 

Cache key 에 대한 역할 역시 이전 포스팅과 이곳에서 설명하였었다. 

 

 

동작 생성 > 캐시 키 및 원본 요청 > 응답 헤더 정책

Response Headers Policy 를 설정할 수 있고, 이에 대한 개념 역시 위에서 설명하였다. 

 

 

Lambda@Edge 를 설정할 수 있는데, 이는 따로 포스팅을 할 것이다. 

 

 

'AWS' 카테고리의 다른 글

CF(6): CloudFront 컨텐츠 보호(1)  (1) 2024.10.26
CF(5): CloudFront 파일 관리  (0) 2024.10.26
CF(3): CloudFront Caching (캐싱)  (1) 2024.10.25
CF(2): CloudFront Origin (원본)  (0) 2024.10.25
CF(1): CDN 과 Amazon CloudFront 소개  (0) 2024.10.25