AWS_FAQ

Cloudfront 콘텐츠 갱신 방법

2015.09.13 16:51

호스트웨이 조회 수:3117



cloudfront 배포되는 파일의 캐시는 기본 24시간 유지
origin http header cache-control을 이용 캐시가 유지되는 시간을 설정 가능

캐시가 만료되기 전 파일의 내용을 갱신하고자 할 때
invalication(무효화) 기능으로 edge location에 저장된 파일의 캐시를 삭제 할 수 있음
캐기사 삭제되면 사용자가 해당 파일을 요청하면 edge 서버는 orgin에서 새파일을 가져오므로
파일 내용을 갱신 할 수 있게 됨.

콘텐츠 갱신 시나오리
1. 오리진 서버(S3,elb)에 파일을 배포한다(여기서 배포방법은 생략)
2. 웹브라우저를 통해 내용이 변경되었는지 확인
3. cloudfront 무효화 방법은 3가지 방법이 있습니다.
 3.1 cloudfront consle 이용
 3.2 써드파티 tool을 이용
 http://s3browser.com/cloudfront-invalidation.php
 http://www.cdnplanet.com/tools/cloudfront-purge-tool/
 3.3 cli tool을 이용

4.여기 3.3 cli를 이용한 예제

cloudfront 명령을 사용 할수 있도록 활성화
aws configure set preview.cloudfront true

create-invalidation 명령을 json을 준비하고 실행

무효화 사용 옵션
aws cloudfront create-invalidation --generate-cli-skeleton { "DistributionId": "", "InvalidationBatch": { "Paths": { "Quantity": 0, "Items": [ ""]} "CallerReference" : ""}}

DistributionId : CloudFront의 Distribution Id
Quantity : Invalidation 파일 수
Items : Invalidation 파일 경로 (하단 무효화 경로 참조)
CallerReference : 문자열

json 파일 정보 추가
cat ./cfinsource.json { "DistributionId": "DOXA11XXXXXXXX", "InvalidationBatch": { "Paths": { "Quantity"1 "Items": "/test/test1.html"]} "CallerReference ":"20150913112801 "}}

aws cloudfront create-invalidation --cli-input-json file : //cfinsource.json { "Invalidation": { "Status": "InProgress", "InvalidationBatch": { "Paths": { "Items": " /test/text1.html ","Quantity ": 1}"CallerReference ":"20150913012r01 "},"Id ":"IEXXXXXXXXXX ","CreateTime ":"2015-09-13T12 : 37 : 15.860Z "} "Location": "https://cloudfront.amazonaws.com/2015-09-13/distribution/DOXA11XXXXXXXX/invalidation/EE1FUMTBHGHEM"}



http://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html


참고

무효화 경로
이 경로는 배포에 상대적입니다. 선행 /(슬래시) 사용은 선택 사항입니다. 예를 들어, http://d111111abcdef8.cloudfront.net/images/image2.jpg의 객체를 무효화하려면 다음과 같이 지정할 수 있습니다.

/images/image2.jpg

또는

images/image2.jpg

또한 * 와일드카드를 사용하여 여러 객체를 동시에 무효화할 수도 있습니다. *는 0개 이상의 문자로 대체되며 무효화 경로의 마지막 문자여야 합니다. 예:


•특정 디렉터리의 모든 객체를 무효화하려면

/directory-path/*


•특정 디렉터리와 그 하위 디렉터리 전체, 디렉터리와 하위 디렉터리에 들어 있는 모든 객체를 무효화하려면

/directory-path*


•logo.jpg, logo.png, log.gif와 같이 같은 이름에 다른 파일 이름 확장명을 지닌 모든 파일을 무효화하려면

/directory-path/file-name*


•특정 디렉터리의 전체 파일 중 파일 이름이 같은 문자로 시작하는 파일(예: HLS 포맷 비디오용 파일 전체)을 무효화하려면

/directory-path/initial-characters-in-file-name*


•쿼리 문자열 파라미터에 따라 캐싱하도록 CloudFront를 구성할 때 각 버전의 객체를 무효화하려는 경우

/directory-path/file-name.file-name-extension*


•특정 배포의 모든 객체를 무효화하려면

/*

경로의 최대 길이는 4,000자입니다.

Important

객체 경로를 신중하게 지정합니다. 무효화 요청을 시작한 후에는 취소할 수 없습니다.