Amazon CloudFront를 사용하여 Amazon Simple Storage Service(Amazon S3)에 저장된 객체를 제공합니다. Amazon S3에서 객체를 업데이트했지만 CloudFront 배포는 여전히 해당 파일의 이전 버전을 제공합니다.
간략한 설명
기본적으로 CloudFront는 Amazon S3의 응답을 24시간 동안 캐싱합니다(기본 TTL: 86,400초). 요청이 Amazon S3 응답을 제공한 엣지 로케이션에 24시간 안에 도착하면 CloudFront는 캐시된 응답을 사용합니다. 이는 Amazon S3의 콘텐츠를 업데이트한 경우에도 마찬가지입니다.
CloudFront에서 업데이트된 Amazon S3 콘텐츠를 푸시하려면 다음 방법 중 하나를 사용하십시오.
해결 방법
Amazon S3 객체 무효화
Amazon S3 객체를 무효화하여 CloudFront 배포의 캐시에서 제거할 수 있습니다. 캐시에서 객체를 제거한 후 다음 요청은 Amazon S3에서 직접 객체를 검색합니다.
참고:
- 쿠키 또는 헤더를 사용하여 응답을 변경하는 객체의 특정 버전을 무효화할 수는 없습니다. 이 경우 CloudFront는 객체의 모든 버전을 무효화합니다.
- 각 AWS 계정에는 매월 1,000개의 무료 무효화 경로가 허용됩니다. 자세한 내용은 Amazon CloudFront 요금을 참조하십시오.
무효화를 만들 때는 객체 경로가 다음 요구 사항을 충족해야 합니다.
- 객체 경로는 개별 객체에 대한 경로이거나 와일드카드 문자(*)로 끝나야 합니다. 예를 들어 /images/*.jpeg와 유사한 경로에서는 무효화를 실행할 수 없습니다. 이는 경로가 개별 객체에 대한 경로가 아니며 와일드카드 문자로 끝나지 않기 때문입니다.
- 지정한 경로는 객체 경로의 대소문자와 정확히 일치해야 합니다. 무효화 요청은 대소문자를 구분합니다.
- 쿼리 문자열을 기준으로 객체의 특정 버전을 제거하려면 무효화 경로에 쿼리 문자열 파라미터를 포함합니다.
객체 무효화는 일반적으로 완료하는 데 10~100초가 걸립니다. 무효화 상태를 확인하려면 CloudFront 콘솔에서 배포를 확인하십시오.
파일 버전 관리 사용
콘텐츠를 자주 업데이트하는 경우 파일 버전 관리를 사용하여 CloudFront 배포의 캐시를 지우는 것이 가장 좋습니다. 캐시를 자주 새로 고치는 경우 파일 버전 관리가 무효화보다 비용이 적게 들 수 있습니다.
파일 버전 관리를 사용하려면 다음 단계를 완료하십시오.
- 키 이름에 있는 버전 번호와 함께 객체의 새 버전을 원본에 저장합니다. 예를 들어 /image_v1.png를 업데이트하는 경우 객체의 새 버전을 /image_v2.png로 저장합니다.
- 원본에서 객체를 업데이트하지만 파일 버전이 포함된 쿼리 문자열을 기준으로 캐싱합니다. 예를 들어 쿼리 문자열이 /image.png?ver=1에서 /image.png?ver=2로 업데이트됩니다. 캐시 정책을 사용하여 캐시 키 및 원본 요청에 포함되는 쿼리 문자열을 지정할 수 있습니다.
참고: CloudFront 캐시에서 사용 가능한 동안에는 이전 버전(/image.png?ver=1)을 계속 요청할 수 있습니다.
각 파일 버전 관리 방법에 대한 다음과 같은 장단점을 고려하십시오.
- 객체의 새 버전을 원본에 저장하여 이전 이름으로 계속 사용할 수 있는 이전 버전으로 변경 사항을 되돌릴 수 있습니다. 그러나 객체의 여러 버전을 저장하면 스토리지 비용이 증가할 수 있습니다.
- 원본에서 객체를 업데이트하고 쿼리 문자열을 기준으로 캐싱하면 스토리지 비용을 줄일 수 있습니다. 롤백에 대비하려면 이전 파일 버전을 오프라인 상태로 유지하는 것이 가장 좋습니다.
참고: 버전이 지정된 파일 이름 또는 디렉터리 이름은 S3 버전 관리와 관련이 없습니다. S3 버전 관리는 콘텐츠를 자동으로 업데이트하지 않습니다. 무효화 요청을 시작한 후에는 취소할 수 없으므로 파일 경로를 올바르게 지정해야 합니다.
관련 정보
콘텐츠가 캐시에 유지되는 기간(만료) 관리
쿼리 문자열 전달 및 캐싱