아마존 웹 서비스를 다루는 기술 12장 - 5. Invalidation으로 CloudFront 콘텐츠 갱신하기
- 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
- 책 또는 웹사이트의 내용을 발췌, 요약하여 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.
전 세계에 콘텐츠를 배포하는 CDN 서비스인 CloudFront
이재홍 http://www.pyrasis.com 2014.03.24 ~ 2014.06.30
목차
Invalidation으로 CloudFront 콘텐츠 갱신하기
CloudFront로 배포되는 파일의 캐시가 유지되는 기본 시간은 24시간이며 오리진 HTTP 헤더의 캐시 설정Cache-Control을 이용하여 캐시가 유지되는 시간을 자유롭게 설정할 수 있습니다.
여기서 캐시가 만료되기 전에 파일의 내용을 갱신하고 싶으면 무효화Invalidation 기능을 사용하면 됩니다. 무효화 기능은 말 그대로 CloudFront 에지 로케이션에 저장된 파일의 캐시를 삭제하는 기능입니다. 캐시가 삭제된 뒤 사용자가 해당 파일을 요청하면 에지 로케이션은 오리진에서 새 파일을 가져오므로 파일 내용을 갱신할 수 있게 됩니다.
이번 실습은 S3을 오리진으로 사용하는 CloudFront 배포를 이용하여 진행하겠습니다. EC2 인스턴스나 외부 웹 서버를 오리진으로 사용하는 CloudFront 배포도 내용에는 차이가 없습니다.
S3와 CloudFront를 연동하지 않았다면 ‘12.2 S3와 CloudFront 연동하기’를 참조하여 CloudFront 배포를 생성합니다.
‘12.4 Signed URL로 CloudFront 콘텐츠 사용 제한하기’에서 Distribution Settings → Behaviors → Edit → Restrict Viewer Access(Use Signed URLs)를 Yes로 설정했다면 실습의 편의를 위해 No로 설정합니다(Signed URL 사용 여부에 상관없이 무효화Invalidation 기능은 동일하게 작동합니다). Restrict Viewer Access 설정을 변경했다면 설정이 완전히 적용되어 Status가 Deployed가 될 때까지 기다립니다.
먼저 웹 브라우저에서 S3와 연동한 CloudFront에 접속합니다. 그리고 index.html 파일의 내용이 잘 출력되는지 확인합니다.
그림 12-55 웹 브라우저에서 S3와 연동한 CloudFront에 접속
텍스트 편집기를 열고 아래와 같이 작성한 뒤 index.html로 저장합니다. 그리고 S3 버킷에 파일을 올려 index.html의 내용을 수정합니다(파일을 올리는 방법은 ‘11.2 S3 버킷에 파일 올리기/받기’를 참조하기 바랍니다).
index.html
<html>
<head>
<title>Example CloudFront Distribution</title>
</head>
<body>
<p>Hello CloudFront - S3</p>
<p>Hello AWS</p>
</body>
</html>
그림 12-56 S3 버킷에 파일을 올려 index.html의 내용을 수정
다시 웹 브라우저에서 S3와 연동한 CloudFront에 접속해봅니다. index.html 파일의 내용은 여전히 이전 내용을 출력하고 있습니다. 새로고침을 해도 바뀌지 않습니다.
그림 12-57 웹 브라우저에서 S3와 연동한 CloudFront에 접속
이제 CloudFront 배포 목록으로 이동합니다. CloudFront 배포 목록에서 S3와 연동한 CloudFront 배포를 선택하고 위쪽 Distribution Settings 버튼을 클릭합니다.
그림 12-58 CloudFront 배포 설정
CloudFront 배포 설정입니다. 위쪽 Invalidations 탭을 클릭하고 Create Invalidation 버튼을 클릭합니다.
그림 12-59 CloudFront 배포 설정에서 무효화 요청 생성
Create Invalidation 창이 표시됩니다. 여기서 무효화Invalidation 요청을 생성합니다.
Object Paths 부분에 무효화할 파일의 목록을 입력합니다. 우리는 index.html 파일의 내용을 수정하였으므로 /index.html을 입력합니다. 최상위에 위치한 파일은 파일명만 입력해도 되며 /index.html과 같이 절대경로로 입력해도 됩니다. 하위 디렉터리에 위치한 파일은 /images/hello.png와 같이 절대경로로 입력합니다.
여러 개의 파일은 새 줄로 구분하여 입력하면 되고, 이 무효화 요청은 한번에 최대 1,000개의 파일까지 처리가 가능합니다. 그리고 무효화 요청은 동시에 3개까지 생성 가능합니다.
파일 입력이 끝났으면 Invalidate 버튼을 클릭하여 무효화 요청을 생성합니다.
그림 12-60 무효화 파일 목록 설정 및 무효화(Invalidation) 요청 생성
무효화 요청 목록에서 무효화 요청이 생성된 것을 확인할 수 있습니다. Status를 보면 InProgress로 표시되며 인디케이터가 회전하고 있습니다. 무효화 요청이 모든 에지 로케이션에 적용되기까지 약 15~20분이 소요됩니다.
그림 12-61 무효화 요청 생성 완료
무효화 요청이 모든 에지 로케이션에 적용이 완료되면 Status가 Completed로 바뀝니다.
그림 12-62 무효화 요청 적용 완료
다시 웹 브라우저에서 S3와 연동한 CloudFront에 접속해봅니다.
무효화 요청이 모든 에지 로케이션에 적용이 완료된 후 CloudFront에 접속해보면 새롭게 수정한 index.html 파일의 내용이 출력됩니다. 이전 내용이 표시된다면 새로고침을 하면 새 내용으로 바뀝니다.
그림 12-63 무효화 요청 적용 후 S3와 연동한 CloudFront에 접속