문제 개요
Python에서 boto3 라이브러리를 사용하여 AWS Glue Data Catalog에 등록된 특정 데이터베이스의 정의(세부 정보)를 조회하는 방법을 알아보겠습니다.
예시: 'QA-test'라는 이름의 데이터베이스 정의를 조회합니다.
해결 접근 방식
다음 단계를 따라 문제를 해결할 수 있습니다.
1단계: boto3와 botocore 예외 처리 모듈(ClientError)을 임포트하여 예외 상황을 처리합니다.
2단계: database_name은 필수 매개변수입니다. 이 값을 통해 지정한 데이터베이스의 정의를 가져옵니다.
3단계: boto3 라이브러리를 사용하여 AWS 세션을 생성합니다. 기본 프로필에 region_name이 설정되어 있는지 확인하고, 설정되어 있지 않다면 세션 생성 시 명시적으로 region_name을 전달해야 합니다.
4단계: Glue 서비스를 위한 AWS 클라이언트를 생성합니다.
5단계: get_database 함수를 호출하고 database_name을 Name 파라미터로 전달합니다.
6단계: 해당 함수는 지정된 데이터베이스의 정의를 반환합니다.
7단계: 작업 확인 중 오류가 발생할 경우 일반 예외(generic exception)를 처리합니다.
예제 코드
아래 코드를 사용하면 데이터베이스의 정의를 조회할 수 있습니다.
import boto3
from botocore.exceptions import ClientError
def retrieves_database_details(database_name):
session = boto3.session.Session()
glue_client = session.client('glue')
try:
response = glue_client.get_database(Name=database_name)
return response
except ClientError as e:
raise Exception("boto3 client error in retrieves_database_details: " + e.__str__())
except Exception as e:
raise Exception("Unexpected error in retrieves_database_details: " + e.__str__())
print(retrieves_database_details('QA-test'))
코드 설명 및 실행 결과
위 코드는 다음과 같이 동작합니다.
- 세션 생성:
boto3.session.Session()으로 AWS 세션을 만들고,session.client('glue')를 통해 Glue 클라이언트 객체를 생성합니다. - 데이터베이스 조회:
get_database(Name=database_name)호출 시 Name 파라미터에 조회할 데이터베이스 이름을 전달합니다. - 예외 처리: AWS API 호출 관련 오류는 ClientError로, 그 외 예상치 못한 오류는 일반 Exception으로 구분하여 처리합니다.
정상적으로 실행되면 다음과 같은 형태의 출력 결과를 얻을 수 있습니다.
{'Database': {'Name': 'QA-test', 'CreateTime': datetime.datetime(...), ...},
'ResponseMetadata': {'RequestId': '...', 'HTTPStatusCode': 200, ...}}응답에는 데이터베이스 이름, 생성 시간(CreateTime), 위치 URI(LocationUri) 등 Data Catalog에 저장된 메타데이터가 포함됩니다.