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

Python Boto3로 S3 버킷 위치(리전) 확인하는 방법 – 단계별 가이드

문제 정의

Python의 boto3 라이브러리를 사용하여 S3 버킷의 위치(리전) 정보를 조회해야 합니다. 예를 들어, S3에 존재하는 Bucket_1이 어느 리전에 생성되어 있는지 확인하는 것이 목표입니다.

해결 접근 방식

1단계 – boto3와 botocore.exceptions를 임포트하여 발생 가능한 예외를 처리할 수 있도록 준비합니다.

2단계 – 함수의 매개변수로 bucket_name을 전달받습니다.

3단계 – boto3 라이브러리를 이용해 AWS 세션(Session)을 생성합니다.

4단계 – 해당 세션으로 S3 전용 AWS 클라이언트 객체를 만듭니다.

5단계get_bucket_location 함수를 호출하고 버킷 이름을 인자로 넘깁니다.

6단계 – 함수는 S3 버킷 관련 세부 정보가 담긴 딕셔너리를 반환합니다.

7단계 – 작업 도중 오류가 발생하면 일반 예외(generic exception)를 처리하여 안정성을 확보합니다.

예제 코드

다음 코드를 사용하면 버킷의 위치를 손쉽게 확인할 수 있습니다.

import boto3
from botocore.exceptions import ClientError

def get_bucket_location_of_s3(bucket_name):
    session = boto3.session.Session()
    s3_client = session.client('s3')
    try:
        result = s3_client.get_bucket_location(Bucket=bucket_name,)
    except ClientError as e:
        raise Exception("boto3 client error in get_bucket_location_of_s3: " + e.__str__())
    except Exception as e:
        raise Exception("Unexpected error in get_bucket_location_of_s3 function: " + e.__str__())
    return result

print(get_bucket_location_of_s3("Bucket_1"))

실행 결과

{
    'LocationConstraint': 'us-west-2'|'us-west-1'|'us-east-2'|'us-east1',
    'ResponseMetadata': {
        '...': '...',
    },
}

추가 팁

응답 결과의 LocationConstraint 값은 해당 버킷이 생성된 리전을 의미합니다. 다만 주의할 점이 하나 있는데, 미국 동부(버지니아 북부) 리전인 us-east-1에 생성된 버킷은 LocationConstraintNone으로 반환됩니다. 따라서 실무에서는 반환값이 None일 경우 기본값으로 us-east-1을 처리하는 로직을 추가하는 것이 좋습니다.