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

问题描述 投票:0回答:1

我在Azure中创建了一个数据工厂,其中包含大约10-15个管道,它们都运行良好,我可以在我设置的测试数据工厂上调试和运行它们而不会出现问题。我还使用CI / CD管道将Azure DevOps与Data Factory集成。

最初这个管道工作正常,我能够使用生成的ARM模板在生产数据工厂实例上重新创建管道/触发器/等。

现在我已经向Data Factory添加了一些内容,当它生成ARM模板时,它现在创建一个具有293个参数的模板,当它通过CI / CD管道运行时失败,因为ARM只允许256个参数模板。

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

我试图创建第二个ARM模板参数文件并删除我不想要的参数,因为我读了一些关于能够这样做添加一些额外参数的文档,但这不起作用,因为它不会删除ARM模板本身的参数。

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

理想情况下,我想要做的是定义我想要在管道中参数化的项目,就像我提到的参数化的90%我不需要参数化,但我找不到任何方式这样做(没有手动做)。

azure azure-data-factory arm-template azure-template
1个回答
1
投票

2种方式:

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

让我解释一下,假设你有5个输入参数叫做param1,2,3,4,5。你可以将它们“压缩”成一个参数,如下所示:

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

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

至于没有参数化的东西 - 你可以为它们定义默认值的变量(但是如果你定义它们仍然计算参数的默认值),那么变量允许你这样做。

© www.soinside.com 2019 - 2024. All rights reserved.