なか日記

一度きりの人生、楽しく生きよう。

Azure Functionsを使ってWeb Jobを実行する

大した話じゃないんですけどね。Azure FunctionsのトリガーにTimerがあったので、Schedulerの替わりになるかなぁって試した話です。

SchedulerからのWeb Job起動について

Schedulerの設定見てると何となくわかると思いますが、ルールに則ったURLにGETなりPOSTなりすればよさそうです。

こういう時、事前にAdvanced Rest Clientなどで試しておくと安心ですね。ということで、ベーシック認証つけてPOSTしたらWeb Jobを起動できました。

Functionを作る

「TimerTrigger - C#」で作ります。

Function名は適当でもいいですが後から変えられないっぽです。Scheduleは後から変更出来るのでとりあえずデフォルトでもいいと思います。

コード

ベーシック認証つけて、Web Job起動用のURLにPOSTしています。

using System;
using System.Net;

public static void Run(TimerInfo myTimer, TraceWriter log)
{
    log.Verbose($"C# Timer trigger function executed at: {DateTime.Now}");
    var user = "[ユーザID]";
    var pass = "[パスワード]";

    var chars = System.Text.Encoding.ASCII.GetBytes($"{user}:{pass}");
    var base64 = Convert.ToBase64String(chars);
    
    var wc = new WebClient();
    wc.Headers[HttpRequestHeader.Authorization] = "Basic " + base64;
    wc.UploadString("https://[Web App名].scm.azurewebsites.net/api/triggeredjobs/[Web Job名]/run", "");
}

スケジュール

cronと同じ形式で設定します。心配しなくても「i」ボタンを押せば説明が出るので問題ないと思います。

f:id:nakaji999:20160406230449p:plain

ちなみに、協定世界時間(UTC)で指定する必要がありますのでお忘れなく。

実行結果

f:id:nakaji999:20160406230558p:plain

おしまい。