最近digdagだったりDigdagだったりそろえるのが面倒になってきたhandaです。
今回は前回の記事で使用したこのPowerShellを使用して、Embulkコマンドを実行してみたいと思います。
www.capybara-engineer.com
Embulkで使用するファイルは、以下の過去記事で使用したものを流用します。
www.capybara-engineer.com
尚、ついでに実行ログを出力したいので、以下の記事を参考にログ出力設定も実装しました。
www.miraclejob.com
実施作業
Embulkコマンド確認
まずは実行するEmbulkコマンドを確認します。
embulk run config.yml
バッチファイル作成
次にEmbulkコマンドを実行するPowerShellのバッチを作成します。(変な実装があってもご容赦ください)
※embulkの実行ログを出力すると、ログが長くなってしまうので、今回は入れないようにしています
function LogMessage($Message , $Log){ Write-Output "$(Get-Date -Format G): $Message" Write-Output "$(Get-Date -Format G): $Message" >> $Log } $logfile="C:\opt\embulk\logs\embulk_run_$(Get-Date -Format "yyyyMMdd_HHmm").log" LogMessage "start embulk" $logfile embulk run C:\work\embulk\config.yml if ($? -ne "True"){ LogMessage "error embulk" $logfile exit 1 } LogMessage "end embulk" $logfile
実際に運用していく際はログは日次でローテートされるほうが良いとは思うのですが、今回はそこまでする必要はないので、時分でローテートされるように実装しています。
$logfile="C:\opt\embulk\logs\embulk_run_$(Get-Date -Format "yyyyMMdd_HHmm").log"
実際に実行してみます。
# C:\opt\embulk\embulk_run.ps1
特に問題なく実行できてそうです。
digdag設定・実行
Embulk実行バッチが作成できたら、digdagのworkflowファイルを以下の内容で作成してサーバにアップロードします。
timezone: UTC _export: sh: shell: ["powershell.exe", "-"] +embulk: sh>: C:\opt\embulk\embulk_run.ps1
アップロードできたので、実行していきます。
正常終了しました。
digdagのタスクログを見てもEmbulkバッチが正常に実行されていることが確認できます。
Embulkバッチから出力したログを見ると開始、終了のメッセージだけ出力されていることも確認できました。
バッチのログも分単位で分割されていました。
感想及び所感
今回はdigdagでembulkコマンドを実行するところまで実施しました。
次回は今回出力したEmbulkバッチのログをCloudWatchに転送して、エラーが発生した場合にアラートを出すように設定したいと思います。