Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Boto3와 AWS 클라이언트로 S3 버킷 수명 주기(Lifecycle) 구성 조회하는 방법

문제 상황

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 버킷의 스토리지 비용 최적화 정책을 손쉽게 프로그래밍 방식으로 확인할 수 있습니다.