Azure基本

Azure Functions上の環境変数を利用してみた

データベースの接続先設定等の環境変数値は、application.propertiesに直接記載することもできるが、App ServiceやAzure Functions上の「構成」メニュー内の「アプリケーション設定」で設定することもできる。

今回は、データベース接続先を、Azure Functions上の環境変数に設定し利用してみたので、そのサンプルプログラムを共有する。

前提条件

下記記事の実装が完了していること。

Azure App ServiceからAzure FunctionsにPost送信してみた(ソースコード編)今回も引き続き、Azure App ServiceからPost通信によってAzure Functionsを呼び出す処理の実装について述べ...

また、下記記事の「前提条件」に書かれた対応が完了していること。

Spring BootでSQL Serverに接続しMyBatisを利用してみた今回は、Spring Bootアプリケーションで接続するデータベースをSQL Serverに変更してみたので、そのサンプルプログラムを共...

結果として、ローカルのSQL Serverには以下のデータが入った状態となる。
前提条件_1

また、AzureのSQL Databaseには以下のデータが入った状態となる。
前提条件_2



作成したサンプルプログラム(Azure Functions側)の内容

作成したサンプルプログラム(Azure Functions側)の構成は以下の通り。なお、App Services側のソースコードは修正していない。
サンプルプログラムの構成
なお、上記の赤枠は、前提条件のプログラムから追加・変更したプログラムである。

<2021年4月13日 追記>
spring-cloud-function-dependenciesのバージョンは、2021年3月16日にリリースしたバージョン3.1.2を利用すると、1つのAzure Functions内に複数のファンクションを含む場合の不具合が解消できている。


その場合、Handlerクラスの継承するクラスを「AzureSpringBootRequestHandler」クラスから「FunctionInvoker」クラスに変更する。


spring-cloud-function-dependenciesの3.1.2を利用した実装サンプルは、以下の記事を参照のこと。

spring-cloud-function-dependenciesのバージョンを最新(3.1.2)にしてみたこれまでこのブログで取り上げてきたAzure Functionsのサンプルプログラムでは、spring-cloud-function-d...

application.propertiesの値は以下の通りで、データベースの接続先設定を環境変数から取得するように修正している。

例えば、${SQLDB_HOSTNAME:localhost}という記載は『環境変数「SQLDB_HOSTNAME」から取得した値を設定するが、取得できない場合は「localhost」という値にする』という意味となる。ただし、環境変数の設定方法は、後続の「Azure環境変数の設定」にて記載する。

その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/azure/tree/master/azure-functions-env-value/demoAzureFunc



Azure環境変数の設定

Azure環境変数の設定は、Azure Portal上で行える。その手順は、以下の通り。

1) Azure Functionsのオブジェクトを開き、「構成」メニューを押下する。
Azure環境変数設定_1

2) Azure上の環境変数を追加するため、「新しいアプリケーション設定」ボタンを押下する。
Azure環境変数設定_2

3) 環境変数の値として、ホスト名のキーと値を以下のように指定し、「OK」ボタンを押下する。
Azure環境変数設定_3

4) 先ほど追加した値のホスト名のキーと値を表示すると、以下のようになる。
Azure環境変数設定_4

5) 以下のように、他の項目についても環境変数値を設定し、「保存」ボタンを押下する。
Azure環境変数設定_5

6) 以下のように変更の保存の確認ダイアログが表示されるため、「続行」ボタンを押下する。
Azure環境変数設定_6

7) 更新が完了すると、以下のように、右上に更新完了メッセージが表示される。
Azure環境変数設定_7

8) 他のメニュー(概要など)を選択後、再度「構成」メニューを表示すると、以下のように、全項目が非表示の値となる。
Azure環境変数設定_8



サンプルプログラムの実行結果

サンプルプログラムの実行結果は、以下の通り。

1) ローカルで実行した場合は、以下のように、ローカルのSQL Server上のデータが表示されることが確認できる。
サンプルプログラムの実行結果_1_1

サンプルプログラムの実行結果_1_2

2) Azure上で実行した場合は、以下のように、Azure上のSQL Database上のデータが表示されることが確認できる。
サンプルプログラムの実行結果_2_1

サンプルプログラムの実行結果_2_2

要点まとめ

  • データベースの接続先設定等の環境変数値は、App ServiceやAzure Functions上の「構成」メニュー内の「アプリケーション設定」で設定できる。
  • application.propertiesに${SQLDB_HOSTNAME:localhost}と記載すると『環境変数「SQLDB_HOSTNAME」から取得した値を設定するが、取得できない場合は「localhost」という値にする』という意味になる。