如何绕过 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 模板参数限制?的主要内容,如果未能解决你的问题,请参考以下文章