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

Boto3를 사용해 AWS Glue 데이터 카탈로그에서 하나 또는 여러 크롤러의 지표를 가져오는 방법

문제 개요

Python의 boto3 라이브러리를 사용하여 AWS Glue 데이터 카탈로그에 등록된 특정 크롤러(또는 여러 크롤러)의 지표(metrics)를 조회하는 방법을 알아보겠습니다.

예시crawler_for_s3_file_job이라는 이름의 크롤러에 대한 지표를 조회합니다.

문제 해결 접근 방식

1단계 – boto3와 botocore 예외 처리 모듈을 임포트하여 발생할 수 있는 오류를 처리합니다.

2단계crawler_names는 필수 파라미터입니다. 리스트(list) 형태이므로 한 번에 하나 또는 여러 개의 크롤러 이름을 전달하여 지표를 조회할 수 있습니다.

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

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

5단계get_crawler_metrics 함수를 호출하고, CrawlerNameList 파라미터에 crawler_names를 전달합니다.

6단계 – 함수는 해당 크롤러들의 지표 정보를 반환합니다.

7단계 – 작업 확인 중 문제가 발생하면 일반 예외(generic exception)를 처리합니다.

예제 코드

다음 코드를 사용하여 지정한 크롤러의 지표를 조회할 수 있습니다.

import boto3
from botocore.exceptions import ClientError

def retrieves_metrics_of_a_crawler(crawler_names:list):
    session = boto3.session.Session()
    glue_client = session.client('glue')
    try:
        crawler_details = glue_client.get_crawler_metrics(CrawlerNameList = crawler_names)
        return crawler_details
    except ClientError as e:
        raise Exception("boto3 client error in retrieves_metrics_of_a_crawler: " + e.__str__())
    except Exception as e:
        raise Exception("Unexpected error in retrieves_metrics_of_a_crawler: " + e.__str__())

print(retrieves_metrics_of_a_crawler(["crawler_for_s3_file_job"]))

실행 결과

{'CrawlerMetricsList': [{'CrawlerName': 'crawler_for_s3_file_job',
'TimeLeftSeconds': 0.0, 'StillEstimating': False, 'LastRuntimeSeconds':
79.673, 'MedianRuntimeSeconds': 79.673, 'TablesCreated': 1,
'TablesUpdated': 0, 'TablesDeleted': 0}], 'ResponseMetadata':
{'RequestId': '680cf4ca-********0abe', 'HTTPStatusCode': 200,
'HTTPHeaders': {'date': 'Sun, 28 Feb 2021 11:38:08 GMT', 'content-type':
'application/x-amz-json-1.1', 'content-length': '216', 'connection':
'keep-alive', 'x-amzn-requestid': '680cf4ca-******************0abe'},
'RetryAttempts': 0}}

결과 분석

응답 결과에는 다음과 같은 유용한 지표들이 포함됩니다.

  • CrawlerName – 조회된 크롤러의 이름
  • LastRuntimeSeconds – 마지막 실행에 소요된 시간(초)
  • MedianRuntimeSeconds – 실행 시간의 중앙값(초)
  • StillEstimating – 크롤러가 현재 테이블 추정 작업 중인지 여부
  • TimeLeftSeconds – 실행 완료까지 남은 예상 시간(초)
  • TablesCreated / TablesUpdated / TablesDeleted – 생성, 업데이트, 삭제된 테이블 수

여러 크롤러의 지표를 동시에 확인하고 싶다면, 리스트에 크롤러 이름을 여러 개 담아 전달하기만 하면 됩니다. 이를 통해 대규모 데이터 카탈로그 환경에서도 크롤러의 성능과 상태를 손쉽게 모니터링할 수 있습니다.