新しいことにはウェルカム

[技術] [電子工作] [ガジェット] [ゲーム] のメモ書き

Azure Data Factory のパイプラインにAzure Node SDKからパラメータを渡す方法




Azure Node SDKを使って、Azure Data Factoryのパイプラインにパラメータを指定して実行しようとしてハマことのメモ書きです。

Data Factoryのパイプライン実行は、「DataFactoryManagemantClinet」オブジェクトの「pipelines」メンバーの「createRun」メソッドで行います。

ただ、リファレンスを見ても、「createRun」のパラメータは「options?: Object」とし書かれていません。

Azure Data Facotry Node SDK createRun parameter

https://docs.microsoft.com/ja-jp/javascript/api/azure-arm-datafactory/pipelines?view=azure-node-latest#createrun-string--string--string--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のラッパーでそれほど複雑な事はしていないので、リファレンスでハマったら、さっさとソースを参照するようにしようと思いました。