티스토리 뷰

 

안녕하세요!

이번 포스팅은 AWS를 통한 서비스 매니지먼트 관련 사항 중 CloudFront의 캐시 문제에 대한 포스팅인데요, 필자가 직접 아마존 S3 버킷을 만들고, 버킷에 정적 파일을 업로드한 다음 CloudFront를 통해 배포하는 작업을 수행한 직후 경험한 다음과 같은 문제에 대한 해결책을 알아내고, 정리해보았습니다. 

 

문제

 

S3 버킷의 정적 파일을 CloudFront로 배포한 다음 S3 버킷의 정적 파일(index.html)을 업로드한 후 얼마 지나지 않아 업데이트한 index.html을 새로이 업로드하였다(덮어쓰기). 그런데 배포된 주소로 페이지를 열어보니 index.html의 내용이 업데이트되지 않은 상태였다. 새로고침을 여러 번 해 보아도 이는 마찬가지 였다. 

 

 

 

원인

 

CloudFront로 배포되는 파일의 캐시 때문이었다. 

캐시란 서버와 클라이언트 사이의 물리적 거리로 인해 생기는 부하를 줄이고자 사용하는 중간 단계의 메모리인데, CloudFront는 24시간 동안 유지되는 캐시를 사용하기 때문에 새로 업데이트되는 파일이 바로바로 적용되게 하려면 캐시를 무효화해줄 필요가 있다. 

 

 

 

해결 방법 

 

1. AWS management console에서 CloudFront 대시보드로 이동한다. 대시보드에 표시되는 표에서 무효화를 진행하고자 하는 대상을 선택하고, 표 상단에 있는  'Distribution Settings' 버튼을 클릭한다. 

 

 

2. Distribution Settings 화면으로 이동한 다음 여러 탭 메뉴 중에서 'Invalidations(무효화)' 를 선택한다. 그런 다음 'Create Invalidation' 버튼(이미지 속 파란색 버튼)을 클릭한다.

 

 

3. Create Invalidation 창이 뜨면 무효화 대상 파일을 Object Paths 텍스트영역에 적어준다. 이때 한 줄에 하나씩 파일명을 기입해주면 된다. 작성 완료되었다면 Invalidate 버튼을 클릭(우측 하단의 파란 색).

 

 

4. 이제 무효화 오브젝트가 생성된다. 생성 직후 바로 적용되는 것이 아니라 작업 완료까지 시간이 걸리므로 기다려야 한다(오래는 안걸림). 작업 상태는 표의 'Status'를 보면 알 수 있다.

 

5. 작업이 완료되면 Status는 Completed 가 된다. 그리고 이후로는 S3 버킷에 정적 파일을 업데이트(또는 업로드)하는 즉시 CloudFront 주소에서 갱신된 화면을 확인해볼 수 있다. 

 

 

끝! 이상 정리를 마칩니다. 감사합니다.

 

 

댓글
공지사항