Azure FunctionsでCosmos DBを出力バインドに設定して、データ操作する際に次のようなエラーが発生しました。
そのままエラーの内容を理解すると、ConnectionStringSettingという変数が見つからないから確認してくださいという意味だが、Azure Functionsで変数を定義するfunction.jsonファイルには、次のように確かに変数を定義していました。
原因としては、function.jsonファイルに直にCosmos DBへのconnection stringの値を書いた場合、その値は認識されないという仕様であることがわかりました。どこかに書かれているのでしょうが、仕様書を見つけることはできず、いろいろな方法を試している中で、Azure Functionsで変数を記述するファイルにconnection stringの値を書いて、それをfunction.jsonで参照するように書き換えた時に問題なく動いたため、今回の問題を解決する方法に気付きました。その手順は、次のようになります。
1.Azure Functionsで変数を記述するファイルにconnection stringを記述する
Azure Functionsではセキュリティキーなどプログラムに直書きすべきではない情報を記述し、関数からそれを参照できる機能があります。開発のためにローカルで関数を実行している場合は、local.settings.jsonというプロジェクトの直下にあるファイルに記述します。さらに、Azure上で実行している場合は、ポータル上で「設定 > 構成」とたどっていった「アプリケーションの設定」に変数を追加すると、参照できるようになります。
例えば、local.settings.jsonに次のように変数を追加します。
Azureポータル上では、次のページで変数を追加します。
そして、function.jsonを次のように書き換えます。
この結果、エラーが発生しなくなり、Cosmos DBに接続して操作できるようになります。