특정 확장자(ex,png)를 가진 S3 객체에 대한 캐싱 기간을 관리하려면 어떻게 해야할까.
콘솔로는 아래와 같이 객체 레벨에서 메타데이터 편집을 통해 cache 설정이 가능하다.
Cache-Control 은 지정한 초만큼 캐시해두었다가 해당 캐시값 이후에 다시 재로드한다. 여기서는 86400(24시간)만큼 캐시한다.
하지만 이렇게 객체 하나씩 캐싱 설정을 수행하는 것은 넘나 귀찮다.
CLI를 활용해서 버킷 내 모든 파일에 cache 설정을 적용해보자.
버킷 내 모든 파일에 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력하세요
앞에서 버킷의 모든 파일에 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
끝!