[AWS] S3 bucket 변경 사항이 Cloudfront distribution에 반영되지 않는 현상, 해결 방법

fejigu·2023년 3월 23일
2

AWS

목록 보기
1/4
post-thumbnail



💣 이슈

"S3 bucket에 파일을 업로드 하였음에도 불구하고 변경사항이 Cloud front distribution에 반영되지 않는 상황"

→ AWS S3 + CloudFront를 이용해 웹을 배포하였는데, 그 이후 수정 사항이 생겨 소스 코드를 수정 후 다시 빌드를 하고 S3 서버에 올렸으나, 해당 수정 사항이 사이트에 반영되지 않았다.

물론, 시간이 경과하면 변경 사항이 Cloud front distribution에도 적용되겠지만, 본인의 경우에는 당장 수정이 잘 되었는지 확인해야하는 상황이였다.




🔑 해결 방법

✔️ 먼저, Cloudfront는 캐시한다.

→ Cloudfront는 CDN 서비스로서 캐시하고 있을 수 있다고 한다. 따라서, 변경사항을 배포에 반영하기 위해서는 Invalidation이 필요하다.


✔️ 전체 캐싱, 무효화 시켜야 한다.

→ 콘솔을 활용한 Invalidation은 다음과 같았다.

  1. CloudFront 콘솔을 연다.
  2. 파일을 무효화하려는 배포를 선택한다.
  3. Distribution Settings(배포 설정)를 선택한다.
  4. Invalidations(무효화) 탭을 선택한다.
  5. Create Invalidation(무효화 생성)을 선택한다.
  6. 전체 캐싱을 무효화하기 위해서는 /* 을 입력한다.
  7. Invalidate(무효화)를 선택한다.
  8. 진행 중을 잠시 기다리면 무효화가 생성된다.

✔️ 또 다시 반영이 되지 않는다..?

→ 위와 같이 무효화를 한번 생성하고나니까 바로 수정 사항이 cloudfront에 반영된 것을 확인할 수 있었다.

하지만 그 이후에 재수정 후에 또 다시 반영되지 않는 현상을 만나게 되었다.


✔️ CloudFront의 무효화는 한번 동작한다!

→ 위에서 한 것처럼 무효화 설정을 하면 캐시를 제거해주고 다시 갱신된 파일을 캐시하여 반영되는 것은 맞지만, 이는 무효화를 생성한 시점에서 한번 동작할 뿐이다. 이 부분을 모르고 사용했었다.!

결론적으로, 그 이후에 계속해서 변경사항이 있다고 해서 갱신이 이루어지는 것이 아니였다.

CloudFront의 무효화는 S3의 bucket 변경 후 사이트의 즉각적인 갱신이 필요할 때 마다 해주어야 한다. 변경 사항을 빌드하고 S3의 bucket에 다시 소스 코드를 업로드 하고 나서 변경사항에 대한 변화를 CloudFront에서 바로 확인하고 싶을 때마다 해주며 문제를 해결하였다.

profile
console.log(frontendjigu( ☕️, 📱); // true

2개의 댓글

comment-user-thumbnail
2023년 5월 2일

지구님과 동네북 프로젝트 하던 시절이 떠오르는군요...홀홀..

1개의 답글