안녕하세요,

베스핀글로벌 클라우드 기술지원팀입니다.


이번 아티클에서는 S3 버킷에 대한 수명 주기 정책을 설정하는 방법에 대하여 안내해 드리고자 합니다.





객체 수명 주기 관리



S3는 버킷에 저장된 객체의 수명 주기(Life Cycle)를 관리할 수 있는 기능이 있습니다.

이 기능은 일정 시간이 지났을 때, 사용되지 않는 파일들을 삭제하거나 다른 곳에 백업하여 S3 저장 공간을 절약할 수 있는 비용 효율적인 방법입니다.


우선 객체 수명 주기 관리를 말씀 드리기 앞서, S3 스토리지 클래스에 대한 이해가 필요 합니다.

사용 용도에 따라 적절한 S3 클래스를 사용 할 수 있다면, 비용 효율적인 구성을 하실 수 있습니다.

수명 주기 정책은 이러한 파일의 성격에 따라서 자동으로 스토리지 클래스는 전환 ~ 만료 해주는 작업을 해주게 됩니다.

그림출처 : https://dev.to/noyonict/simplify-your-data-lifecycle-optimize-storage-costs-with-amazon-s3-lifecycle-apc


가장 예를 들어 설명하기 좋은 것은, 로그성 데이터입니다.

Access Log, VPC FlowLog, Cloudtrail Log 등.. 지속적으로 데이터의 양이 증가하는데 계속 보관 할 필요는 없는 데이터입니다.

서비스 혹은 로그마다 보존기간을 설정하고, 6개월 이후에는 해당 로그를 확인 할 일이 많지 않기 때문에 Glacier로 전환 시킵니다.

1년 이후 로그는 보관 할 필요가 없다면 만료일자를 설정해서 1년 후 로그들은 삭제 하도록 설정 합니다.


S3 수명 주기 구성에는 다음과 같은 두 가지 유형의 작업이 있습니다.


  • 전환 작업 

객체가 다른 스토리지 클래스로 전환할 시기를 정의합니다.

예를 들어, 생성 후 30일이 지나면 객체를 S3 Standard-IA 스토리지 클래스로 전환하거나, 생성 후 1년이 지나면 객체를 S3 Glacier 스토리지 클래스에 아카이브하도록 선택할 수 있습니다.

전환 작업: 수명 주기 규칙은 정의된 기간에 서로 다른 스토리지 클래스 간에 개체를 이동할 수 있습니다. 

예를 들어 30일 후에 S3 Standard(자주 액세스하는 데이터용)에서 S3 Standard-IA(자주 액세스하지 않는 데이터용)로 객체를 이동한 다음 90일 후에 S3 Glacier(아카이브용)로 객체를 이동하는 규칙을 설정할 수 있습니다. 이렇게 하면 스토리지 클래스 비용이 낮아지면서 비용을 최적화하는 데 도움이 되며 일반적으로 액세스 빈도가 낮은 데이터의 경우 효과가 좋습니다.


  • 만료 작업

수명 주기 규칙은 또한 객체가 만료되는 시기를 정의할 수 있으며 Amazon S3는 객체를 자동으로 삭제합니다. 

예를 들어 365일 후에 객체를 삭제하도록 규칙을 설정할 수 있습니다.


필터링: 필터를 사용하여 수명 주기 규칙의 범위를 접두사 또는 특정 태그가 있는 객체로 지정할 수 있습니다. 예를 들어 접두사 "logs/"로 시작하거나 특정 태그가 있는 개체에만 적용되는 규칙을 설정할 수 있습니다.


수명 주기 규칙은 비용 최적화 및 데이터 관리를 위한 강력한 도구이지만 주의해서 사용해야 합니다. 잘못 구성된 규칙으로 인해 객체를 실수로 삭제하면 데이터가 손실될 수 있습니다. 항상 규칙을 테스트하고 중요한 데이터를 백업하십시오.




수명 주기 구성을 사용해야 할 때는 언제입니까?



1. 버킷에 주기적으로 로그를 업로드할 경우 (eg. ELB access log, VPC flow log 등)

-> 애플리케이션으로 부터 쌓이는 로그를 일정 기간 동안에 필요로 하지만, 그 이후에 사용자가 삭제하고 싶을 경우


2. 특정 기간 동안만 자주 액세스하는 문서

-> 일부 문서는 특정 기간 동안에만 자주 액세스 되고, 그 이후에 거의 액세스가 없는 경우가 있습니다.

어느 시점이 되면 이러한 문서에 실시간으로 액세스할 필요가 없지만, 조직 또는 규정에서 특정 기간 동안 해당 문서를 보관할 것을 요구할 수 있습니다. 그 이후에는 사용자가 문서를 삭제할 수 있습니다.


3. 보관 목적의 데이터

-> 어떤 유형의 데이터는 주로 보관 목적으로 Amazon S3에 업로드할 수 있습니다.

예를 들어, 디지털 미디어, 금융 및 의료 기록, 가공되지 않은 유전체 염기 서열 데이터, 장기 데이터베이스 백업 파일, 그리고 규제 준수를 위해 보존해야 하는 데이터 등이 있습니다.



S3 수명 주기 정책을 사용하면 Amazon S3가 객체를 더 저렴한 스토리지 클래스로 전환하거나 아카이브하거나 삭제하도록 지시할 수 있습니다.





수명 주기 정책 사용의 예제



  • S3 콘솔 -> 해당하는 버킷 선택 -> [관리] -> [수명 주기 규칙] -> [수명 주기 규칙 생성]


  • 수명 주기 규칙의 범위를 선택할 수 있습니다.

1. 모든 객체에 적용

2. 하나 이상의 필터를 사용하여 이 규칙의 범위 제한


S3에 저장된 객체들의 변화를 저장하는 것을 말합니다.

예를 들어, A라는 객체를 사용자가 삭제하거나 변경하여도 각각의 변화를 모두 기록하기 때문에 실수를 만회할 수 있습니다.


버전 관리를 활성화한 버킷의 객체에 대하여 수명 주기 규칙을 사용하면 아래의 "수명 주기 규칙 작업" 중,

"이전 버전"에 대한 규칙을 정의할 수 있습니다.

 


Amazon S3는 아래 표와 같이 여러 사용 사례에 맞춰 설계된 다양한 스토리지 클래스를 제공합니다.


범용알 수 없거나 변화하는 액세스빈번하지 않은 액세스아카이브
S3 StandardS3 Intelligent-TieringS3 Standard-IAS3 Glacier


S3 One Zone-IA (단일 AZ)S3 Glacier Deep Archive 




예제 1: VPC Flow Log (vpc flow log 활성화 및 S3에 적재하기)


  • VPC Flow Log -> S3 적재 -> 생성 180일 후 객체의 스토리지 클래스 전환 (S3 Standard-IA) -> 365일 후 만료(삭제)





예제 2: ELB Access Log (ALB access log 활성화)


  • ALB Access Log -> S3 적재 -> 생성 90일 후 객체의 스토리지 클래스 전환 (S3 Standard-IA) -> 365일 후 만료(삭제)





예제 3: CloudTrail 추적 (CloudTrail 추적 생성)


  • CloudTrail 추적 -> S3 적재 -> 생성 180일 후 객체 스토리지 클래스 전환 (S3 Glacier) -> 365일 후 만료(삭제)



참조 링크:

#1 객체 수명 주기 관리 -

https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/dev/object-lifecycle-mgmt.html


#2 S3 버킷에 대한 수명 주기 정책을 생성하는 방법 -

https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/user-guide/create-lifecycle.html



관련하여 문의사항 있으시면 포털에 문의 남겨주시기 바랍니다.


감사합니다.