[AWS] S3: lifecycle을 통한 저장비용 최적화

s3 lifecycle은 s3 오브젝트들의 수명을 관리할 수 있게 도와주는 보조도구 중 하나다.

이 기능의 가장 유용한 사용처는 아마, 오래된 자원의 정리일 것이다.

이런 기능을 쓸 것도 없이 그냥 수동으로 다 지워버리거나, 클래스를 바꿔버리는 방법도 있지만, 별로 권장되는 방법은 아닌 것 같았다.

버킷의 관리 탭으로 가면 수명 주기 규칙이란 것이 있다.
이게 lifecycle이다.

생성해서 이름을 짓고

지정 범위와 대상을 적절히 정한다.
내 경우에는 버킷 전체를 대상으로 해도 무방했고,


버전관리를 하지 않기 때문에 현재 버전만 옮겨도 충분했다.
위 설정의 경우에는 "생성된지 30일이 지난" 오브젝트들을 지능형 계층화로 옮겨주는 동작을 정의했다.

지능형 계층화는 실제 사용 현황에 따라서 적절히 저렴한 클래스로 자동으로 옮겨주는 메타 클래스다.

경우에 따라 다르겠지만 좀 보수적으로 성능 손실도 없이 저장비용을 아끼려면 지능형 계층화가 좋고, 거의 안쓸것이 확실하다면 아카이브 클래스, 절대 쓰지 않을 것이라면 삭제를 해버려도 될 것이다.

여튼 그래서 이렇게 만들어지면 된 것이다.

근데 이게 바로 적용되지는 않는다.

내가 찾아본 바에 따르면, 이 lifecycle 스케줄링은 UTC 기준으로 매일 자정에 트리거된다. 한국 기준으로는 오전 9시일 테다.

그리고 다음날에 확인해보니

적절히 잘 옮겨진 것을 확인할 수 있었다.
Standard 클래스 그대로인건 지능형 계층화의 최소 크기가 128kb이기 때문이다.


참조
https://stackoverflow.com/questions/58292389/when-is-the-amazon-s3-lifecycle-rule-executed
https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/intelligent-tiering-overview.html