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

Boto3로 AWS Glue Data Catalog의 전체 레지스트리 목록 조회하기

이 글에서는 Python의 boto3 라이브러리를 사용해 AWS 계정에 등록된 모든 레지스트리(Registry) 목록을 조회하는 방법을 단계별로 살펴봅니다.

예제 개요

AWS Glue Data Catalog에서 사용 가능한 모든 레지스트리 목록을 가져오는 것이 목표입니다.

문제 정의: Python에서 boto3 라이브러리를 활용하여 전체 레지스트리 목록을 조회하는 코드를 작성합니다.

문제 해결 접근 방식

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

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

  • 3단계: boto3를 사용해 AWS 세션을 생성합니다. 기본 프로필(default profile)에 region_name이 설정되어 있는지 확인하고, 설정되어 있지 않다면 세션 생성 시 region_name을 반드시 명시적으로 전달해야 합니다.

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

  • 5단계: 클라이언트의 list_registries 함수를 호출합니다.

  • 6단계: 이 함수는 AWS Glue Data Catalog에 존재하는 모든 레지스트리 목록과 함께 각 레지스트리의 요약 정보를 반환합니다. 단, 상태가 'Deleting'인 레지스트리는 결과에 포함되지 않으며, 현재 사용 가능한 레지스트리만 조회됩니다. 만약 레지스트리가 하나도 없다면 빈 딕셔너리를 반환합니다. 참고로 레지스트리 수가 많은 경우 응답에 NextToken이 함께 반환되므로, 이 값을 다음 호출에 전달하면 나머지 항목을 페이지네이션 방식으로 추가 조회할 수 있습니다.

  • 7단계: 작업 진행 중 오류가 발생할 경우 일반 예외(generic exception)를 처리하여 적절한 에러 메시지를 출력합니다.

예제 코드

다음 코드는 전체 레지스트리 목록을 가져옵니다.

import boto3
from botocore.exceptions import ClientError

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

print(list_of_registries())

출력 결과

{
    'Registries':[
    {
        'RegistryName': 'employee_details',
        'RegistryArn': 'string',
        'Description': 'Registry for employees record',
        'Status': 'AVAILABLE',
        'CreatedTime': 'string',
        'UpdatedTime': 'string'
    },
    {
        'RegistryName': 'security_details',
        'RegistryArn': 'string',
        'Description': 'Registry for security record',
        'Status': 'AVAILABLE',
        'CreatedTime': 'string',
        'UpdatedTime': 'string'
    },
],
'Request': ……
}

위 출력 결과에서 확인할 수 있듯이, 각 레지스트리는 이름(RegistryName), ARN, 설명(Description), 상태(Status), 생성 및 수정 시간(CreatedTime, UpdatedTime) 등의 정보를 포함하고 있습니다. 이처럼 list_registries API를 활용하면 Glue 스키마 관리에 사용 중인 레지스트리 현황을 손쉽게 파악할 수 있습니다.