[AWS] CloudFront Cache Behavior란? 쉽게 정리
Amazon CloudFront - CacheBehavior
Cache Behavior
Cache behavior는 CloudFront에서 특정 파일이나 페이지에 맞춘 캐싱 규칙이다.
CloudFront distribution에서 각 콘텐츠 유형이나 경로별로 다른 캐시 설정을 적용할 수 있도록 하는 중요한 기능이다.
📌 쉬운 예시1: 이미지 파일과 텍스트 파일을 다르게 캐시 설정하기
Scenario
– 이미지 파일(예: images/*.jpg
)은 자주 변경되지 않으므로 오랜 시간 캐시하기
– 텍스트 파일(예: text/*.txt
)은 자주 변경되므로 짧은 시간 캐시하기
Cache behavior의 PathPattern(경로 패턴)을 이용해 images/*.jpg
와 text/*.txt
가 이미지 파일인지 텍스트 파일인지 구별이 가능하다. 그리고 구별된 상태에서 TTL(캐싱 시간)을 원하는데로 설정하면 된다.
📌 쉬운 예시2: 로그인 인증에 따른 접근 제한 설정
Scenario
특정 경로(예: /private/*
)에는 인증된 사용자(로그인을 통해서)만 접근할 수 있게 설정하기.
/private/*
경로에는 restricted viewer access를 설정하여, CloudFront의 Signed URL나 Signed Cookie을 사용한 인증된 요청만 접근 가능하도록 설정하기
🤔 문제
한 개발자가 Amazon CloudFront distribution를 사용하여 Amazon S3 버킷의 콘텐츠를 제공하는 새로운 파일 스토리지 애플리케이션을 테스트하고 있습니다. CloudFront distribution는 S3 버킷에 액세스하기 위해 Origin Acess Identity(OAI)를 사용합니다. S3 버킷의 권한은 명시적으로 다른 모든 사용자에 대한 액세스를 차단하도록 설정되어 있습니다.
이 애플리케이션은 사용자에게 로그인 페이지에서 인증을 요청한 후, 서명된 쿠키를 사용하여 개인 스토리지 디렉토리에 접근할 수 있도록 합니다. 개발자는 제한된 뷰어 액세스로 기본 캐시 동작을 사용하도록 배포를 설정하고 원본을 S3 버킷으로 지정했습니다. 그러나 개발자가 로그인 페이지로 이동하려고 할 때 "403 Forbidden" 오류가 발생합니다.
개발자는 인증되지 않은 사용자가 로그인 페이지에 접근할 수 있도록 하는 솔루션을 구현해야 하며, 모든 개인 콘텐츠가 안전하게 유지되어야 합니다.
이 요구 사항을 충족하는 솔루션은 무엇입니까?
- 기본 cache behavior과 동일한 원본을 사용하는 두 번째 캐시 동작을 distribution에 추가합니다. 두 번째 cache behavior의 경로 패턴을 로그인 페이지의 경로로 설정하고, viewer access를 제한 없이 설정합니다. 기본 캐시 동작의 설정은 변경하지 않습니다.
- 기본 cache behavior과 동일한 원본을 사용하는 두 번째 캐시 동작을 distribution에 추가합니다. 두 번째 cache behavior의 경로 패턴을 *로 설정하고, viewer access를 제한적으로 설정합니다. 기본 캐시 동작의 경로 패턴을 로그인 페이지의 경로로 변경하고, viewer access를 제한 없이(unrestricted) 설정합니다.
- 두 번째 원본을 기본 cache behavior의 장애 조치(failover) 원본으로 추가합니다. 장애 조치 원본을 S3 버킷으로 지정합니다. 기본 원본의 경로 패턴을 *로 설정하고 뷰어 액세스를 제한합니다. 장애 조치 원본의 경로 패턴을 로그인 페이지의 경로로 설정하고, 뷰어 액세스를 제한 없이 설정합니다.
- S3 버킷에 읽기 액세스를 허용하는 버킷 정책을 추가합니다. 정책의 리소스를 S3 버킷에 있는 로그인 페이지 객체의 ARN으로 설정합니다. 기본 캐시 동작에 CloudFront 기능을 추가하여 인증되지 않은 요청을 로그인 페이지의 S3 URL로 리디렉션합니다.
정답
정답. 1번
이 문제의 핵심
- CloudFront를 통한 로그인 페이지 접근을 허용시키기
- 로그인 인증되지 않은 사용자에게는 로그인 페이지까지만 접근 가능
- 개인 저장소와 같은 개인 콘텐츠는 로그인 인증이 가능한 유저만 접근 가능
1번.
로그인 페이지에는 인증 없이 접근 가능하게 하고, 개인 콘텐츠는 viewer access를 통해 제한된 접근 설정을 유지하여 보안을 유지한다.
2번.
기본 캐시 동작의 경로를 로그인 페이지로 바꾸고, 모든 사용자에 대해 unrestricted로 설정하여 접근을 허용하고 있다. 그렇기 때문에 모든 콘텐츠가 인증 없이 접근 가능하다.
3번.
failover는 관련이 없다
4번.
불필요하게 복잡하다. cloudfront function은 관련이 없다.