CloudFront가 Amazon S3에서 오래된 콘텐츠를 제공하는 이유는 무엇입니까?

최종 업데이트 날짜: 2020년 8월 6일

Amazon CloudFront를 사용하여 Amazon Simple Storage Service(Amazon S3)에 저장된 객체를 제공하고 있습니다. 그런데 S3에서 객체를 업데이트했지만, CloudFront 배포는 이 파일의 이전 버전을 계속 제공합니다. Amazon S3 콘텐츠가 CloudFront에서 업데이트되지 않는 이유는 무엇입니까? 이 문제를 어떻게 해결해야 합니까?

간략한 설명

기본적으로 CloudFront는 24시간 동안 Amazon S3에서 응답을 캐시합니다(86,400초의 기본 TTL). 24시간 이내에 Amazon S3 응답을 제공하는 엣지 로케이션에 요청이 도달하면 Amazon S3에서 콘텐츠를 업데이트했어도 CloudFront는 캐시된 응답을 사용합니다.

다음 방법 중 하나를 사용하여 CloudFront에서 업데이트된 S3 콘텐츠를 푸시합니다.

해결 방법

S3 객체 무효화

S3 객체를 무효화하여 CloudFront 배포의 캐시에서 해당 객체를 제거할 수 있습니다. 캐시에서 객체를 제거한 후 다음 요청에서는 Amazon S3에서 직접 객체를 검색합니다.

무효화를 실행하기 전에 다음을 고려하십시오.

  • 웹 배포에서만 무효화를 실행할 수 있습니다. RTMP(Real Time Messaging Protocol) 배포에서는 무효화할 수 없습니다.
  • 응답을 다양화하도록 쿠키나 헤더를 사용하는 객체의 특정 버전은 무효화할 수 없습니다. 이 경우 CloudFront는 객체의 모든 버전을 무효화합니다.
  • 각 AWS 계정에서는 매달 1,000건의 무료 무효화 경로가 허용됩니다. 매월 1,000건이 넘는 무효화 경로에 대한 요금은 Amazon CloudFront 요금무효화 요청을 참조하십시오.

무효화를 생성할 때, 객체 경로는 다음 요구 사항을 충족해야 합니다.

  • 개별 객체에 대한 객체 경로이거나, 경로는 와일드카드 문자(*)로 끝나야 합니다. 예를 들어, /images/*.jpeg와 비슷한 경로에서는 무효화를 실행할 수 없습니다. 개별 객체에 대한 경로가 아니며, 와일드카드로 끝나지 않기 때문입니다.
  • 지정된 경로는 객체 경로와 대소문자가 정확히 일치해야 합니다. 무효화 요청은 대소문자를 구분합니다.
  • 쿼리 문자열에 기반하여 객체의 특정 버전을 제거하려면 무효화 경로에 QueryString을 포함합니다.

객체 무효화는 완료하는 데 보통 60초에서 300초가 걸립니다. CloudFront 콘솔에서 배포를 보고 무효화 상태를 확인할 수 있습니다.

객체 버전 관리 사용

콘텐츠를 자주 업데이트하는 경우 객체 버전 관리를 사용하여 CloudFront 배포의 캐시를 지우는 것이 좋습니다. 캐시를 자주 새로 고치는 경우 객체 버전 관리를 사용하면 무효화를 사용하는 것보다 비용이 더 적게 들 수 있습니다.

다음 방법 중 하나를 사용하여 객체에 버전 관리를 추가합니다.

  • 키 이름에 버전 번호를 사용하여 오리진에 객체의 새 버전을 저장합니다. 예를 들어 /image_v1.png를 업데이트하는 경우 객체의 새 버전을 /image_v2.png로 저장합니다.
  • 오리진에서 객체를 업데이트하지만 객체 버전을 사용한 쿼리 문자열을 기준으로 캐싱합니다. 예를 들어 쿼리 문자열은 /image.png?ver=1에서 /image.png?ver=2로 업데이트됩니다.
    참고: CloudFront 캐시에 저장되어 있는 동안에는 이전 버전(/image.png?ver=1)을 요청할 수 있습니다.

각 객체 버전 관리 방법에 대해 다음과 같은 장점과 단점을 고려합니다.

  • 오리진(Amazon S3)에 객체의 새 버전을 저장하면 이전 버전을 이전 이름으로 계속 사용할 수 있으므로 변경 사항을 되돌릴 수 있습니다. 하지만 여러 버전의 객체를 저장하면 스토리지 비용이 증가할 수 있습니다.
  • 오리진에서 객체를 업데이트하지만 쿼리 문자열을 기준으로 캐싱하면 스토리지 비용을 절감할 수 있습니다. 하지만 롤백을 준비하려면 이전 객체 버전을 오프라인으로 유지하는 것이 좋습니다.

이 문서가 도움이 되었습니까?


결제 또는 기술 지원이 필요합니까?