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

Boto3로 AWS Glue 데이터 카탈로그에서 특정 작업에 연결된 모든 트리거 세부 정보 조회하기

이 글에서는 Python의 boto3 라이브러리를 사용하여 AWS Glue 데이터 카탈로그에서 특정 작업(Job)과 연결된 모든 트리거(Trigger)의 세부 정보를 조회하는 방법을 단계별로 살펴봅니다.

예제 개요

'employee_details'라는 작업과 연결된 모든 트리거의 세부 정보를 가져오는 것이 목표입니다.

문제 정의: Python에서 boto3 라이브러리를 활용해 특정 작업에 연결된 모든 트리거의 상세 정보를 조회합니다.

문제 해결 접근 방식 및 알고리즘

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

  • 2단계: job_name은 이 함수의 선택적 매개변수입니다. 값을 지정하면 해당 작업과 연결되어 이 작업을 시작할 수 있는 트리거만 조회하며, 연결된 트리거가 없으면 전체 트리거를 반환합니다. 기본값은 None이므로 호출 시 job_name을 전달하지 않으면 모든 트리거의 세부 정보가 반환됩니다.

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

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

  • 5단계: get_triggers 메서드를 호출하고 job_nameDependentJobName 파라미터로 전달합니다.

  • 6단계: 해당 작업과 연결된 트리거들의 세부 정보가 응답으로 반환됩니다.

  • 7단계: 조회 과정에서 오류가 발생할 경우 일반 예외를 처리하여 적절한 에러 메시지를 출력합니다.

예제 코드

다음 코드는 특정 작업과 연결된 모든 트리거의 세부 정보를 가져오는 전체 구현 예시입니다.

import boto3
from botocore.exceptions import ClientError

def get_details_of_triggers(job_name=None):
    session = boto3.session.Session()
    glue_client = session.client('glue')
    try:
        response = glue_client.get_triggers(DependentJobName=job_name)
        return response
    except ClientError as e:
        raise Exception("boto3 client error in get_details_of_triggers: " + e.__str__())
    except Exception as e:
        raise Exception("Unexpected error in get_details_of_triggers: " + e.__str__())

a = get_details_of_triggers('employee_details')
print(a)

출력 결과

{'Triggers': [{'Name': '01_PythonShellTest1', 'WorkflowName': 'arn:aws:iam::1234:role/dev-edl', 'Id': 'string', 'Type': 'SCHEDULED'|'CONDITIONAL'|'ON_DEMAND', 'State': 'CREATING'|'CREATED'|'ACTIVATING'|'ACTIVATED'|'DEACTIVATING'|'DEACTIVATED'|'DELETING'|'UPDATING', 'Description': 'string', 'Schedule': 'string'}]}

주요 포인트 정리

  • Type 필드: 트리거 유형을 나타내며, 스케줄 기반(SCHEDULED), 조건 기반(CONDITIONAL), 온디맨드(ON_DEMAND) 중 하나입니다.

  • State 필드: 트리거의 현재 상태를 나타냅니다. 생성 중(CREATING), 생성 완료(CREATED), 활성화(ACTIVATED), 비활성화(DEACTIVATED) 등 다양한 단계를 거칩니다.

  • Schedule 필드: SCHEDULED 유형의 트리거인 경우 cron 형식의 실행 일정이 표시됩니다.

이처럼 boto3의 get_triggers API를 활용하면 별도의 콘솔 작업 없이 코드 한 줄로 Glue 워크플로우 내 트리거 정보를 손쉽게 자동화하고 관리할 수 있습니다.