F#とAzure Functions
Azure Functionsがなかなか便利で、すでに仕事で何度か利用しています。
ご紹介も兼ねて簡単なサンプルを載せておきたいと思います。
ここではHTTPリクエストに対して自分自身を送り返すQuine的な関数を作ってみます。
前提知識やメモ
関数の下準備
Azureポータル上で、[HTTP trigger][F#][Name:Quine][Authorization level:Anonymous]という設定で関数を作成します。
実装
次のようなスクリプトを書きます。
__SOURCE_DIRECTORY__以下にあるrun.fsxファイル(自身)を読み込んでレスポンスとして返しています。
#r "System.Net.Http"open System.IO
open System.Text
open System.Netlet run (req:HttpRequestMessage, log:TraceWriter) =
async {
let code =
Path.Combine(__SOURCE_DIRECTORY__, "run.fsx")
|> File.ReadAllTextlet response = req.CreateResponse(HttpStatusCode.OK)
response.Content <- new StringContent(code, Encoding.UTF8, "text/plain")
return response
}
|> Async.RunSynchronously
動作確認
Azureポータル上でも動作テストが行えますが、関数のURLを取得すると実際にアクセスすることができます。
今回作成した関数のサンプルがこちら。
https://hellofsharp.azurewebsites.net/api/Quine