본문 바로가기
CSP (Cloud Service Provider)/AWS

[AWS] CloudFront 쿠키 기반의 콘텐츠 캐싱

by BTC-큰뉴진 2023. 5. 11.

내가 만든 쿠키~🍪

BTC 뉴진쓰팀의 큰뉴진입니다!

이번에 쿠키와 관련된 AWS CloudFront의 기능을 소개해드릴게요.


CloudFront는 엣지 서버에 웹 콘텐츠를 저장해서 사용자가 직접 오리진 서버에 접근하지 않아도 사용자에게 필요한 콘텐츠를 전달하는 서비스인데요, 이때 쿠키를 사용하지 않는답니다.

그래서 CloudFront에 다른 쿠키를 가진 같은 요청이 오면 요청을 동일하게 처리하고 두 요청에 대해 동일한 객체를 반환하게 되요. 

 

쿠키 기반의 콘텐츠 캐싱을 사용하면, 쿠키별로 객체의 버전을 다르게 캐싱할 수 있게 되는데요, 어떻게 동작하는지 한번 알려드릴게요.

 

사용자가 콘텐츠를 요청할 때

CloudFront에서는

같이 전달된 쿠키의 일부 혹은 전체를 사용해서 캐시의 객체를 고유하게 식별하고 오리진 서버로 요청과 같이 쿠키를 전달합니다.

 

오리진 서버에서는

CloudFront로 요청에 대한 응답을 반환합니다.

응답을 받은 CloudFront는 사용자에게 콘텐츠를 전달하고 쿠키의 값에 따라서 객체를 캐싱합니다.

 

💡만약 쿠키의 값이 여러 개인 요청을 하게 되면 각각에 대한 응답을 반환하게 되니 쿠키의 개수가 많아지면 로딩이 발생할 수 있어요.


 

쿠키 기반의 콘텐츠 캐싱을 구성하려면 S3와 CloudFront에서 설정이 필요하답니다.

CloudFront에서는 캐시 동작 설정을 통해서 오리진에 전달할 쿠키를 제어할 수 있어요.

Default 설정은 오리진에게 쿠키를 전달하지 않음입니다.

 

선택할 수 있는 옵션은 아래와 같아요.

  • 오리진에 모든 쿠키 전달 :
    • 오리진 응답에 Set-Cookie 헤더가 포함되면 CloudFront는 요청된 객체와 함께 사용자에게 해당 헤더를 반환합니다.
    • 또한 CloudFront는 오리진에서 반환된 객체와 함께 Set-Cookie 헤더를 캐싱하고 모든 캐시 적중 시 사용자에게 해당 Set-Cookie 헤더를 보냅니다.
    • 오리진에서 응답을 반환할 때 CloudFront는 사용자 요청의 쿠키 이름 및 쿠키 값을 사용하여 응답을 캐싱합니다.
  • 지정한 쿠키 세트 전달 :
    • 뷰어 요청에 나열된 쿠키 이름과 값을 사용하여 응답을 캐시 합니다. 쿠키 이름에 와일드카드를 지정해서 화이트리스트 쿠키를 설정할 수 있습니다.
    • 캐시 동작에 대해 전달할 수 있는 쿠키 이름 수에 대한 기본 할당량은 10으로 support center에서 서비스 한도 증가를 요청할 수 있습니다.
    • 오리진 응답에 Set-Cookie 헤더가 포함되면 오리진에 모든 쿠키 전달과 동일하게 동작합니다.
    • CloudFront는 요청을 원본에 전달하기 전에 뷰어가 보내는 쿠키 중 허용 목록(화이트리스트)에 없는 모든 쿠키를 제거합니다.
  • 오리진에 쿠키를 전달하지 않음 :
    • CloudFront는 오리진에 요청을 전달하기 전에 쿠키를 제거하고 사용자에게 응답을 반환하기 전에 응답에서 Set-Cookie 헤더를 제거합니다.
    • CloudFront는 사용자가 보낸 쿠키에 따라 객체를 캐싱하지 않습니다.

 


 

S3에서는 쿠키 전달과 화이트리스트 쿠키를 설정할 수 있어요.

해당 옵션들은 웹 사이트 엔드포인트로 구성된 버킷에만 적용된답니다.

  • 쿠키 전달
    1. CloudFront에서 쿠키를 오리진 서버로 전달할지 여부
    2. 전달할 쿠키(전달하는 경우) → 화이트리스트 쿠키 필드 사용
    Amazon S3에서는 쿠키를 처리하지 않으며 오리진에 쿠키를 전달함으로써 캐싱 가능성이 줄어듭니다.
    • Amazon S3 오리진에 요청을 전달하는 캐시 동작의 경우 **쿠키 전달(Forward Cookies)**에 대해 **없음(None)**을 선택합니다.
    • 아래와 같은 옵션을 선택할 수 있습니다.
  • 화이트리스트 쿠키
    • 다음 와일드카드를 지정하여 쿠키 이름을 지정할 수 있습니다.
    • ****는 쿠키 이름의 0개 이상의 문자에 해당합니다.
    • **?**는 쿠키 이름의 정확히 1문자에 해당합니다.
    • 쿠키 전달 목록의 화이트리스트를 선택하는 경우, 화이트리스트 쿠키필드에 이 캐시 동작에 대해 CloudFront에서 오리진 서버에 전달하려는 쿠키 이름을 입력합니다.

이렇듯 쿠키 기반 콘텐츠 캐싱에 대해서 알아보는 시간을 가졌는데요~

CloudFront에 대해서 관심이 있다면 이 기능을 응용해 보는 것도 좋을 것 같아요~

다음에도 알찬 정보를 가져올게요!

 

이상으로 뉴진쓰팀의 큰뉴진이었습니다!

'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글

[AWS] ALB 로그 수집 후 S3 저장 방법  (0) 2023.05.11
[AWS] 구매 옵션  (0) 2023.05.11
[AWS] EKS addon amazon ebs csi 드라이버 설치  (0) 2023.05.08
[AWS] code deploy  (0) 2023.05.07
[AWS] CloudWatch  (0) 2023.04.29

댓글