Https를 사용하게 되면서 기존사용하던 S3
와 함께 Cloutfront
를 사용하게 되었다.
S3
의 리액트 빌드 파일을 업데이트 하였으나 서버에 적용이 안되는 문제가 발생했다
Cloudfront는 AWS에서 제공하는 CDN(Content delivery network)
서비스이다.
간략하게 CDN이란
사용자의 지리적위치와 관계없이 컨텐츠를 더욱 빠르게 제공하는 시스템
을 말한다. Cloudfront는 기본적으로 24시간동안(기본 TTL) 오리진의 응답을 캐시한다. 이 동안에 엣지 로케이션에 요청이 오는 경우에는 캐시된 응답을 사용한다.
업데이트 내용이 적용이 안되고 있었던 이유는 캐시된 응답을 사용하고 있었기 때문이다!
캐시된 파일을 제거해보자.
경로는 /*
로 설정해줘서 모든 경로에대한 캐시를 무효화 해줬다. 개별적으로 선택할 수도 있다.
무효화가 완료 된 후 정상적으로 업데이트가 적용된 것을 확인할 수 있었다.
현재 프로젝트에서 GithubActions
에서 push시에 자동으로 프로젝트가 S3
로 업로드 되도록 해놓았기 때문에 무효화 설정도 같이 적용해 주었다.
우선 AWS에서 IAM > 사용자 > 권한 정책 > 권한추가 에서
CloudFrontFullAccess
권한을 추가 해주고..
yml
파일 마지막에 다음과 같은 내용을 추가해주었다.
- name: Cloudfront invalidation
run: |
aws cloudfront create-invalidation \
--distribution-id ${{ secrets.AWS_DISTRIBUTION_ID }} \
--paths "/*"
무효화는 비용이 발생할 수 있기 때문에 프리티어의 경우 주의하자.
(프론트 친구야 푸시를 .. 적당히.. 부탁해)