CloudFront: Cache Key 설정 시나리오
query string 으로 숫자가 넘어오면, 여기서 2를 곱해 응답해 주는 간단한 서버를 만들었다.
value 라는 query string 이 넘어오지 않으면 Invalid input 을 응답하도록 했다.
그리고 이를 CloudFront 에 연결하였다.
바로 요청해보자.
??
왜일까?
Invalid input 이 떴다는 것은 query string 이 서버에 전달되지 않았다는 것을 뜻한다.
그렇다. 역시나 query string 이 서버까지 도달하지 않았다.
그럼 CloudFront 에서 quert string 을 버리고 서버에 요청을 한 것인가?
정답이다.
CloudFront 에서는 별도로 Cache Key 로 지정하지 않은 것들은 다 날려버리고 Origin 에 전달한다.
아하! 그럼 이 value 라는 query string 을 cache key 로 지정하면 되겠군요!
이렇게 설정하면 CloudFront 는 value 라는 query string 을 서버에 잘 전달해야겠죠?
네 이제 CloudFront 가 query string 을 뒷단의 서버까지 잘 전달하여 적절한 응답을 잘 받아 왔습니다.
이제 계속 새로고침해서 요청을 해도, 이 API 에 대한 응답은 CloudFront 캐시에 저장이 되어 있기 때문에 서버는 아무 요청을 받지 않아 로그도 찍히지 않습니다.
그렇다면, Cache key 로 지정하고 싶지는 않지만, Origin 에 전달하고 싶을 때는 어떻게 할까?
→ user_id 를 Origin Request Policy 에 추가해주면 된다.