セージ の メモ書き

メモこそ命の恩人だ

AZURE - 関数アプリ (Azure Functions)

関数アプリ (Azure Functions)

docs.microsoft.com

  • サーバーレスなサービス。
  • 動作環境については、心配無用。
  • コードを記述に専念できる。

作成手順

  • リソースグループを作成する。

  • "関数アプリ" を選択し、"作成" を選択。

  • 必要な情報を入力。

    • プランは "消費量(サーバーレス)" にする。従量課金。

  • ストレージアカウントを未作成の場合、新規作成する。

    • そこまで使わなければ、無料だと思う... 今のところ無料。

  • 関数アプリを作成できた。

  • 完了後、ストレージアカウントも作成されたことを確認。


開発環境

Azure ポータル の場合

  • 前述で作成した関数アプリを選択し、"作成" を選択。
  • 開発環境を "ポータルでの開発" にし、"HTTP trigger" を選択。
  • "テストと実行" を選択。

以下がデフォルトのコード。

#r "Newtonsoft.Json"

using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;

public static async Task<IActionResult> Run(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);
}
  • HTTP リクエストの内容を設定し、"実行" を選択。
  • HTTP レスポンスを確認できる。

Visual Studio の場合

  • 新しいプロジェクトを作成し、"Azure Functions" を選択。
  • "HTTP trigger" を選択。

  • ローカル環境でデバッグできる。

  • プロジェクト→発行 より、"Azure Funciton App (Windows)" を選択。

  • Microsoft アカウントと紐づいた Azure のサブスクリプションが表示される。

  • 関数アプリを選択し、"完了" を選択。
  • "発行" を選択し、2~3分ほど待つと、処理が完了する。

  • Azure 上にデプロイされる。

  • "テストと実行" より、前述と同様の操作方法で動作確認できる。


関数アプリの利用

https://関数アプリ名.azurewebsites.net/api/関数名?code=関数キー
  • C# を使用して関数アプリを利用する。
  • "関数の URL の取得" よりURLを取得する。
  • 関数にアクセスするため、関数キーが必要。

GET メソッドの場合

  • HttpClient.GetAsync メソッドで取得できる。
  • クエリストリングにパラメータを指定する。
private async Task RunGetMethod(string url) 
{
    using var client = new HttpClient();
    var responseMessage = await client.GetAsync($"{url}&name=テストさん");
    if (!responseMessage.IsSuccessStatusCode) return;
    var json = await responseMessage.Content.ReadAsStringAsync();
    Debug.WriteLine(json);
    // Hello, テストさん. This HTTP triggered function executed successfully.
}

POST メソッド

  • HttpClient.PostAsync メソッドで取得できる。
  • ボディ部に JSON 形式でパラメータを指定する。
private async Task RunPostMethod(string url)
{
    using var client = new HttpClient();
    var content = "{ name: 'テストさん' }";
    var responseMessage = await client.PostAsync(url, new StringContent(content));
    if (!responseMessage.IsSuccessStatusCode) return;
    var json = await responseMessage.Content.ReadAsStringAsync();
    Debug.WriteLine(json);
    // Hello, テストさん. This HTTP triggered function executed successfully.
}



以上