[AWS] S3 수명 주기를 통해 버킷 비우기

2023. 11. 20. 12:05AWS/AWS_Service

반응형

안녕하세요, 달콤한달팽이입니다.🐌🫡

 

S3 버킷 내부에 객체가 너무 많고 용량이 클 경우,

콘솔이나 CLI를 통해 버킷을 비우기에는 시간이 너무 오래 소요됩니다.


그래서 오늘은 S3 생명주기 기능을 사용해 버킷의 내용물을 한번에 비우는 방법에 대해 알아보겠습니다.


수명주기(LifeCycle)란?

생명주기(LifeCycle)란, S3 내부 객체가 비용 효율적으로 저장될 수 있도록 S3 객체 그룹에 적용하는 일련의 규칙입니다.

 

이를 통해, 오래된 객체들은 더욱 비용이 저렴해지도록 스토리지 클래스를 변경할수도 있으며

오늘 진행할 실습처럼 모든 객체가 한번에 삭제되도록 변경할 수도 있습니다.

 

이를 통해 S3에 사용되는 요금을 절감할 수 있으므로, 꼭 알아두면 좋을 기술입니다!


1) 수명주기 규칙 확인

오늘의 실습 대상이 될 버킷은 일전에 CloudTrail에 대한 로그를 적재하는 버킷으로 지정하였습니다.

 

실습에 사용할 만큼 버킷의 크기가 크거나 객체가 많지는 않지만,

CloudTrail 로그 적재용 버킷을 변경할 예정이므로 아주 좋은 실습 대상이 될 것 같습니다 :) 

 

S3 버킷을 생성한 이후 별도의 설정을 안했다면, 별다른 수명 주기 규칙은 없을 것입니다.

 

수명 주기 규칙은 버킷의 관리 탭에서 확인할 수 있습니다.

 

2) 수명주기 규칙 생성

처음 수명 주기 규칙을 구성할 때 주의할 점은 규칙 범위를 선택하는 것입니다.

 

규칙 범위는 버킷 내부의 특정 객체로만 범위를 제한하거나, 모든 객체에 적용할지 선택합니다.

( 이번 실습에서는 버킷의 모든 내용물을 삭제하기 위해 후자를 선택했습니다!)

 

추가로, 특정 객체로 범위를 제한할 경우 AWSLogs/ 와 같이 접두사를 통해 제한할 수 있습니다.

 

앞선 설정에서 수명 주기가 적용될 객체 범위를 지정했다면, 이번에는 조건을  설정해야 합니다.

 

조건은 총 5가지가 있으며, 이를 복합적으로 조합하여 사용할 수 있습니다.

  1) 스토리지 클래스 간에 객체의 현재 버전 이동

    > 생성된지 N일 이상 된 객체의 스토리지 클래스를 변경합니다.

  2) 스토리지 클래스 간에 객체의 이전 버전 이동 

    > 이전 버전이 된 지 N일 된 객체의 스토리지 클래스를 변경합니다.

  3) 객체의 현재 버전 만료

    > 생성된지 N일 이상 된 객체의 버전을 현재 버전에서 이전 버전으로 옮깁니다.

  4) 객체의 이전 버전 영구 삭제

    > 이전 버전이 된 지 N일 된 객체를 영구적으로 삭제합니다.

  5) 만료된 객체 삭제 마커 또는 완료되지 않은 멀티파트 업로드 삭제

    > 만료된 객체 삭제 마커를 제거하여 성능을 개선합니다.

    > 완료되지 않은 멀티파트의 업로드를 모두 중지하고, 이에 연결된 부분을 삭제합니다.

 

이중 저희는 3번과 4번을 조합하여 사용할 것이므로, 이 두 가지를 선택해주세요!

 

이후 일수를 모두 1일로 설정하여,

(1) 생성된지 1일 이상 된 객체를 이전 버전으로 지정하고, (2) 이전 버전이 된지 1일이된 객체는 모두 영구 삭제한다 

라는 명령이 수행되도록 합니다.

 

일자를 모두 지정할 경우, 어떠한 방식으로 작업이 진행될지 예상안을 보여주어 검토가 가능합니다.

 

3) 수명주기 결과 확인

이렇게 생성한 수명주기는 수명 주기 구성 탭에서 확인할 수 있습니다.

 

모든 수명 주기 관련 작업은 UTC 기준 00:00에 적용이 되기 때문에,

한국 시간으로 09시 이후에 버킷을 확인해 보면 객체가 모두 삭제되어있음을 확인할 수 있습니다.


지금까지 S3 수명 주기를 사용해 버킷을 비우는 방법에 대하여 알아보았습니다.

 

이외에도 잘 사용하지 않는 과거 로그를 Deep Archive로 이동시키거나,

일정 기간 이상 지나 필요하지 않은 로그를 삭제하는 등의 응용이 가능하여

비용 절감에 많은 도움이 되는 사용법입니다.

 

잘 숙지하셔서 보다 저렴하게 AWS를 이용하셨으면 좋겠습니다!

 

감사합니다!

반응형