【初心者向け】Azure Functions(関数アプリ)をざっくり理解する
この記事の内容
- Azure Functions(関数アプリ)は「サーバーレス」なサービスで、仮想マシン不要で関数コードを実行できます
- 関数アプリにはホスティングプランが複数あり、用途に合わせて選択できます
- HTTPトリガー・タイマートリガー・キュートリガーなど、様々なイベントをきっかけに関数を起動できます
- ポータルからGUIで関数を作成・テストでき、URLにアクセスするだけで動作確認が可能です
- ストレージアカウントやApplication Insightsなど、関連サービスと組み合わせて利用します
Azure Functionsとは
Azure Functionsは、Azureが提供するサーバーレスのサービスです。「関数アプリ」とも呼ばれ、その名の通り「関数を動かすためのアプリ」を作成します。
サーバーレスの最大の特徴は、仮想マシンのような基盤を意識する必要がない点です。コードを書いて、それを動かすための関数アプリを用意するだけで、処理を実行できます。使っていない間はコストがかからない従量課金も選択できるため、ちょっとした処理を低コストで動かしたい場合に非常に便利です。
ホスティングプランの選び方
関数アプリを作成する際、最初に「ホスティングプラン」を選択します。いくつかの選択肢があり、初見では少し戸惑うかもしれませんが、それぞれの特徴を押さえておきましょう。
フレックス従量課金(Flex Consumption)
現時点で最も新しいプランです。使った分だけ課金される従量課金をベースに、最大スケールアウト・仮想ネットワーク統合・常時起動など、より高機能になっています。コストを抑えつつ本格的な機能を使いたい方に向いています。
ただし、執筆時点ではAzureポータルから直接関数を作成・編集できない制約があります。VS CodeなどのIDEを使う必要があります。
従量課金(Consumption)
フレックス従量課金の前身となるプランです。使った分だけ課金され、ポータルからも関数の編集が可能です。初学者がお試しで使うにはこちらが手軽です。
App Serviceプラン / Premiumプラン
すでにApp Serviceを利用している場合、そのプランに関数アプリを相乗りさせることができます。Premiumプランはスケールアウト強化など、さらに高機能な選択肢です。
Container Appsプラン
Container Appsというサービスと連携して関数アプリを動かすプランです。
迷ったら、まずは最もシンプルな「従量課金」を選ぶとよいでしょう。
関数アプリの作成手順
ここでは従量課金プランを使って、関数アプリを作成していきます。
基本設定
| 項目 | 内容 |
|---|---|
| サブスクリプション | 任意のものを選択 |
| リソースグループ | 任意のものを選択または作成 |
| 関数アプリ名 | 任意の名前を入力 |
| リージョン | 任意のリージョンを選択 |
| ランタイムスタック | 使用する言語(例:Python)を選択 |
| バージョン | 使用するランタイムのバージョンを選択 |
| OSの種類 | WindowsまたはLinux |
インスタンスのサイズはメモリ量の選択です。軽い処理であれば小さいサイズで十分です。
ゾーン冗長について
高可用性が必要な場合は「ゾーン冗長」を有効にすることで、複数のアベイラビリティゾーンにまたがって動作するようになります。ただし最小インスタンス数が2以上になるためコストが上がります。コストを抑えたい場合は無効のままで問題ありません。
ストレージアカウント
Azure Functionsはストレージアカウントを使用します。新規作成するか、既存のものを選択できます。
診断設定
Azure Log Analyticsと連携してログを収集する設定です。Log Analyticsのワークスペースを作成済みであれば、ここで紐付けができます。ログ監視が不要であれば「診断設定を構成しない」を選択して進めましょう。
ネットワーク
インターネットからアクセス可能にする「パブリックアクセス有効」か、仮想ネットワークに接続する「仮想ネットワーク統合」かを選択します。お試し用途であればパブリックアクセス有効で問題ありません。
Application Insights(監視)
Application Insightsを使うと、関数の実行回数や応答時間などを記録・可視化できます。今回はなしで進めますが、本番運用時には有効化を検討するとよいでしょう。
デプロイ
GitHubと連携した継続的デプロイが可能です。GitHubにソースコードをプッシュすると自動的に関数アプリに反映されます。今回は無効にします。
認証(ストレージへの接続方式)
関数アプリが内部でストレージアカウントに接続する際の認証方式を選びます。
- シークレット:ストレージアカウントのパスワード(接続文字列)を使って接続します。シンプルですが、セキュリティ面ではやや劣ります。
- マネージドID:パスワード不要でIDベースの安全な接続ができます。Microsoft Entra(旧Azure AD)にIDを作成し、RBACで権限を付与する方式です。セキュリティ面では推奨されますが、設定がやや複雑になります。
試しに使う場合はシークレットで問題ありません。
設定が完了したら「確認および作成」から作成を実行します。
関数の作成
関数アプリの作成が完了したら、次はその中に実際の「関数」を作成します。
プログラミングモデルの選択
現時点ではV2を選択します。
トリガーの種類
関数アプリの大きな特徴のひとつが、様々なイベントをきっかけ(トリガー)に関数を起動できる点です。主なトリガーは以下の通りです。
| トリガー | 概要 |
|---|---|
| HTTPトリガー | HTTPリクエストを受け取ったときに起動 |
| タイマートリガー | 指定した時間間隔(例:1時間ごと)に起動 |
| キュートリガー | Queueストレージにメッセージが入ったときに起動 |
| イベントハブトリガー | Event Hubsにイベントが入ったときに起動 |
今回はシンプルな「HTTPトリガー」を選択します。
関数の設定(HTTPトリガーの場合)
- 名前:任意(例:
HttpTrigger1) - 認証レベル:
Function(デフォルト)で問題ありません
作成すると、選択したランタイム(例:Python)のサンプルコードが自動生成されます。
関数の動作確認
ポータルからのテスト
作成した関数はAzureポータルの「テスト/実行」機能から試すことができます。
- 「実行」ボタンをクリックすると、HTTPステータス200が返り、処理が正常に動いたことを確認できます
- クエリパラメーターに
name=ebisudaを追加して実行すると、レスポンスがHello, ebisudaに変わります
これは、サンプルコードが name パラメーターの有無によって応答を切り替えているためです。
URLへの直接アクセス
「関数のURLの取得」からURLをコピーし、ブラウザーのアドレスバーに貼り付けてアクセスすると、関数が実行されてレスポンスが画面に表示されます。
URLの末尾にクエリパラメーターを追加してアクセスすることもできます。
上記のようにアクセスすると、Hello, ebisuda というレスポンスが返ってきます。
関数の中に書けること
HTTPトリガーで起動した関数の中には、どんな処理でも記述できます。例えば以下のようなものが考えられます。
- 数値の計算処理
- データベースへの読み書き
- 外部APIの呼び出し
- Azure OpenAI Serviceと連携してAIの回答を返す
サーバーや仮想マシンを意識することなく、書いたコードがそのまま動作します。これがサーバーレスの利点です。
まとめ
Azure Functionsは、以下のような使い方に最適なサービスです。
- 仮想マシン不要:サーバーのセットアップ・管理が不要で、関数コードを書くだけで処理を動かせます
- 多彩なトリガー:HTTPリクエスト・タイマー・キューメッセージなど、様々なイベントをきっかけに関数を起動できます
- コスト効率:従量課金プランを選べば、使っていない時間のコストはかかりません
- 他サービスとの連携:ストレージアカウント・Application Insights・Azure OpenAIなど、多くのAzureサービスと組み合わせて利用できます
「この処理だけ関数として動かしたい」という場面では、Azure Functionsを使うことで他のことを考えずにシンプルに実装できます。ぜひ試してみてください。