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と組み合わせれば、クローラーのパフォーマンス監視やコスト最適化にも活用できるでしょう。
-
Boto3を使ってAWS Glueデータカタログからデータベースを削除する方法
課題Pythonのboto3ライブラリを使用して、自分のAWSアカウント内に作成されたデータベースを削除します。例 − アカウントに作成された「Portfolio」というデータベースを削除します。解決のためのアプローチとアルゴリズムステップ1 − 例外をハンドリングするために、boto3とbotocoreの例外モジュールをインポートします。ステップ2 − AWS Glue Catalogから削除したいデータベース名を database_name パラメータとして渡します。ステップ3 − boto3ライブラリを使ってAWSセッションを作成します。デフォルトプロファイルに region_name
-
Boto3を使ってAWS Glueデータカタログからクローラーを削除する方法
本記事では、Pythonのboto3ライブラリを使用して、AWSアカウント内に作成されたGlueクローラーを削除する手順を解説します。AWS Glueのクローラーは、S3などのデータソースをスキャンしてデータカタログにテーブル定義を作成する重要なコンポーネントですが、不要になったクローラーは適切に削除することでリソースを整理できます。 課題 − Pythonのboto3ライブラリを使って、自分のアカウントに作成されたクローラーを削除する。 例 − アカウントに作成された「Portfolio」という名前のクローラーを削除する。 問題解決のアプローチとアルゴリズム ステップ1 − 例外処理のため