LoginSignup
0
3

More than 5 years have passed since last update.

functionsでinput/outpup bindingに変数を使って動的にする方法

Last updated at Posted at 2017-02-17

functionsのbinding(トリガー、入出力設定)は,function.jsonで行います。
例)Storage Tableからの入力

function.json
{
  "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のプロパティで変換できます。
上記例でいうと

function.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に使えます。

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環境変数のような使い方ですね。

  • ソース管理に機密性の高い値を書きたくない場合に管理対象から外す
  • 開発と本番で変わる値を設定することで、ソースコードはそのままで切り替えれる

といった利用になります。

補足:アプリケーション設定

アプリケーションの設定.png

補足:アプリケーション設定の変更

上記のように、ポータルから変更もできますが、プログラマブルにREST APIを使って設定値を変更する機能も提供されています。どんなRESTなのかは、実際にRESTの動作を確認できるこちらが参考になります。
https://resources.azure.com/

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3