如何解决Azure数据工厂ARM模板参数限制?

时间:2019-02-18 21:54:12

标签: azure azure-data-factory arm-template azure-template

我在Azure中创建了一个数据工厂,其中有大约10-15个管道,它们都可以正常工作,并且我可以调试并运行它们,而不会在已设置的测试数据工厂上产生问题。我还使用CI / CD管道设置了与数据工厂的Azure DevOps集成。

最初,该管道也运行良好,并且我能够使用生成的ARM模板在生产数据工厂实例上重新创建Pipelines / Triggers / etc。

现在,我向数据工厂添加了一些内容,当它生成ARM模板时,它现在创建一个带有293参数的模板,该模板在通过CI / CD管道运行时会失败,因为仅允许256个参数带有ARM模板。

它放在参数文件中的许多项目都不需要参数化,例如文件名和文件路径。我真正想要参数化的是各种连接信息。

我试图创建第二个ARM模板参数文件并删除不需要的参数,因为我阅读了一些文档,该文档可以添加一些附加参数,但这是行不通的,因为它没有t从ARM模板本身中删除参数。

所以我的问题是,有办法解决吗?我能想到的事情是创建多个数据工厂,并且每个工厂只有几个管道。我不太喜欢这个主意,因为随着时间的流逝,它会变得非常庞大且繁琐。我可以从参数文件中手动删除模板,也可以从模板本身中删除模板,但是我真的不喜欢这种解决方案,因为它是手动的,而且很容易出错。

我理想地希望做的是定义我想在管道中参数化的项目,就像我提到的90%的参数化参数我不需要参数化,但是我可以找不到任何方法(缺少手动操作)。

2 个答案:

答案 0 :(得分:1)

2种方式:

  1. 显而易见-删除不需要的参数
  2. 不那么明显-使用对象而不是字符串。

让我解释一下,假设您有5个输入参数,分别称为param1,2,3,4,5。您可以将它们“压缩”为单个参数,如下所示:

"param": {
    "type": object,
    "defaultValue": {
        "param1": "something",
        xxx
        "param5": "otherthing"
    }
}

看到您有290个参数,我可能会走对象路线,因为那样您就可以对它们进行逻辑分组。

关于不对事物进行参数化-您可以为它们定义默认值变量(但是,如果您定义默认值,它们仍会作为参数使用),因此变量允许您这样做。

答案 1 :(得分:0)