如何绕过 Azure 数据工厂 ARM 模板参数限制?

Posted

技术标签:

【中文标题】如何绕过 Azure 数据工厂 ARM 模板参数限制?【英文标题】:How to get around Azure Data Factory ARM Template parameter limits? 【发布时间】:2019-07-12 08:21:42 【问题描述】:

我在 Azure 中创建了一个数据工厂,其中包含大约 10-15 个管道,它们都工作正常,我可以在我设置的测试数据工厂上毫无问题地调试和运行它们。我还通过 CI/CD 管道设置了 Azure DevOps 与数据工厂的集成。

最初,这条管道也运行良好,我能够使用生成的 ARM 模板在生产数据工厂实例上重新创建管道/触发器/等。

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

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

我尝试创建第二个 ARM 模板参数文件并删除我不想要的参数,因为我阅读了一些关于能够执行此操作以添加一些额外参数的文档,但这不起作用,因为它没有t 从 ARM 模板本身中删除参数。

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

我希望能够做的是定义我想要在管道中参数化的项目,就像我提到的那样,它参数化的 90% 我不需要参数化,但我可以'找不到任何方法来做到这一点(没有手动做)。

【问题讨论】:

【参考方案1】:

两种方式:

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

让我解释一下,假设您有 5 个输入参数,称为 param1、2、3、4、5。您可以像这样将它们“压缩”成一个参数:

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

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

至于不参数化的东西——你可以为它们定义默认值的变量(但如果你定义了默认值,它们仍然算作参数),所以变量允许你这样做。

【讨论】:

您错过了一个要点,尽管 arm 模板和参数文件是由数据工厂生成的,我不想在每次进行更改时都手动编辑这两个文件,并且文件被重新生成 我们也有同样的问题。我们有 30 多个 blob 事件触发器触发器(以及一些其他参数),它们有自己的一组参数,您无法按照建议的方式调整/压缩。 对于这两个用例,您无能为力。提高用户的声音。【参考方案2】:

使用MS Documentation: Use custom parameters with the Resource Manager template 中所述的自定义参数模板。

【讨论】:

嗨,您能帮我解决用于 devops 配置的 ARM 模板吗

以上是关于如何绕过 Azure 数据工厂 ARM 模板参数限制?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 ARM 模板重新部署 Azure 数据工厂

使用ARM模板在Azure中国大规模部署DCOS集群

使用ARM模板在Azure中国大规模部署DC/OS集群

如何向数据工厂ARM模板添加变量

azure arm模板嵌套数组作为参数

如何通过 PowerShell 或 ARM 模板在 Azure 数据资源管理器中创建表和摄取映射