Azure Functions(アジュール ファンクションズ)は、サーバーの構築や保守を必要することなく、プログラムコードを実行してくれるマイクロソフトが提供するクラウドサービスのひとつです。必要に応じてスケーリングもしてくれるのでサーバの管理が一切不要になるため「サーバーレスコンピューティング」と呼ばれることもあります。そこで今回は、Azure Functions の簡単な使い方をまとめてみました。
リソースグループの作成
まずはじめにリソースグループを作成します。Azure のリソースグループは、GCPで言うところのプロジェクトに該当するものです。リソースグループを削除すれば所属しているリソースをまとめて削除することができるので、片付けを簡単にすることができます。
Azure Portal にログインしたら「リソースグループ」を選択して「+追加」をクリックします。
適当なリソースグループ名を入力して、リソースグループの場所を選択したら「作成」をクリックします。
以上でリソースグループが作成されます。
Function App の作成
続いて Function App を作成します。
「+リソースの作成」>「Compute」>「Function App」をクリックします。
適当なアプリ名を入力して、先ほど作成したリソーズグループを選択します。(次に続きます)
場所とお好みのランタイムスタック(プログラム言語)を選択して、Application Insights の場所も選択したら「作成」をクリックするとデプロイが開始します。
2〜3分でデプロイが完了します。左メニューの「Function App」をクリックすれば、アプリが作成されていることが確認できます。
関数の作成
本題の関数(Functions)を作成します。
作成したアプリを選択して関数の「+」をクリックします。
開発環境は「ポータル内」を選択し「続行」をクリックします。
関数のトリガーとなる「webhook + API」を選択し「作成」をクリックします。
下のようなコードの関数が作成されます。そのまま実行してみますので「関数のURLの取得」をクリックします。
URLをコピーします。クエリパラメータ「code」の値が APIキーに該当するもので、Azure Functions では「関数キー」と呼ばれます。
余談ですが関数キーは「管理」の画面でも確認することができます。
コピーしたURLにリクエストを実行して、下のようなレスポンスが返ってくればOKです。
Please pass a name on the query string or in the request body
オリジナルの関数の作成
今回はサンプルとして、クエリパラメータ「string」に指定した文字列を返すだけの関数「echo」を作ってみます。
module.exports = async function (context, req) { var string = req.query.string + '\n'; context.res = { status: 200, body: string }; };
関数の「+」をクリックします。
テンプレート「HTTP trigger」をクリックします。
作成する関数名を入力して「作成」をクリックします。
関数のコードを入力して「保存」をクリックします。
右にスクロールして「テスト」タブを選択します。
HTTPメソッド「GET」を選択し、クエリパラメータ「string」を追加してなにかしら値を入力したら、ページ下部の「実行」をクリックします。
出力にクエリパラメータ「string」の値が表示されていればOKです。
プログラムにエラーがある場合は、「ログ」ウィンドウにエラーの詳細を出力してくれるので、デバックすることもできます。
最後に作成した関数「echo」を実行します。(赤字が先ほどのURLから変更した部分です)
HelloWorld
おわりに
はじめて Microsoft Azure を使ってみたのですが、ランタイムのデフォルト値が「.NET」になっているところに Microsoft らしさを感じました(^^) こんなところがこれまで Windows を中心にサーバー構築や開発をされてきた方には、安心して使えるクラウドサービスなのかもしれませんね。
コメント
こんにちは。
とても詳しい内容で参考にさせていただいてます。
少し質問があります。
現在考えているWEBサイトはLMS(トレーニングサイト)なので、
Azureの機能は最低限のもので構わないのですが、早速AzureのSubscriptionページにアクセスすると、Publishの項目(CodeとDocker Container)やRuntime Check(プルダウンメニュ)が新たに追加されていました。
もし可能でしたら、これらの項目は何を選択すべきか教えていただけると助かります。
すみませんがよろしくお願いします。
>鈴木文彦さん
コメントありがとうございます。
私の環境(Azure Portal)で確認してみたのですが、
コメントの内容を確認できませんでした。
お力になれず申し訳ございません。