くうと徒然なるままに

モバイルアプリを作りながらバックエンドも作っています。

Azure Functions の V2 を使おうとしたら The binding type(s) 'queue' are not registered. Please ensure the type is correct and the binding extension is installed. ってエラーがでた

最近何かと Azure Functions で手軽に作ることが多いです。

今回は新しく Azure Functions を使って作ってこうと思ってたらタイトル通りなエラーが出ました。

やろうとしてたこと

Azure Storage Queue とバインディングして色々する感じのやつです。
よくある感じの

The binding type(s) 'queue' are not registered. Please ensure the type is correct and the binding extension is installed.

面倒だったので deploy は Github にプッシュしたコードを自動でデプロイするように最近プレビューになっているデプロイセンターより利用してました。

エラーが出る原因(というか出ないと思って進めた原因)

Azure Functions V2 から Storage Extensions は すでに入っているのではなく使うたびにinstall する形になったようです。

Azure Functions Runtime 2.0.12050-alpha breaking changes notice · Issue #129 · Azure/app-service-announcements · GitHub

ダメだった対処法

無理やりインストールしてみる

dotnet コマンドが入ってそうな雰囲気がしたので nodejs で無理やり パッケージを無理やりインストールしてみました。

具体的には以下のような手順で入れてみました。

そもそも func コマンドが入っていなかったのでnpm で入れて、それから func コマンドを利用して Extension を入れるって感じのあれです。

npm install -g azure-function-core-tools
func extensions install --package Microsoft.Azure.WebJobs.Extensions.Storage --version 3.0.0-beta8
dotnet restore

動きませんでした。

解決した対処法

まず、色々環境を汚してしまったので再度 Azure Functions を作り直しました。

その後、 Storage を利用するテンプレート関数を新規作成しようとしました。
するとStorage の Extension をインストールしますか?的なポップアップが出るのでインストールしました。

ここが悪い

GUIで 任意の Extension を 任意のタイミングでできない...
とはいえ、最近の変更に沿ったUI を作り続けるのは大変だと思うので中の人頑張って... 感が。

まとめ

Azure Functions の Storage Extension を明示的にインストールする必要がある Portal からゴリゴリしてもうまく動かないかも... Github から deploy するようにしてると罠にハマるかも...