Azure Functions Core Tools で起動すると何かおかしい

最近Azure Functions Core Toolsの挙動が何かおかしかったので見てみました。症状としては…

  • Windows上でfuncコマンドで起動した後、止めてもポートが使われたままになってる
  • コンソール出力がモノクロ(色がついてない)
  • Visual Studioからのデバッグ実行は問題ない

みたいな感じです。

結論

In-ProcだとIn-Proc用のFunctions Core Toolsが使われて、それが残ってしまう。
なので最初からIn-Proc用のfuncコマンドを使えばよい。(通常 C:\Program Files\Microsoft\Azure Functions Core Tools\in-proc8 フォルダなどにある func.exe)
PowerShellなら Set-Aliasでfunc-inprocとか登録すると楽かも。

続きを読む

Azure Functions Core Tools で start できない

.NETなAzure Functionsのプロジェクトで func start とかAzure Functions Core Toolsを使った実行をしようとすると以下のようなエラーになる場合があります。

Can’t determine Project to build. Expected 1 .csproj or .fsproj but found 2

なんのこっちゃ…という感じですが。なんだか .csproj などのプロジェクトファイルが悪そうですが、func start実行時のビルドの問題なので obj フォルダーを削除してあげればOKです。

※ func経由で .NET のビルドした時の文字化けはいつ直るんでしょうね。。。

Azure Functions Flex ConsumptionでCICDしたい

今Public Previewな新しいAzure FunctionsのホスティングプランであるFlex Consumptionですが、Previewらしく細かい制限が今のところあります。(考慮事項を参照)
その中に以下のようなものがあります。

  • デプロイ: これらのデプロイ関連の機能は現在サポートされていません。
    • デプロイ スロット
    • Azure DevOps タスク (AzureFunctionApp@2) を使用した継続的デプロイ
    • GitHub Actions (functions-action@v1) を使用した継続的デプロイ

Azure PipelinesやGitHub Actionsで使うFunctionsのデプロイ用タスクが使えないんですよね。何も考えずにCDしようとしてハマりました。とはいえVisual Studio CodeやCLIからはデプロイできるので何かしら方法はあるということです。というわけで正式対応されるまでの間の暫定のCDの方法をメモしておきます。

続きを読む

Azure Functions Core Toolsで指定されたファイルが見つからないエラー

Azure Functions Core ToolsでFunctionsを使って実行後、HTTPトリガーを呼び出すと以下のエラーが発生します。

An unhandled host error has occurred.
System.Private.CoreLib: Exception has been thrown by the target of an invocation. Microsoft.AspNetCore.Authentication.JwtBearer: Could not load file or assembly 'System.IdentityModel.Tokens.Jwt, Version=6.35.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. 指定されたファイルが見つかりません。.
続きを読む

Microsoft.Azure.WebJobs.Extensions.Http でエラーになってFunctionsが起動しない

Azure Functions v4の .NET なプロジェクトでNuGetパッケージ更新したりしたら以下のエラーがでて実行できない場合があります。

A host error has occurred during startup operation 'xxxxxxx-xxxx-xxxxx-xxxx-xxxxxxxxx'.
Microsoft.Azure.WebJobs.Extensions.Http: Could not load file or assembly 'System.Net.Http.Formatting, Version=5.2.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. 指定されたファイルが見つかりません。.
Value cannot be null. (Parameter 'provider')

特定バージョンだけな気がしますが、該当しそうなのは以下のIssueです。

なんだか釈然としませんが、対処方法としては以下のようにします。

  1. Microsoft .NET SDK を再インストールする。
  2. Azure Functions Core Tools の最新をインストール(再インストール)する。

一時的な問題だと思いますが、、(たまにこの手の問題に遭遇する)

Microsoft.Azure.WebJobs.Extensions.EventHubs を 5.x にする

.NET 6.0 もリリースされて Azure Functions Runtime v4 もでたということで手元のアレコレをアップデートしてたのですが、IoT HubトリガーやEvent Hubsトリガーで使う Microsoft.Azure.WebJobs.Extensions.EventHubs 5.0.0 が出ていたのでついでに更新することにしたのですが、少し手直しが必要になったのでメモしておきます。
(現状、Visual StudioでIoT HubトリガーなFunctionsを追加すると 4.3.0 が使われるので更新すると同じことをしないといけないはず)

続きを読む

Azure Functions でログレベルを設定する

Azure Functionsで標準的に出力されるログのレベルはhost.jsonファイルで構成できます。

まぁいいんですがローカルでの開発時やCI/CD考えるとhost.jsonそのまま編集したりソース管理したりすると環境によって変えたい時とか不便ですよね。
特にRun From Packageとかでデプロイしてるとhost.jsonは読み取り専用になるし。

続きを読む

Azure Active Directory B2C を使って WebとAPIを保護するTips

ちょっと必要に駆られたのでメモ書きです。Azure App Service(Web Apps/Functions)には通称EasyAuth(Authentication/Authorization)という便利な機能がありますが、今のところ簡単に設定できるのはAzure ADやTwitterなどのソーシャル系のみです。
このPostではEasyAuthでAzure ADではなくAzure AD B2Cを指定して、かつフロントエンドのWeb Appsと裏側のAPIとなるFunctionsをそれぞれ保護するためのTipsを纏めておきます。

続きを読む