Python
 Computer >> コンピューター >  >> プログラミング >> Python

Boto3を使ってAWS Glueクローラーのメトリクスを1つまたは複数取得する方法【Pythonコード例】

はじめに

この記事では、Pythonのboto3ライブラリを使用して、AWS Glueデータカタログに登録された指定したクローラーのメトリクスを取得する方法を解説します。単一のクローラーだけでなく、複数のクローラーを一度に指定することも可能です。

課題: Pythonのboto3ライブラリを使って、指定されたクローラーのメトリクスを取得する。

例: クローラー「crawler_for_s3_file_job」のメトリクスを取得する。

解決のためのアプローチ

以下の手順で、指定されたクローラーのメトリクスを取得できます。

ステップ1: 例外処理のためにboto3とbotocore.exceptions(ClientError)をインポートします。

ステップ2: crawler_namesは必須パラメータです。リスト形式で渡すため、1つのクローラー名でも複数のクローラー名でも同時に指定してメトリクスを取得できます。

ステップ3: boto3ライブラリを使用してAWSセッションを作成します。デフォルトプロファイルにregion_nameが設定されていることを確認してください。設定されていない場合は、セッション作成時に明示的にregion_nameを指定する必要があります。

ステップ4: AWS Glue用のクライアントを作成します。

ステップ5: get_crawler_metrics関数を使用し、CrawlerNameListパラメータにクローラー名のリストを渡します。

ステップ6: 指定されたクローラーのメトリクスが返されます。取得できる主な情報は以下の通りです。

  • 残り実行時間(TimeLeftSeconds)
  • 推定処理中かどうか(StillEstimating)
  • 最終実行時間(LastRuntimeSeconds)
  • 中央値実行時間(MedianRuntimeSeconds)
  • 作成・更新・削除されたテーブル数

ステップ7: 処理中に問題が発生した場合に備え、汎用的な例外ハンドリングを実装します。

サンプルコード

以下のコードを使用すると、指定されたクローラーのメトリクスを取得できます。

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}}

まとめ

boto3のget_crawler_metrics APIを使用すれば、AWS Glueクローラーの実行時間やテーブル作成状況などのメトリクスを簡単に取得できます。CrawlerNameListはリスト形式で受け付けるため、複数のクローラーをまとめて監視したい場合にも便利です。CloudWatchと組み合わせれば、クローラーのパフォーマンス監視やコスト最適化にも活用できるでしょう。

  1. Boto3を使ってAWS Glueデータカタログからデータベースを削除する方法

    課題Pythonのboto3ライブラリを使用して、自分のAWSアカウント内に作成されたデータベースを削除します。例 − アカウントに作成された「Portfolio」というデータベースを削除します。解決のためのアプローチとアルゴリズムステップ1 − 例外をハンドリングするために、boto3とbotocoreの例外モジュールをインポートします。ステップ2 − AWS Glue Catalogから削除したいデータベース名を database_name パラメータとして渡します。ステップ3 − boto3ライブラリを使ってAWSセッションを作成します。デフォルトプロファイルに region_name

  2. Boto3を使ってAWS Glueデータカタログからクローラーを削除する方法

    本記事では、Pythonのboto3ライブラリを使用して、AWSアカウント内に作成されたGlueクローラーを削除する手順を解説します。AWS Glueのクローラーは、S3などのデータソースをスキャンしてデータカタログにテーブル定義を作成する重要なコンポーネントですが、不要になったクローラーは適切に削除することでリソースを整理できます。 課題 − Pythonのboto3ライブラリを使って、自分のアカウントに作成されたクローラーを削除する。 例 − アカウントに作成された「Portfolio」という名前のクローラーを削除する。 問題解決のアプローチとアルゴリズム ステップ1 − 例外処理のため