スケジュールに従って Azure 関数を実行する

完了

設定した間隔でロジックを実行することはよくあります。 あなたはブログ所有者で、購読者が最新の投稿を読んでいないことに気付いたとします。 最善の対処として、1 週間に一度、ブログをチェックするようにお知らせメールを送信することにしました。 このロジックを実装するには、Azure で "タイマー トリガー" を使用して関数アプリを作成し、関数を週 1 回呼び出します。

タイマー トリガーとは

タイマー トリガーは、一定の間隔で関数を実行するトリガーです。 タイマー トリガーを作成するには、2 つの情報を指定する必要があります。

  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 式は一連の時間を表す文字列です。