functionsのbinding(トリガー、入出力設定)は,function.jsonで行います。
例)Storage Tableからの入力
{
"bindings": [
{
"type": "table",
"name": "MasterDataTable",
"tableName": "MasterData",
"take": 10000,
"connection": "storageaccount_STORAGE",
"direction": "in",
"filter": "applicationID eq 1"
}
]
}
MasterDataTableのMasterDataテーブルからapplicationID=1
のデータを取得しています。json形式なので一見固定ですが、ここに変数を設定できる方法が2つあります。
変数{}を使う
{}
を使うことで変数設定でき、triggerから取得したjsonのプロパティで変換できます。
上記例でいうと
{
"bindings": [
{
"type": "table",
"name": "MasterDataTable",
"tableName": "MasterData",
"take": 10000,
"connection": "storageaccount_STORAGE",
"direction": "in",
"filter": "applicationID eq {appID}"
}
]
}
1
を{appID}
に置き換えたことで、 triggerからの入力で置き換わる値 になります。例えばtriggerからの値が
{
"key1":"val1",
"appID":2
}
であれば、{appID}が2に置き換わって解釈されるので、applicationID=2
の値をMasterDataテーブルから入力として取得することができます。つまりfunctionsに入ってくるデータ(triggerの値)によって、動的に変えれるということですね。
アプリケーション設定%%を使う
設定したアプリケーション設定(該当のfunctions -> Function Appの設定 -> アプリケーション設定の構成 -> アプリの設定)をfunction.jsonに使えます。
{
"bindings": [
{
"type": "table",
"name": "MasterDataTable",
"tableName": "%MASTER_DATA%",
"take": 10000,
"connection": "storageaccount_STORAGE",
"direction": "in",
"filter": "applicationID eq {appID}"
}
]
}
tableName
を%MASTER_DATA%
に変えてます。これはデータ毎に値を変える、というより、設定値の外部化or環境変数のような使い方ですね。
- ソース管理に機密性の高い値を書きたくない場合に管理対象から外す
- 開発と本番で変わる値を設定することで、ソースコードはそのままで切り替えれる
といった利用になります。
補足:アプリケーション設定
補足:アプリケーション設定の変更
上記のように、ポータルから変更もできますが、プログラマブルにREST APIを使って設定値を変更する機能も提供されています。どんなRESTなのかは、実際にRESTの動作を確認できるこちらが参考になります。
https://resources.azure.com/