Boto3を使ってAWS Glueジョブの全実行ステータスを一括確認する方法
はじめに
Pythonのboto3ライブラリを使用すると、AWS Glueジョブの実行履歴をプログラムから簡単に取得できます。本記事では、指定したGlueジョブのすべての過去の実行ステータスを一括で確認する方法を、具体的なコード例とともに解説します。
やりたいこと
例として、「run_s3_file_job」という名前のGlueジョブについて、これまでの全実行のステータス(成功・失敗・実行中など)を取得することを目標とします。
解決の手順
以下のステップに沿って実装を進めます。
ステップ1: boto3およびbotocoreの例外クラス(ClientError)をインポートし、エラーハンドリングに備えます。
ステップ2: job_nameは必須パラメータです。この関数では、指定されたジョブ名に紐づく実行情報を取得します。
ステップ3: boto3ライブラリを使ってAWSセッションを作成します。デフォルトプロファイルにregion_nameが設定されていることを確認してください。設定されていない場合は、セッション作成時に明示的にregion_nameを渡す必要があります。
ステップ4: Glue用のAWSクライアントを作成します。
ステップ5: get_job_runs関数を呼び出し、job_nameをJobNameパラメータとして渡します。
ステップ6: 指定したジョブの過去のすべての実行詳細が取得されます。
ステップ7: forループを使って、各ジョブ実行の詳細を1件ずつ取り出します。
ステップ8: 各実行のステータスと対応するジョブ実行IDを取得します。ステータスは、ジョブが完了していなければ「RUNNING」、完了していれば「SUCCEEDED」または「FAILED」などが返されます。
ステップ9: ステータス確認中に問題が発生した場合に備え、汎用例外もハンドリングしておきます。
サンプルコード
以下のコードで、指定したジョブの全実行ステータスを確認できます。
import boto3
from botocore.exceptions import ClientError
def get_status_of_job_all_runs(job_name):
session = boto3.session.Session()
glue_client = session.client('glue')
try:
response = glue_client.get_job_runs(JobName=job_name)
for res in response['JobRuns']:
print("Job Run id is:" + res.get("Id"))
print("status is:" + res.get("JobRunState"))
except ClientError as e:
raise Exception("boto3 client error in get_status_of_job_all_runs: " + e.__str__())
except Exception as e:
raise Exception("Unexpected error in get_status_of_job_all_runs: " + e.__str__())
get_status_of_job_all_runs("run_s3_file_job")実行結果
Job Run id is:jr_6ef92e90ad66b1a6c7abb1c2659d114a34962b8c6ae4bf9b328ac90b99a33b7d status is:FAILED Job Run id is:jr_9fef13265036406e03e7cae79257305353203ab20b5f400e0c429e10a4999dba status is:FAILED Job Run id is:jr_f9d715a33e83460fc2ef6dee0840a98ef52c06c2ff569627633c4505fda7d835 status is:FAILED Job Run id is:jr_71b57633ac4d8c24f904f0ae01f613f6d54baee440d0ede23f6030cffb0bf4d7 status is:FAILED Job Run id is:jr_b7ead6b6ae43da2580888c73d6896c177510df73bd77c843d3e77b4dc5f22e2f status is:FAILED Job Run id is:jr_6e757509d51066648d49c22a47c26e728d6f842a1c5d2fd4f41941ca868460e6 status is:FAILED Job Run id is:jr_89c1a7b8ea045fac36d25733d7fc657d3560eb159e7e122a8960981dd225a9d0 status is:FAILED Job Run id is:jr_87522bcb924e41a6cf0294185b0a09e46a4ff4c67db5007ff7c10f959836a44b status is:FAILED Job Run id is:jr_08bb54854c8e5c60e96a3e2bade1184963973c1ea7a1e760029e740d4c4c5d7d status is:FAILED Job Run id is:jr_540a90407bb7fbde72b3e1d6cbc98c3b246c21c87d836ff389491bf95520bb41 status is:FAILED Job Run id is:jr_f27227cb16ec9d3df665d8753b09c2e2d24d5b5e5263f3d3f17a9bd4669bee67 status is:FAILED Job Run id is:jr_a1ae4ad2edcbdac5c948b8be92a79a37c27517113364ddc88c8a93bc712fe6c1 status is:SUCCEEDED
補足ポイント
- ページネーションへの対応: 実行履歴が多い場合、get_job_runsは一度に最大20件程度しか返しません。NextTokenが返された場合は、継続トークンを使って残りの実行も取得しましょう。
- 権限設定: この操作にはIAMポリシーで「glue:GetJobRuns」アクションの許可が必要です。
- エラー調査: FAILEDとなった実行については、レスポンス内のErrorMessageやLogGroupNameフィールドを確認すると、CloudWatch Logsから詳細なエラー原因を追跡できます。
このように、boto3のget_job_runs関数を使えば、Glueジョブの監視や障害調査を自動化するスクリプトを簡単に構築できます。
-
PythonのBoto3ライブラリを使用してAWS Glueジョブを実行する方法
はじめに本記事では、Pythonのboto3ライブラリを使用して、AWS Glueのジョブを実行する方法を解説します。例として、「run_s3_file_job」という既存のGlueジョブを起動するケースを取り上げます。解決のためのアプローチとアルゴリズムステップ1 − 例外ハンドリングのために、boto3とbotocoreの例外モジュールをインポートします。ステップ2 − 関数のパラメータとして、job_nameは必須、argumentsは任意です。一部のジョブは実行時に引数を必要とします。その場合は、辞書型(dict)として引数を渡します。例:arguments = {argument1:
-
Boto3を使ってAWS Glueジョブの存在を確認する方法
はじめにPythonのboto3ライブラリを使用すると、指定したAWS Glueジョブが存在するかどうかを簡単に確認できます。本記事では、例として run_s3_file_job というジョブがAWS Glue上に存在するかどうかをチェックする方法を解説します。解決のためのアプローチとアルゴリズムステップ1 − boto3とbotocoreの例外クラス(exceptions)をインポートし、例外処理に備えます。ステップ2 − 関数の引数として job_name を受け取れるようにします。ステップ3 − boto3ライブラリを使ってAWSセッションを作成します。デフォルトプロファイルに regi