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

Boto3로 AWS Glue 워크플로 세부 정보 조회하는 방법

AWS Glue Data Catalog에 생성된 워크플로(workflow)의 메타데이터를 확인하고 싶다면 Python의 boto3 라이브러리를 활용하면 됩니다. 이 글에서는 boto3의 get_workflow API를 사용해 자신의 계정에 생성된 워크플로의 리소스 메타데이터를 조회하는 방법을 단계별로 살펴봅니다.

문제 상황

사용자 계정에 생성된 워크플로의 메타데이터(워크플로 이름, 생성일, 마지막 수정일, 실행 상태, 작업 통계 등)를 Python과 boto3 라이브러리를 이용해 가져와야 합니다.

해결 접근 방식 및 알고리즘

  • 1단계: 예외 처리를 위해 boto3botocore 예외 모듈을 임포트합니다.

  • 2단계: 이 함수에는 workflow_name이라는 필수 파라미터가 필요합니다. 지정한 이름으로 대상 워크플로를 식별하여 메타데이터를 가져옵니다.

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

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

  • 5단계: get_workflow 함수를 호출하고 Name 파라미터에 workflow_name을 전달합니다.

  • 6단계: 응답으로 해당 워크플로의 메타데이터가 반환됩니다.

  • 7단계: 작업 확인 중 오류가 발생할 경우 일반 예외(generic exception)를 처리합니다.

예제 코드

다음 코드는 사용자 계정에 생성된 워크플로의 세부 정보를 가져옵니다.

import boto3
from botocore.exceptions import ClientError

def get_resource_metadata_of_workflow(workflow_name):
    session = boto3.session.Session()
    glue_client = session.client('glue')
    try:
        response = glue_client.get_workflow(Name=workflow_name)
        return response
    except ClientError as e:
        raise Exception("boto3 client error in get_resource_metadata_of_workflow: " + e.__str__())
    except Exception as e:
        raise Exception("Unexpected error in get_resource_metadata_of_workflow: " + e.__str__())

a = get_resource_metadata_of_workflow('dev-aiml-naviga-ods-load')
print(a)

실행 결과

위 코드를 실행하면 워크플로 이름, 기본 실행 속성(DefaultRunProperties), 생성 및 마지막 수정 시각, 시작·완료 시각, 실행 상태(COMPLETED), 그리고 총 작업 수와 성공·실패·중단된 작업 수 등의 통계 정보가 포함된 딕셔너리가 출력됩니다.

{'Workflow': {'Name': 'dev-aiml-naviga-ods-load', 'DefaultRunProperties': {}, 'CreatedOn': datetime.datetime(2020, 5, 27, 3, 10, 57, 967000, tzinfo=tzlocal()), 'LastModifiedOn': datetime.datetime(2020, 5, 27, 3, 10, 57, 967000, tzinfo=tzlocal())}, 'StartedOn': datetime.datetime(2021, 2, 3, 16, 14, 48, 795000, tzinfo=tzlocal()), 'CompletedOn': datetime.datetime(2021, 2, 3, 16, 28, 6, 207000, tzinfo=tzlocal()), 'Status': 'COMPLETED', 'Statistics': {'TotalActions': 3, 'TimeoutActions': 0, 'FailedActions': 0, 'StoppedActions': 0, 'SucceededActions': 3, 'RunningActions': 0}}, 'MissingWorkflows': [], 'ResponseMetadata': {'RequestId': 'b328d064-24ab-48c4-b058-852387a3d474', 'HTTPStatusCode': 200, 'RetryAttempts': 0}}

정리

boto3의 get_workflow API를 활용하면 AWS 관리 콘솔에 직접 접속하지 않고도 코드 몇 줄로 Glue 워크플로의 구성 정보와 최신 실행 통계를 손쉽게 조회할 수 있습니다. ClientError와 일반 예외를 분리해 처리하면 권한 부족, 존재하지 않는 워크플로 이름 등 다양한 오류 상황에 체계적으로 대응할 수 있다는 점도 기억해 두면 좋습니다.