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

3분 분량
0

Amazon CloudFront를 사용하여 Amazon Simple Storage Service(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 경로의 경우, 개별 객체에 대한 경로가 아니고 와일드카드로 끝나지도 않으므로 무효화를 실행할 수 없습니다.
  • 지정한 경로는 객체 경로의 대/소문자와 정확히 일치해야 합니다. 무효화 요청은 대/소문자를 구분합니다.
  • 쿼리 문자열을 기준으로 객체의 특정 버전을 제거하려면 무효화 경로에 QueryString을 포함합니다.

객체 무효화를 완료하는 데는 일반적으로 10~100초가 걸립니다. CloudFront 콘솔에서 배포를 확인하여 무효화 상태를 확인할 수 있습니다.

객체 버전 관리 사용

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

다음 중 한 가지 방법으로 객체에 버전 관리를 추가합니다.

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

각 객체 버전 관리 방법에 대한 다음과 같은 장단점을 고려하세요.

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

참고: 버전이 지정된 파일 이름 또는 디렉터리 이름을 지정하는 것은 Amazon S3 객체 버전 관리와 관련이 없습니다. Amazon S3 버전 관리 기능을 사용하면 콘텐츠가 자동으로 업데이트되지 않습니다. 무효화 요청을 시작한 후에는 취소할 수 없으므로 파일 경로를 신중하게 지정해야 합니다.

관련 정보

콘텐츠가 캐시에 보관되는 기간 관리(만료)

쿼리 문자열 전달 및 캐싱

AWS 공식
AWS 공식업데이트됨 일 년 전