S3 비용 청구에 대해 궁금하여 공식 문서를 확인해 보았다.
공식 문서를 확인 해보면 S3 버킷에 객체를 저장하는 비용을 지불하며, 부과되는 요금은 객체의 크기, 해당 월에 객체를 저장한 기간, 스토리지 클래스에 따라 다르다고 한다.
이번 작업은 S3 Tagging 으로 수명 주기 적용하여 버킷 관리와 비용 절감에 대해 공유해보려고 한다.
AWS S3에서 제공하는 기능으로 오래된 파일을 삭제하거나 파일의 위치를 다른 스토리지로 옮기는 등 저장된 객체의 수명 주기(Life Cycle)를 관리할 수 있는 기능을 말한다.
S3 수명 주기 구성에는 다음과 같은 두 가지 유형의 작업이 있다.
전환 작업
객체가 다른 스토리지 클래스로 전환할 시기를 정의한다.
만료 작업
객체가 만료되는 시기를 정의하고 만료된 객체를 자동으로 삭제한다.
관리 탭에서 「수명 주기 규칙 생성」 버튼을 클릭한다.
수명 주기 규칙 이름을 입력 후 규칙 범위 선택을 한다.
규칙범위 선택은
이번 작업은 Tagging을 이용하여 수명주기를 적용하는 작업으로 하나 이상의 필터를 사용하여 이 규칙의 범위 제한을 선택 후 객체 태그에 Filtering 적용 할 태그 값을 지정해준다.
Tagging은 Console에서 Object를 클릭하여 객체 작업 창의 태그 편집으로 할 수 있고, Sdk를 사용하여 태그를 넣을 수 있다.
public class ManagingObjectTags {
public static void main(String[] args) {
Regions clientRegion = Regions.AP_NORTHEAST_2;
String bucketName = "*** Bucket name ***";
String keyName = "*** Object key ***";
String filePath = "*** File path ***";
try {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(clientRegion)
.build();
PutObjectRequest putRequest = new PutObjectRequest(bucketName, keyName, new File(filePath));
List<Tag> tags = new ArrayList<Tag>();
tags.add(new Tag("status", "delete"));
tags.add(new Tag("velog", "S3 Lifecycle"));
putRequest.setTagging(new ObjectTagging(tags));
PutObjectResult putResult = s3Client.putObject(putRequest);
} catch (AmazonServiceException e) {
e.printStackTrace();
} catch (SdkClientException e) {
e.printStackTrace();
}
}
}
태그 적용
수명주기 적용
여기까지 S3 수명 주기 적용 방법에 대해 알아보았다.
간단한 설정으로 버킷 관리와 비용 절감에 도움이 될 것으로 생각한다.👏👏👏