####はじめに
どうも、肉と糖質が大好きなおじさんです。
仕事でAWSを使ってますが、マネコンからログを取得するのに
限界を感じたので良い感じのシェルを作りました。
しっかり解説入れようと下書きしていたけど
うっかり消しちゃったのでサクッとシェルだけ投稿します。
あーうっかりうっかり(泣)
####・実行ID、ゲットだぜ!
JOBIDを指定して、良い感じの実行状態を取得するシェルです。
JSONを加工してCSVにしてます。
時間もUTCからJSTに変換します。
引数には、JOBIDを指定してください。
statusget.sh
#!/bin/bash
#--- 引数チェック
if [ $# -gt 1 ]; then
echo "エラー:引数が多すぎます。"
exit 1;
fi
#--- tittle print
echo "AWS GlueJobs Run Status Check"
echo ""
#--- 引数がなしなら入力プロンプト
if [ $# -eq 1 ]; then
INPUT_JOBID=$1;
else
echo "取得するJOBIDを入力してください。"
read -p ":" INPUT_JOBID
fi
if test -z $INPUT_JOBID; then
echo "エラー:JOBIDを入力してください。"
exit 1;
fi
filename=$INPUT_JOBID"_result.csv"
echo "JobName,JobId,Status,StartedOn,CompetedOn,ExecutionTime" > $filename
aws glue get-job-runs --job-name $INPUT_JOBID | jq -r '.JobRuns[] | [.JobName, .Id, .JobRunState, (.StartedOn |tonumber|.+32400|todate), (.CompletedOn |tonumber|.+32400|todate), (.ExecutionTime|tonumber)]| @csv' >> $filename
echo "Finish. output --> " $filename
exit 0;
####・ログストリーム、ゲットだぜ!
「行けぇ、ピ※ち※※!!aws cli get-log-events!!
「ぴかぁ…。
引数には上記シェルで取得した、実行IDを指定してください。
logget.sh
#!/bin/bash
#---- ロググループは環境に応じて変更してください!!
LOG_GROUP=/aws-glue/jobs/#########
#--- 引数チェック
if [ $# -gt 1 ]; then
echo "エラー:引数が多すぎます。"
exit 1;
fi
#--- tittle print
echo "AWS GlueJobs Log Getter Ver1.0"
echo ""
#--- 引数がなしなら入力プロンプト
if [ $# -eq 1 ]; then
INPUT_RUNID=$1;
else
echo "取得する実行IDを入力してください。"
read -p ":" INPUT_RUNID
fi
if test -z $INPUT_RUNID; then
echo "エラー:実行IDを入力してください。"
exit 1;
fi
filename=`date "+%Y%m%d_%H%M%S_"`$INPUT_RUNID".log"
aws logs get-log-events --log-group-name $LOG_GROUP --log-stream-name $INPUT_RUNID --query "events[].[message]" --output text > $filename
echo "Finish. output --> " $filename
exit 0;
出力されるファイル名は、タイムスタンプ+実行ID.log です。
####・おしまいに
シェルの改変などは、ご自由にどうぞ。
AWSのマネコンがもっと使い易くてレスポンスも速くなったら
こんなツールは必要ないんですが、まぁ当分先かなぁ…。
「チラ裏」
M1のMBA最近、買いました。
スッゲー速くて良い感じ。
サイコーです。
あははははは!
ではまた。