たくさんのAWS Glue Jobを実行している環境で実行履歴をまとめて見るワンライナー

AWSのマネジメントコンソールでGlue Jobの実行履歴を見るには、見たいGlue Jobを選択します。選択したJobの実行履歴が画面の下半分に表示されます。cliで確認するには aws glue get-job-runs というコマンドにJobを指定します。

しかしこれでは、Glue JobがたくさんあるAWS環境で全体の実行履歴を見るのはめんどうです。

ので、コマンドを組み合わせてワンライナーを書きました。

$ for j in $(aws --output json glue get-jobs | jq ".Jobs[] | .Name" -r); do aws --output json glue get-job-runs --job-name $j | jq ".JobRuns[] | [.JobName, .StartedOn, .LastModifedOn, .CompletedOn, .JobRunState] | @csv" -r; done | sort -t, -k 2n,2

説明

  1. aws glue get-jobs コマンドで登録されているJob一覧をJSONフォーマットで取得し、jqコマンドでJob名のみを抽出
  2. Jobでループ: aws glue get-job-runs コマンドでJob名から実行履歴をJSONフォーマットで取得し、jqコマンドで必要な情報をCSV形式で抽出
  3. 全ジョブの実行履歴のCSVをマージしてJob開始時刻でソート

時刻はUnixタイムスタンプです。

awscliとjqコマンドの相性はいいです。

2020/08/17 追記

時刻表示がイケてないので、やっぱりPythonスクリプトにしました。

たくさんのAWS Glue Jobを実行している環境で実行履歴を一覧表示するPythonスクリプト - Qiita

関連

AWS CloudWatchログ容量の推移を確認するワンライナー