디렉터리 버킷용 S3 Lifecycle 다루기
디렉터리 버킷용 S3 Lifecycle 다루기 (Working with S3 Lifecycle for directory buckets)
S3 Lifecycle은 디렉터리 버킷에 저장된 S3 Express One Zone 객체를 대신 만료·삭제해 주어 비용을 효율적으로 관리하도록 도와줘요. 객체의 수명 주기를 관리하려면 디렉터리 버킷에 S3 Lifecycle 구성을 만들면 돼요. S3 Lifecycle 구성은 Amazon S3가 객체 그룹에 적용하는 작업(action)을 정의하는 규칙 집합이에요. 디렉터리 버킷에 S3 Lifecycle 구성을 설정할 때는 AWS CLI, AWS SDK, Amazon S3 REST API, AWS CloudFormation을 사용할 수 있어요.
출처: 문서
본문
Lifecycle 구성에서는 규칙(rule)으로 Amazon S3가 객체에 수행할 작업을 정의해요. 디렉터리 버킷에 저장된 객체의 경우, 객체가 시간이 지나 만료되도록 하는 Lifecycle 규칙을 만들 수 있어요. 또한 디렉터리 버킷의 불완전한 멀티파트 업로드를 매일 삭제하는 Lifecycle 규칙도 만들 수 있어요.
버킷에 Lifecycle 구성을 추가하면 그 규칙은 기존 객체뿐 아니라 나중에 추가하는 객체에도 모두 적용돼요. 예를 들어 오늘 특정 접두사를 가진 객체가 생성 30일 후 만료되도록 하는 만료 작업이 담긴 Lifecycle 규칙을 추가했다면, S3는 지정 접두사를 가진 30일 이상 된 기존 객체 전부를 삭제 대상으로 대기시켜요.
디렉터리 버킷용 S3 Lifecycle의 차이점
디렉터리 버킷의 객체에는 객체 만료와 불완전한 멀티파트 업로드 삭제 규칙을 만들 수 있어요. 하지만 디렉터리 버킷용 S3 Lifecycle은 스토리지 클래스 간 전환(transition) 작업을 지원하지 않아요. 그리고 디렉터리 버킷용 S3 Lifecycle은 S3 Lifecycle 서비스 주체(service principal)에게 명시적인 권한을 부여해야 해요.
S3 Lifecycle 권한
S3 Lifecycle은 DeleteObject, DeleteObjects, AbortMultipartUpload API 작업을 사용해 디렉터리 버킷의 객체를 만료시켜요. 이 작업들을 호출하기 위해 S3 Lifecycle은 CreateSession API로 임시 보안 자격 증명을 얻어요. S3 Lifecycle 서비스 주체(lifecycle.s3.amazonaws.com)에게 s3express:CreateSession 권한을 ReadWrite 세션 모드로 부여해야 해요. 이 권한을 부여하지 않거나, 활성 정책이 S3 Lifecycle 서비스 주체의 삭제 권한을 명시적으로 거부하면 S3 Lifecycle은 디렉터리 버킷의 객체를 만료시킬 수 없어요. CreateSession에 대한 자세한 내용은 Amazon S3 API Reference의 CreateSession 을 참고하세요.
버킷 정책으로 S3 Lifecycle 서비스 주체에 권한 부여하기
다음 버킷 정책은 S3 Lifecycle 서비스 주체에게 DeleteObject, DeleteObjects 같은 작업을 수행하기 위한 세션 생성 권한을 부여해요. CreateSession 요청에 세션 모드를 지정하지 않으면 해당 권한으로 허용되는 최대치의 세션이 생성돼요(먼저 ReadWrite를 시도하고, ReadWrite가 허용되지 않으면 ReadOnly로 대체). 하지만 ReadOnly 세션은 객체를 수정하거나 삭제하는 Lifecycle 작업에는 충분하지 않아요. 그래서 이 예제는 s3express:SessionMode 조건 키를 사용해 ReadWrite 세션 모드를 명시적으로 요구하도록 해요.
예제: Lifecycle 작업을 위해 명시적 ReadWrite 세션 모드로 CreateSession을 허용하는 버킷 정책
{
"Version":"2008-10-17",
"Statement":[
{
"Effect":"Allow",
"Principal": {
"Service":"lifecycle.s3.amazonaws.com"
},
"Action":"s3express:CreateSession",
"Condition": {
"StringEquals": {
"s3express:SessionMode": "ReadWrite"
}
},
"Resource":"arn:aws:s3express:us-east-2:412345678921:bucket/amzn-s3-demo-bucket--use2-az2--x-s3"
}
]
}
Lifecycle 규칙 모니터링
디렉터리 버킷에 저장된 객체의 경우 S3 Lifecycle은 AWS CloudTrail 관리 및 데이터 이벤트 로그를 생성해요. 자세한 내용은 디렉터리 버킷용 CloudTrail 로그 파일 예제 를 참고하세요.
Lifecycle 구성을 만드는 방법과 S3 Lifecycle 관련 문제를 해결하는 방법에 대한 자세한 내용은 다음 주제를 참고하세요.