[AWS] Cloudfront - 비용 최적화

Cloudfront가 꽤 저렴한 편에 속하는 서비스이긴 하지만, 트래픽 크기가 늘거나, Lambda Edge 같은 것과 맞물려서 쓰이게 된다면 비용이 급상승하는 것은 드문 일이 아니다.

Cloudfront에서 비용 최적화를 할 수 있는 경로를 몇가지 정리해본다,




Cache 정책

Cloudfront 리소스를 그냥 기본 옵션으로 생성했다면, 캐시 정책도 기본 옵션으로 생성될 것이다.

근데 문제는, 기본 캐시 정책의 캐시 만료 시간이 생각보다 짧다는 것이다.
기본 1일, 최소 1초, 최대 1년이다. 최대값을 따르는 경우는 생각보다 많지는 않은 것 같더라.

아무튼 이게 단순 S3 매핑이면 문제가 그나마 덜할텐데, lambda edge 붙여서 이래저래 중간처리하는게 많다면 캐시 만료로 인한 재실행은 생각보다 비용에 큰 영향을 줄 수 있다.

내 경우에는 캐시 TTL을 전부 1년으로 바꾸고


꽤 가시적인 비용 향상을 얻었다. Lambda Edge 호출 수만 해도 절반 이하로 줄어들었다.




모니터링

뭐든 마찬가지지만, 최적화를 하려면 상황을 볼 수 있는 지표가 필요하다.
Cloudfront도 분석 및 최적화를 위한 사용량 지표를 어느 정도 제공한다.

실제로 많이 조회된 객체도 조회할 수 있고

이래저래 볼 수 있는게 좀 있다.




모니터링 - 레퍼러 설정

사용량을 줄이고 최적화를 하려면, 일단 어디서 많이 쓰는지부터 확인하는게 중요하다.
Cloudfront 모니터링 정보 중에는, 어떤 Referrer로 요청이 들어왔는지를 확인할 수 있는 지표가 있다.

브라우저에서는 Referrer를 자동으로 보내서 문제가 없는데, 모바일앱이나 서버 수준에서 Cloudfront 리소스를 다운받는게 있다면 Referrer를 명시적으로 보내줘야 저기에 찍힌다.

그래서 저건 나쁜 지표다.



참조
https://tutorialsdojo.com/validate-referrer-headers-using-cloudfront-function/