Azure Node SDKを使って、Azure Data Factoryのパイプラインにパラメータを指定して実行しようとしてハマことのメモ書きです。
Data Factoryのパイプライン実行は、「DataFactoryManagemantClinet」オブジェクトの「pipelines」メンバーの「createRun」メソッドで行います。
ただ、リファレンスを見ても、「createRun」のパラメータは「options?: Object」とし書かれていません。
「options」にパラメータをJSONでそのまま渡せばいいのかなと思ってやってみたけどエラー。横着してそのまま粘ってみたけど、それ以上情報が無いのでソースを見るはめに。
結果、解決方法は全然違って下記でした。
解決方法
createRun()
の4番目の引数「options」の「parameters」要素にパラメータをJSONで渡す- 「parameters」の各パラメータ値はJavaScriptのオブジェクトで渡す
具体的なパラメータの渡し方は下記のような感じになります。
// パイプラインパラメータ const params = { val_str: new String('パラメータ値'), // 'パラメータ値' だけだとダメ val_number: new Number(123) // 123 だけだとダメ }; const result = await client.pipelines.createRun( RESOURCE_GROUP_NAME, DATA_FACTORY_NAME, PIPELINE_NAME, { parameters: params } );
「parameters」の各パラメータ値はJavaScriptのオブジェクトで渡す
とは、パラメータの値は文字列なら「パラメータ値」、数値なら「123」といった直値ではダメで、文字列ならStringオブジェクト、数値ならNumberオブジェクトとしてセットする必要があります。
教訓
マニュアルの整備が追いついてないんですかね。
Azureの更新も頻繁なので、今後もマニュアルが整備されることはなさそうな気もします。
SDKと言っても、やっていることはAPIのラッパーでそれほど複雑な事はしていないので、リファレンスでハマったら、さっさとソースを参照するようにしようと思いました。