Azure Functionsの実行時間を指定する
Azure Functionsは様々なトリガーをベースとしてサーバーレスアプリケーション実装することができるサービスです。 どんなトリガーがあるかは後ほど調べるとして、本日はタイマー設定でトリガーされる仕組みを見てみます。
新しいAzure 関数を作成しようとすると上記のようなモーダルが表示され、 トリガーを選択するようになります。
ここで、タイマーは 0 */5 * * * *
とでてくるのですが、
どういうことでしょ。
ドキュメントによると下記のライブラリーを使ってパースしているそうです。 https://github.com/atifaziz/NCrontab
そしてここのドキュメントによると ここで指定できるのは6つの文字列であると書いてあります。
* * * * * *
- - - - - -
| | | | | |
| | | | | +--- day of week (0 - 6) (Sunday=0)
| | | | +----- month (1 - 12)
| | | +------- day of month (1 - 31)
| | +--------- hour (0 - 23)
| +----------- min (0 - 59)
+------------- sec (0 - 59)
1項目目は0-59で秒の指定 2項目目は0-59で分の指定 3項目名は0-23で時の指定 4項目目は1-31で日を指定 5項目目は1-12で月を指定 6項目目は0-6で曜日を指定 0=日曜日
なんとなくわかりました。
さらなる詳細はこちらに記載されているとのことで、見てみましょう。 https://github.com/atifaziz/NCrontab/wiki/Crontab-Expression
*
を使うとすべてがカバーされるとのことです。なので、たとえば、5項目目に*とすると毎月実装という意味合になります。
1,2,3,4
と表記しても 3,4,1,2
と表記しても関係ない=順番は関係ないそうです。
またレンジの場合で10-5
と表記しても5-10
と表記しても同じとのこと。
*/4
と表記すると4で割った数の都度実装という意味合いになります。なので5分に1回実装という場合は2項目目に*/5
と記載します。 これはレンジと掛け合わせても使えるそうです。 例えば、1-30/5
初めの30分だけ5分に1回と表現することができます。
1-5,10,12,20-30/5
のように全部混ぜて使用することも可能です。
ということで、
0 */5 * * * *
は 5分に一回実装というトリガーであることがわかりました。
今日は毎日朝1時になったら昨日分のデータを集計するというトリガーを作りたかったので、下記のようになります。
0 0 1 * * * *
となります。