スケジュールに従って Azure 関数を実行する
設定した間隔でロジックを実行することはよくあります。 あなたはブログ所有者で、購読者が最新の投稿を読んでいないことに気付いたとします。 最善の対処として、1 週間に一度、ブログをチェックするようにお知らせメールを送信することにしました。 このロジックを実装するには、Azure で "タイマー トリガー" を使用して関数アプリを作成し、関数を週 1 回呼び出します。
タイマー トリガーとは
タイマー トリガーは、一定の間隔で関数を実行するトリガーです。 タイマー トリガーを作成するには、2 つの情報を指定する必要があります。
- タイムスタンプ パラメーター名。これは、単純にコード内でこのトリガーにアクセスするための識別子です。
- スケジュール。これはタイマーの間隔を設定する CRON 式です。
CRON 式とは
CRON 式は、一連の時間を表す 6 つのフィールドで構成される文字列です。
Azure でのこの 6 つのフィールドの順序は {second} {minute} {hour} {day} {month} {day of the week}
です。
たとえば、5 分ごとに実行されるトリガーを作成する CRON 式は、0 */5 * * * *
のようになります。
最初は、この文字列は複雑に見えるかもしれません。 後でこれらの概念を分類するときに、CRON 式について詳しく解説します。
CRON 式を作成するには、いくつかの特殊文字について基本を理解している必要があります。
特殊文字 | 意味 | 例 |
---|---|---|
* | フィールド内のすべての値を選択する | 曜日フィールド内でのアスタリスク "*" は、すべての曜日を意味します。 |
, | リスト内の項目を区切る | 曜日フィールド内でのコンマ "1, 3" は、月曜日 (1 日目) と水曜日 (3 日目) を意味します。 |
- | 範囲を指定する | 時間フィールド内でのハイフン "10 - 12" は、10 時、11 時、および 12 時を含む範囲を意味します。 |
/ | 増分を指定する | 分フィールド内でのスラッシュ"*/10" は、10 分ごとの増分を意味します。 |
では、元の CRON 式の例に戻ります。 フィールドごとに分けて詳しく理解してみましょう。
0 */5 * * * *
最初のフィールドは、秒を表します。 このフィールドでは、0 から 59 までの値を使用できます。 このフィールドには 0 が含まれているため、最初の指定可能な値である 1 秒を選択しています。
2 番目のフィールドは、分を表します。 "*/5" という値には 2 つの特殊文字が含まれています。 まず、アスタリスク (*) は、"フィールド内のすべての値を選択する" ことを意味します。このフィールドは分を表すため、取得可能な値は 0 から 59 までです。 2 つ目の特殊文字はスラッシュ (/) で、これは増分を表します。 これらの文字を組み合わせると、0 から 59 までのすべての値について、5 番目ごとの値を選択することを意味します。 簡単に言うと、"5 分ごと" です。
残りの 4 つのフィールドは、24 時間制の時刻、月の日付、12 か月の年の月、7 日間の週の曜日を数値で表します。 これらのフィールドにおいて、アスタリスクはすべての値を選択することを意味します。 この例では、"毎月の毎日の毎時" を選択します。
すべてのフィールドを結合すると、この式は "毎月、毎日、毎時、5 分ごと、最初の秒" と読むことができます。
タイマー トリガーを作成する方法
Azure portal でタイマー トリガーを作成できます。 Azure 関数アプリで、トリガー テンプレートの一覧から [タイマー トリガー] を選択します。 実行するロジックを入力します。 [タイムスタンプ パラメーター名] と [CRON 式]を指定します。
このモジュールでは、ポータルにトリガーを作成することに重点を置きますが、トリガーは Core Tools、Visual Studio、または Visual Studio Code を使用してプログラムで作成することもできます。
タイマー トリガーは、一貫したスケジュールに基づいて関数コードを呼び出します。 タイマー トリガーのスケジュールを定義するには、CRON 式を作成します。CRON 式は一連の時間を表す文字列です。