문제 상황
Python에서 boto3 라이브러리를 사용하여 S3 버킷의 수명 주기(Lifecycle) 구성을 조회하는 방법을 알아보겠습니다. 예를 들어, S3에 있는 Bucket_1 버킷에 설정된 수명 주기 규칙을 확인한다고 가정해 보겠습니다.
해결 접근 방식 및 알고리즘
1단계 – boto3와 botocore의 예외 처리 모듈(ClientError)을 임포트하여 오류를 처리할 수 있도록 준비합니다.
2단계 – bucket_name을 함수의 매개변수로 전달받습니다.
3단계 – boto3 라이브러리를 사용해 AWS 세션(Session)을 생성합니다.
4단계 – 생성한 세션으로 S3 서비스용 AWS 클라이언트를 만듭니다.
5단계 – get_bucket_lifecycle_configuration 함수를 호출하고 버킷 이름을 인자로 전달합니다.
6단계 – 함수는 해당 S3 버킷의 수명 주기 규칙 정보를 담고 있는 딕셔너리를 반환합니다.
7단계 – 조회 과정에서 문제가 발생할 경우 일반 예외(Exception)를 처리하여 적절한 오류 메시지를 발생시킵니다.
예제 코드
다음 코드를 사용하면 버킷의 수명 주기 구성을 가져올 수 있습니다.
import boto3
from botocore.exceptions import ClientError
def get_bucket_lifecycle_of_s3(bucket_name):
session = boto3.session.Session()
s3_client = session.client('s3')
try:
result = s3_client.get_bucket_lifecycle_configuration(Bucket=bucket_name,)
except ClientError as e:
raise Exception("boto3 client error in get_bucket_lifecycle_of_s3 function: " + e.__str__())
except Exception as e:
raise Exception("Unexpected error in get_bucket_lifecycle_of_s3 function: " + e.__str__())
return result
print(get_bucket_lifecycle_of_s3("Bucket_1"))실행 결과
코드를 실행하면 아래와 같이 버킷에 설정된 수명 주기 규칙이 딕셔너리 형태로 출력됩니다.
{
'Rules': [
{
'ID': 'Rule for TaxDocs/',
'Prefix': 'TaxDocs',
'Status': 'Enabled',
'Transitions': [
{
'Days': 365,
'StorageClass': 'STANDARD_IA',
},
],
},
],
'ResponseMetadata': {
'...': '...',
},
}결과 해석
출력 결과를 살펴보면 TaxDocs 접두사가 붙은 객체에 대해 활성화(Enabled)된 수명 주기 규칙이 존재하며, 객체가 생성된 지 365일이 지나면 스토리지 클래스가 STANDARD_IA(자주 액세스하지 않는 데이터를 위한 저비용 스토리지)로 자동 전환되도록 설정되어 있습니다. 이처럼 boto3를 활용하면 S3 버킷의 스토리지 비용 최적화 정책을 손쉽게 프로그래밍 방식으로 확인할 수 있습니다.