Azure FunctionsをVisualStudioから発行


はじめに

 IoTHubに届いたセンサなどのデータをFunctionsで処理してSQLDBに書き込んでみました。
 同様の記事は探すと多々ありますので、詳細はそちらにおまかせというわけですが、ローカルで実行して成功した後ポータルに発行するわけですが、そこではまった点を書いておきます。

IoTHubからデータを受けるFunctions

 現在はIotHubTriggerのテンプレートもありますが、EventHubTriggerのテンプレでFunctionsをプロジェクトに追加しました。
 このとき、ConnectionStringSettingを求められますが、ここに直接EventHubの接続文字列を書いてはだめです。ここにはキー名称を入れておいて、そのキーに対する値(接続文字列)をlocal.settings.jsonに書きます。
 PathにはEventHub互換名を入れます。
 で、コードを書き、VS上でデバッグ実行。うまくいったらポータルに発行ということになります。

発行する

 発行時はウイザードで既存のポータルに発行しました。
 すでにAppServiceもFunctionsもポータルに作成済みのため設定自体はほぼ自動的に行われ発行に成功します。そこでポータルに行ってみると、右側にピンク背景のダイアログが表示され、

関数 (eventHubTrigger_function1) エラー: Microsoft.Azure.WebJobs.Host: Error indexing method 'function1'. Microsoft.Azure.WebJobs.EventHubs: Value cannot be null. Parameter name: receiverConnectionString.

と出てきて、動作しません。
 receiverConnectionStringの設定がされていないことはわかるのですが、しばらくその設定をどこで行うのかわかりませんでした。検索してもreceiverConnectionStringがヒットしないし・・・
 しばらく調べてみたところ、以下にその設定カ所を見つけました。

 発行時に出てくる画面に
   AzureAppServiceの設定を編集する
 とあります、ここをクリックすると”アプリケーションの設定”ダイアログが表示されます。
 ここにreceiverConnectionStringを設定するところがあります。
 自分の環境では、この欄のリモートの部分がカラでした。とりあえずローカルと同じ内容をコピペして発行してみたところ、エラー表示が出なくなり、ポータル上でも正常にFunctionが動作するようになりました。

まとめ

 英語がちゃんと読めるようになろう!