しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

PowerShell コマンドレットを使って Azure スケジューラの開始時間をもっと細かく指定する

Azure の管理ポータルからスケジューラのジョブを設定する場合には、開始時間を 30 分単位でしか指定できないようになっています。

f:id:shiba-yan:20140806204358p:plain

しかし、REST API 的には 30 分単位といった決まりはなく、秒単位でも指定が可能なんじゃないかという仕様になっています。

ジョブの作成 (スケジューラ API)

REST API を叩いてもいいんですが、あまりにもそれはめんどくさいので Azure PowerShell コマンドレットを使って設定をしてみたいと思います。

一応、MSDN にもリファレンスがあります。

Set-AzureSchedulerHttpJob

開始時間を指定するには -StartTime を使いますが、引数の型としては DateTime を取るようになっているので、割と自由に設定できるような感じがしますね。

実際に設定をしていきますが、最近は Google Analytics API を使って前日の PV を取得するコードを C# で書いてみた - しばやん雑記 でスケジューラを使って日付が変わった後に実行するようにしているので、こいつのジョブを変更してみます。

# 開始時間の DateTime を作成(めんどくさいから Parse してる)
$startTime = [DateTime]::Parse("2014-08-60T15:05:00Z");

# 必須なのは Location / JobCollectionName / JobName
Set-AzureSchedulerHttpJob -Location "Japan East" -JobCollectionName shibayan-api -JobName pageview -StartTime $startTime

ロケーション名やらジョブコレクション名とか結構指定しないといけないですが、それ以外のパラメータはは必須ではないので簡単ですね。

実際にこのスクリプトを実行したところ、管理ポータルから確認できる開始時間に反映されています。

f:id:shiba-yan:20140806204850p:plain

実際に 0:05 にツイートされるか確認しましたが、問題なく動いたので分単位での実行も行えるようです。

秒単位での開始時間設定も出来そうな感じですが、抱かれたい男 No.1 曰くスケジューラ自体に数秒のラグが発生するらしいので、現実的には分単位までかなと思います。