상황. QR코드를 통해 S3에 저장한 앱 사용자의 사진을 Cloudfront를 통해 주는 상황.
쉽게 말해 화면 단에서 유저가 app 나가기를 누르면 해당 유저 정보를
s3내에서 삭제 하도록 되어 있어 다시 cloudfront url로 들어가면 유저 사진이 안떠야 되는 상황..
그러나 s3 내에선 객체(유저 정보 파일)가 삭제 되었지만, Cloudfront 내에선 해당 객체에 대한
캐시가 남아 있어 화면에서 나가고도 해당 QR코드를 통해 정보를 계속 볼 수 있었다..
왜냐하면 Cloudfront(CDN)은 원본 데이터를 캐시 데이터로 복사해 저장해 둔다.
그렇지만 내 의도에선 계속 보이면 안되는 건데..
그래서 첫 시도는 Cloudfront 배포 캐시 무효화(invalidation) 였다.
1. Cloudfront 캐시 무효화(invalidation)
블로그를 검색 해보니 해당 객체 경로(바라보고 있는 s3의 특정 경로)에 캐시 무효화(삭제) 설정을 해두면
s3의 원본과 맞게 캐시를 삭제한다고 적혀있었다.
나의 경우는 유저 정보를 s3내에서 ' /uploadTest/images ' 라는 폴더 경로에 다 담기게 로직이 되어 있다.
그러하여 객체 경로를 위 사진과 같이 해줬다.
결론 : 바로 반영 될 때도 있고 한참 뒤에 반영이 될 때도 있었다. 캐시의 TTL이 문제인가? 아직도 이거에 대한 정확한 답은 모르겠다..
2. CloudFront 동작(behavior) 설정
경로는 그냥 찜찜해서 더 상위 경로에 *(와일드카드)를 박아두었다.
캐시 정책 설정 부분
해당 경로('/uploadTest/*)에 캐시 정책을 설정 한다.
- 관리형 : 말이 조금 어렵지만 AWS에서 기본적으로 제공해주는 설정 값이다.
CachingDisabled 을 설정 해주었다.
테스트로 앱 을 나간 이후 QR코드를 통해 다시 들어가보니 Access Denied가 떠서 매우 행복했다.
끝.
'aws' 카테고리의 다른 글
aws cli를 통해 s3 버킷에 있는 객체 다운로드 받기 (0) | 2023.12.05 |
---|---|
The maximum number of addresses has been reached. (탄력적 IP 할당 안 되는 오류) (0) | 2023.11.30 |
[S3, CloudFront] S3 퍼블릭 액세스를 차단 했을 시 (0) | 2023.11.08 |