[S3] 확장자 별로 S3 객체 캐시 설정하기

Squirrel·2022년 4월 28일
0

AWS

목록 보기
5/5
post-thumbnail

특정 확장자(ex,png)를 가진 S3 객체에 대한 캐싱 기간을 관리하려면 어떻게 해야할까.
콘솔로는 아래와 같이 객체 레벨에서 메타데이터 편집을 통해 cache 설정이 가능하다.

Cache-Control 은 지정한 초만큼 캐시해두었다가 해당 캐시값 이후에 다시 재로드한다. 여기서는 86400(24시간)만큼 캐시한다.

하지만 이렇게 객체 하나씩 캐싱 설정을 수행하는 것은 넘나 귀찮다.
CLI를 활용해서 버킷 내 모든 파일에 cache 설정을 적용해보자.


(1) 버킷 내 모든 파일에 cache-control 설정

버킷 내 모든 파일에 cache 설정을 max-age=86400로 해주기 위해서는 아래와 같이 수행해주면 된다.

$ aws s3 cp s3://test-s3-squirrel/ s3://test-s3-squirrel/ --metadata-directive REPLACE --recursive --cache-control max-age=86400
copy: s3://test-s3-squirrel/s3-test2.jpg to s3://test-s3-squirrel/s3-test2.jpg
copy: s3://test-s3-squirrel/s3-test1.png to s3://test-s3-squirrel/s3-test1.png
copy: s3://test-s3-squirrel/s3-test1.html to s3://test-s3-squirrel/s3-test1.html
copy: s3://test-s3-squirrel/s3-test3.jpeg to s3://test-s3-squirrel/s3-test3.jpeg력하세요

(2) 특정 확장자에만 cache 제거

앞에서 버킷의 모든 파일에 cache가 설정되도록 명령어를 수행하였으므로 아래와 같이 특정 확장자에 대해 include 옵션을 사용하여 적용해주면 해당 확장자를 가진 객체들에만 no-cache 설정을 일괄 설정할 수 있다.

아래는 jpg 및 png 확장자를 가진 객체를 제외한 모든 객체에 대해서는 캐시를 설정하는 CLI 명령어이다.

즉, jpg 및 png 확장자 객체만 no-cache로 설정한다.

aws s3 cp s3://test-s3-squirrel/ s3://test-s3-squirrel/ --metadata-directive REPLACE \
> --exclude "*" --include "*.jpg" --include "*.png" --recursive --cache-control no-cache

각각의 s3 오브젝트 값을 호출하면, html 확장자는 캐싱되었으나, jpg, png 확장자의 경우 캐싱되지 않는 것으로 확인된다.

[jpg 확장자]

[png 확장자]

[html 확장자]

끝!

0개의 댓글