はじめに
TodoBot作成、今回はメインとなるTodo管理のアプリケーションが動作するためのFunctionsを新規作成します。
前回の構成図から少し変えました。Todo管理アプリケーションの配置を、App ServiceからFunctionsに変更しています。というのも、Botなんだから問い合わせがあったときだけ動作してくれれば良く、App Serviceである必要はないなと気が付いたから。不要なコストはできるだけカットしていきましょう。
App ServiceはVMのレンタルなのでおよそ定額、Functionsは実行量に比例する従量課金制(App Serviceと同じ料金制にすることもできるけど)。Webサイト(アプリ)はApp Serivce、バッチはFunctionsという構成が多いように思う。詳しい金額の違いについては、このページの説明がわかりやすいです。

今回は環境がAzureなので、言語は相性の良い.netで開発していきます。それを前提に、Functionsの動作環境などを決定しました。
Azure Functions App
- Basics
- Project Details
- Instance Details
このあたりは見たままなので説明をカット。- Function App name
- Publish
- Runtime stack
- Version
- Region
- Hosting
- Storage
- Storage account
アプリケーションと連携させるストレージアカウントの設定。ストレージアカウントというのは、Azure内で利用できるストレージサービス(Blobとか)をアカウントという単位でまとめたもの。
- Storage account
- Operating system
- Plan
Functionsを実行する環境の設定。料金やスペックに関わるところがここ。詳しくはこちら。- Consumption(Serverless)|従量課金プラン
- 実行中のリソースに対してのみ課金される。
- Functions Premium|Premiumプラン
- 従量課金プランに加え、事前ウォーミングしているワーカーがある。つまり起動が早い。あとスペックもいい。レスポンスや処理速度を重視するときはこっち。
- App service plan|専用プラン
- App Service Planのリソース上で動かすことができる。追加料金はなし。実行時間が長いFunctionsはこれ。
- Consumption(Serverless)|従量課金プラン
- Storage
- Networking
- Monitoring
- Application Insights
パフォーマンス管理や監視ができるApplication Insightsを連携して利用するか否か。後から追加することも可能。詳しくはこちら。
- Application Insights
- Tags
- Review + create
従量課金プランのFunctionsとApp Service Plan
Functionsを従量課金プランで動かす場合、App Service Planは関係ないと思っていたのだけど、どうやらFunctions作成時に自動で1つ作成されるらしい。Review + createのところに、ひっそりとApp Service Planの項目があった。明らかに「自動で作成されました!」というような名前なので、わかりやすいものに変えたかったのだけど、FunctionsのApp Service Planの変更はできなかった。従量課金プランFunctions専用のApp Service Plan、というところだろうか。
後で調べること
- Docker Containerを利用したFunctionsのパブリッシュってやったことなかった。ので、やってみたい。
- Azure Functions Network injectionsの詳細がわからない。VNETまわりの話らしい。