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