[第4回][Azure Functions 入門] タイマートリガーで動作する関数を作成するには?

Auzre Functions 入門 Azure
Auzre Functions 入門
スポンサーリンク

前回の記事では、Visual Studio から HTTP トリガーで動作する Azure Functions を作成しました。

今回は Visual Studio から Timer トリガーで動作する Azure Functions を作成する方法について説明をします。

なお、本記事は Microsoft Docs の「Azure でタイマーによってトリガーされる関数を作成する」を参考にしています。

タイマートリガーで動作する関数とは?

タイマートリガーで動作する関数とは、一定の時間間隔、もしくは指定した時刻で起動する関数です。

よって、Azure で実行させたいバッチ処理がある場合有効です。

プロジェクトの作成

それでは、早速 Visual Studio を起動して、プロジェクトを作成します。

プロジェクトの作成

プロジェクトの作成

以下の画面で「Azure」を選択し、一覧から「Azure Functions」を選択し、[次へ]ボタンをクリックします。

Azure Functions の選択

Azure Functions の選択

続いて「プロジェクト名」を入力し(この例では TimerTriggerAction としました)、[作成]ボタンをクリックします。

プロジェクト名の入力

プロジェクト名の入力

次に、一覧で「Timer trigger」を選択して、[作成]ボタンをクリックします。
※ Schedule 欄については後述します。

Timer trigger の選択

Timer trigger の選択

しばらくすると、コードが表示されます。

作成された Timer trigger のコード

作成された Timer trigger のコード

作成されたソースコードを以下に示します。

using System;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;

namespace TimerTriggerAction
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static void Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, ILogger log)
        {
            log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
        }
    }
}

関数の実行スケジュール

作成された関数 Runの引数に「TimerTrigger(“0 */5) * * * *)」と書かれています。これはプロジェクトを作成するときの 「Schedule」 欄に入力した値です。この関数をどのタイミングで実行するかを表しています。

Azure Functions では、定期的な関数の実行スケジュールを NCRONTAB という書式で指定します。

{second} {minute} {hour} {day} {month} {day-of-week}

よって、[秒] [分] [時] [日] [月] [曜日] の順番で値を指定します。

  ----------------- 秒 (0 - 59)
 |   -------------- 分 (0 - 59)
 |  |   ----------- 時 (0 - 23)
 |  |  |   -------- 日 (1 - 31)
 |  |  |  |   ----- 月 (1 - 12) または (January, February, ...) または (Jan, Feb, ...)
 |  |  |  |  |   -- 曜日 (0 - 6) (日曜日=0) または (Sunday, Monday, Tueseday, ...) または (Sun, Mon, Tue, ...)
 |  |  |  |  |  |
 *  *  *  *  *  *

 

曜日は 0〜6で指定します。0が日曜日です。Sunday や Monday のように名前で指定することもかのうですし、Sun, Mon のように3文字の省略形で書くこともできます。

月も同様で、January, February や Jan, Feb のように書くこともできます。

毎日指定した時刻に実行する

毎日 3:00 に実行したいは以下のようにします。

0 3 * * * *

毎日 9:30 に実行したい場合は以下のようにします。

30 9 * * * *

一定時間ごとに実行する

一定時間ごとに実行したい場合は、記号「/」を使用して指定します。

例えば5分ごとに実行したい場合は、以下のように記述します。この場合は毎0分、5分、10分、15分… のように5分ごとに実行をしますので、1時間で12回実行されることになります。

作成した Run関数の引数は以下ですので、5分ごとに実行されます。

* */5 * * * *

2時間おきに実行したい場合は以下のようにします。この例では秒と分に0を指定しているので、0:00, 2:00, 4:00 のように実行されます。

0 0 */2 * * *

では、1:00、3:00 のような奇数時ごと(2時間おき)に実行するにはどうするかですが、この場合は以下のように「時」のところを「1-23/2」とします。これは1:00〜23:00 の間で2時間おきであることを示すので、1:00, 3:00, 5:00 のように実行することができます。

* * 1-23/2 * * *

毎週○曜日の○時に実行するには

毎週火曜日の15:00に実行したい場合は、秒に0、分に0、時に15、曜日に2を指定します。

0 0 15 * * 2

毎週月曜日だけ5分おきに実行したい場合は以下のようにします。

0 */5 * * * 1

平日(月曜から金曜)の○時に実行するには

期間を表す場合は、記号「-」を使用します。よって月曜から金曜の平日を表したい場合は、曜日に「1-5」を指定します。

平日の13:00に実行したい場合は以下のようにします。

0 0 13 * * 1-5

毎月○日の○時に実行するには

毎月15日の13時に実行したい場合は以下のようにします。

0 0 13 15 * *

Azure Functions のデバッグ

ここでは、Azure Portal に配置せずに Visual Studio からデバッグをする方法について説明します。

※あくまでもローカルマシン上での実行であり、Azure 上で動作するわけではありませんので注意してください。

はじめに、Visual Studio のツールバーで [実行] ボタンをクリックします。

プロジェクトの実行

プロジェクトの実行

コンソールが表示され、5分経過するごとにログが出力されることがわかります。

実行例

実行例

実行を停止するには、コンソールで [Ctrl]+[C]キーを入力します。

Azure へのデプロイ

Azure Functions のデバッグが完了したら、Azure Portal へのデプロイをしましょう。

プロジェクトエクスプローラーでプロジェクトを右クリックし、コンテキストメニューから [発行]を選択します。

Azure Functions の発行

Azure Functions の発行

公開先の一覧が表示されますので、「Azure」を選択して [次へ]ボタンをクリックします。

デプロイ先の選択

デプロイ先の選択

続いて、ターゲット選択の一覧が表示されます。ここでは「Azure Function App(Windows)」を選択します。必要に応じて、その他の選択肢でも構いません。

ターゲットの選択

ターゲットの選択

続いて、アカウントの選択画面が表示されます。まだサインインをしていない場合は以下のような画面になります。必要に応じて無料の Azure アカウントを作成するか、既存の Azure  アカウントを選択して [次へ] ボタンをクリックします。

Azure アカウントの選択

Azure アカウントの選択

続いて、Azure Functions を作成します。すでに Azure Portal で Azure Functions を作成している場合は、選択肢として表示されますが、存在しない場合は「(リソースが見つかりませんでした)」と表示されます。

この場合は、以下のピンクの枠の「新しい Azure Functionsを作成」をクリックして [次へ]ボタンをクリックします。

Azure Functions の作成

Azure Functions の作成

新しい Azure Function 作成画面が表示されます。

Azure Functions の作成

Azure Functions の作成

上記の枠の中は、以下の表を参考に入力してください。

名前 新しい関数アプリを一意に識別する名前を入力します。 そのまま使用するか、新しい名前を入力します。
サブスクリプション 使用する Azure サブスクリプションを選択します。
リソースグループ 関数アプリを作成するリソース グループを入力します。 ドロップダウンから既存のリソース グループを選択するか、[新規] を選択して新しいリソース グループを作成します。
プランの種類 任意のプランを選択します。
場所 最寄りのリージョンを選択します。
Azure Storage 新規を選択して汎用のストレージアカウントを作成します。

下記の画面が表示されたら[完了]ボタンをクリックします。

[完了] ボタンをクリック

[完了] ボタンをクリック

発行と確認

あともう一息です。

以下の画面が表示されたら [発行]ボタンをクリックします。

ビルドが開始されますので、ビルドの完了と公開が完了することを確認します。

ビルドの完了と公開

ビルドの完了と公開

続いて、サイトURL をクリックします。

サイトURLのクリック

サイトURLのクリック

注意事項

Timer trigger は定期的に実行される Azure Functions です。用もないのに稼働させておくと課金の対象となりますので注意してください。

Please follow and like us:

コメント

タイトルとURLをコピーしました