Azure Functionsのはじめかた

Azure FunctionsはAzureが提供しているFaaSです。 基本的にはApp ServiceというPaaSのサービス上で動き、App Serviceのプランをどれを選ぶかによっても提供される機能が異なります。 コンピューティング性能だけでなく、vNetなどの機能の有無の差異もあります。
(一応AKS上でも実行できるみたいですが、自分は試してみたことはありません。時間があったら試してみたいです。)

作成するだけならめっちゃ簡単ですが、自分の理解を整理するためにも書き起こします。

まずはサクッとAzure Funtionsを作ってみましょう。

Portalからログイン後、

functionsと検索し、Azure Functionsを選びます。

関数アプリの作成をクリックし、プランを選びます。 Flex consumptionは最近プレビューになった機能ですが、Azure Funtionsで多くの方が悩んだであろう?従量課金プランにおけるvNet周りの問題等を解決してくれました。 この辺りの詳細はまた記事にしたいと思います。

ここでは従量課金である、consumption planを選びます。

Select→ Basicsではお好きなResource Groupに作成していただき、名前も好きな名前をつけてください。

  • Runtime stack: NodeJS
  • Version: 20LTS
  • Region: Japan East
  • Operating System: Linux

残りのタグはそのままで、Createしてください。
※ちなみに、後でportalから簡単にwebアプリを作成するのですが、portalからの作成は、以前はwindowsのfunctionsでしかできませんでしたが、Linuxでもできるようになりました。

作成できたら、Azure Functions のリソースに移動し、overviewの下あたりにある、Create in Azure portalのCreate Functionを選びます。

テンプレートはHTTP Triggerを選んでください。 Template Detailはそのままで大丈夫です。 Createを選びます。

そしたらHTTP triggerのコードが表示されている画面に飛びます。 Azure FunctionsはFaaSに当たるサービスですが、トリガーはHTTP以外にも、タイマーやblob、キュー、cosmos dbなどを指定できます。
Azure Functions のトリガーとバインド ポータル上からトリガーをテストすることもできます。 上記画面の、Test/Runをクリックしてください。

Test/RunはそのままでRunします。

http requestがAzure FunctionsのAPI endpointへ投げられます。 200 OKが返され、テストに成功したことが確認できたと思います。

非常に簡単にデプロイまでできたことが分かったかと思います。

また、Azure Functionsを作成したRGを覗いてみましょう。 Function App(Azure Funtions)以外にも、App Service Plan,Storage Account,Smart detector alert rule, Application Insightsも作成されていることが確認できるかと思います。

App Service planはFunctionsを実行するための基盤というイメージで良いかと思います。 (Azure FunctionsやApp serviceを使う場合は、どのApp service planを使うか、まで考える必要があると思います。)

Storage AccountはFuntion AppのSettings→Environment variablesにAzureWebJobsStorageという環境変数に紐づいています。 Valueを確認いただくと、このStorage Accountの接続文字列があることが確認できると思います。

※Azure Funtionsではユーザで定義する環境変数と、Azure側で自動的に作成され、利用される変数がこのEnvironment Variableの1箇所に集まってます。 ユーザ側でつけた覚えがない変数がある場合は、Azure Funtionsのドキュメントを確認するのがいいと思います。 https://learn.microsoft.com/en-us/azure/app-service/reference-app-settings?source=recommendations&tabs=kudu%2Cdotnet

Failure Anomaliesは失敗時の検知、通知を担う機能になっています。

Application InsightsはFunctionsに限らず、AzureのAPM(Application Performance Management)のサービスです。 Functionsでは非常に簡単にApplication Insights と統合できます。コードレイヤーでApp  Insightsの実装を意識する必要は基本ありません。 Live Metrics,Transaction Search等、強力なトレーシング機能が備わっており、マイクロサービスの連携や、いわゆるオブザーバビリティの向上に不可欠です。

ここまででリソースの確認も終わったのでAzure Functions + 関連するリソースを削除します。