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

Boto3로 AWS Glue Data Catalog의 스키마 전체 목록 조회하기

이 글에서는 Python의 boto3 라이브러리를 사용하여 AWS 계정에 등록된 모든 스키마(Schema) 목록을 조회하는 방법을 알아봅니다.

예제 개요

AWS Glue Data Catalog에 존재하는 모든 스키마 목록을 가져오는 것이 목표입니다.

문제 정의: Python에서 boto3 라이브러리를 활용해 전체 스키마 목록을 조회합니다.

해결 접근 방식

  • 1단계: 예외 처리를 위해 boto3botocore.exceptions의 ClientError를 임포트합니다.

  • 2단계: 이 함수는 별도의 파라미터가 필요하지 않습니다.

  • 3단계: boto3 라이브러리로 AWS 세션을 생성합니다. 기본 프로필에 region_name이 설정되어 있지 않다면, 세션 생성 시 명시적으로 리전을 지정해야 합니다.

  • 4단계: glue 서비스를 위한 AWS 클라이언트 객체를 생성합니다.

  • 5단계: list_schemas 함수를 호출합니다.

  • 6단계: 이 함수는 AWS Glue Data Catalog에 있는 모든 스키마의 요약 정보를 반환합니다. 단, 상태가 'Deleting'인 스키마는 제외되며, 사용 가능한(AVAILABLE) 스키마만 포함됩니다. 스키마가 하나도 없으면 빈 딕셔너리를 반환합니다.

  • 7단계: 스키마 조회 중 문제가 발생할 경우 일반 예외(generic exception)를 처리하여 적절한 오류 메시지를 출력합니다.

예제 코드

아래 코드는 전체 스키마 목록을 조회하는 방법을 보여줍니다.

import boto3
from botocore.exceptions import ClientError

def list_of_schemas():
    session = boto3.session.Session()
    glue_client = session.client('glue')
    try:
        schemas_name = glue_client.list_schemas()
        return schemas_name
    except ClientError as e:
        raise Exception("boto3 client error in list_of_schemas: " + e.__str__())
    except Exception as e:
        raise Exception("Unexpected error in list_of_schemas: " + e.__str__())

print(list_of_schemas())

실행 결과

{
    'Schemas': [
    {
        'RegistryName': 'employee_details',
        'SchemaName': 'employee_table',
        'SchemaArn': 'string',
        'Description': 'Schema for employees record',
        'Status': 'AVAILABLE',
        'CreatedTime': 'string',
        'UpdatedTime': 'string'
    },
    {
        'RegistryName': 'security_details',
        'SchemaName': 'security_table',
        'SchemaArn': 'string',
        'Description': 'Schema for security record',
        'Status': 'AVAILABLE',
        'CreatedTime': 'string',
        'UpdatedTime': 'string'
    },
],
'Request': ……
}

결과 해석

응답 결과에는 각 스키마가 속한 레지스트리 이름(RegistryName), 스키마 이름(SchemaName), ARN, 설명, 상태(Status), 그리고 생성 및 수정 시간이 포함됩니다. 이처럼 list_schemas API를 활용하면 Glue Schema Registry에 등록된 스키마를 손쉽게 관리하고 모니터링할 수 있습니다.