[第3回][Azure Functions 入門] Visual Studio から HTTP トリガーで動作する関数を作成するには?

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

前回の記事では、Azure Portal から Azure Functions を作成しました。

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

なお、本記事は Microsoft Docs の「Azure Portal で初めての関数を作成する」を参考にしています。

スポンサーリンク

プロジェクトの作成

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

プロジェクトの作成

プロジェクトの作成

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

Azure Functions の選択

Azure Functions の選択

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

プロジェクト名の入力

プロジェクト名の入力

次に、一覧で「HTTP trigger」を選択して、Authentication level で「Anonymous」を選択し、[作成]ボタンをクリックします。

新しい Azure Functions アプリケーションの作成

新しい Azure Functions アプリケーションの作成

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

作成された Http trigger のコード

作成された Http trigger のコード

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

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;

namespace HttpTriggerAction
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static async Task Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            string name = req.Query["name"];

            string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            dynamic data = JsonConvert.DeserializeObject(requestBody);
            name = name ?? data?.name;

            string responseMessage = string.IsNullOrEmpty(name)
                ? "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response."
                : $"Hello, {name}. This HTTP triggered function executed successfully.";

            return new OkObjectResult(responseMessage);
        }
    }
}

スポンサーリンク

Azure Functions のデバッグ

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

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

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

プロジェクトの実行

プロジェクトの実行

以下のように「Windows セキュリティの重要な警告」が表示された場合は [アクセスを許可する] ボタンをクリックします。

セキュリティ警告のアクセス許可

セキュリティ警告のアクセス許可

プロジェクトの実行が開始されると、次のようにコンソールが表示され、HTTP trigger のURL が表示されます。

HTTP trigger の URL を取得

HTTP trigger の URL を取得

ブラウザを起動して、先ほど取得した URL + 「?name=HIRO」のように入力をすると、 HTTP trigger が実行されて結果が表示されます。

HTTP trigger の実行

HTTP trigger の実行

実行を停止するには、先ほどの黒い画面で [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 Function の作成

Azure Function の作成

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

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

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

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

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

スポンサーリンク

発行と確認

あともう一息です。

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

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

発行、ビルド、公開確認

発行、ビルド、公開確認

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

サイトURLのクリック

サイトURLのクリック

以下のように表示されたら Azure への発行は成功です。

サイト URL の確認

サイト URL の確認

先ほどの URL の後ろに「<関数名>?name=HIRO」を入力すると、以下のような結果になります。

HTTP trigger の動作確認

HTTP trigger の動作確認

Please follow and like us:

コメント

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