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

Boto3로 AWS Glue 데이터 카탈로그의 트리거 시작하기

개요

이 글에서는 Python의 boto3 라이브러리를 사용해 AWS Glue 데이터 카탈로그에 등록된 트리거를 시작하는 방법을 알아봅니다.

AWS Glue의 트리거(Trigger)는 크롤러나 작업(Job)을 특정 일정 또는 조건에 따라 자동으로 실행하도록 제어하는 기능입니다. 일반적으로는 예약된 스케줄에 따라 동작하지만, boto3의 start_trigger API를 호출하면 스케줄과 무관하게 트리거를 즉시 구동할 수 있습니다.

문제 정의

boto3 라이브러리를 사용하여 지정한 이름의 트리거를 시작합니다.

문제 해결 접근 방식

  • 1단계: boto3botocore.exceptions를 임포트하여 예외 상황을 처리할 준비를 합니다.

  • 2단계: 함수의 매개변수로 trigger_name(트리거 이름)을 전달받습니다.

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

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

  • 5단계: start_trigger 함수를 호출하고, 매개변수 trigger_name을 Name 인자로 전달합니다.

  • 6단계: 이 함수는 응답 메타데이터를 반환하며, 트리거에 설정된 스케줄과 관계없이 즉시 트리거를 시작합니다.

  • 7단계: 트리거 시작 과정에서 문제가 발생하면 일반 예외(generic exception)를 처리합니다.

예제 코드

아래 코드는 AWS Glue 데이터 카탈로그에서 트리거를 시작합니다.

import boto3
from botocore.exceptions import ClientError

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

print(start_a_trigger("test-daily"))

출력 결과

{'Name': 'test-daily', 'ResponseMetadata': {'RequestId': 'b2109689-*******************-d', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Sun, 28 Mar 2021 08:00:04 GMT', 'content-type': 'application/x-amz-json-1.1', 'content-length': '26', 'connection': 'keep-alive', 'x-amzn-requestid': 'b2109689-***********************-d'}, 'RetryAttempts': 0}}

결과 해석

응답의 HTTPStatusCode200이면 요청이 성공적으로 처리되어 트리거가 시작되었음을 의미합니다. 응답에는 트리거 이름(Name), 요청 ID(RequestId), HTTP 헤더 정보, 재시도 횟수(RetryAttempts) 등의 메타데이터가 포함됩니다.