Azure APIM的条件ARM模板部署:仅创建,不更新

Azure APIM的条件ARM模板部署:仅创建,不更新,azure,azure-resource-manager,azure-api-management,Azure,Azure Resource Manager,Azure Api Management,我对ARM模板和Azure API管理有特定的要求,所以这个问题不同于其他条件ARM部署问题 一些背景: 我的APIM实例是使用ARM模板部署的,但是需要设置自定义域,但不能成为其中的一部分。这是因为我的客户将他们的证书存储在不同的系统中。 这意味着在ARM模板创建APIM实例之后,将为该实例单独(手动)设置自定义域。 ARM模板还应用全局策略并创建产品。我使用链接模板设置 当我们想要更新APIM实例上的某些内容时,如扩展全局策略或添加产品,就会出现问题。然后ARM模板也会更新实例,但应该保持自

我对ARM模板和Azure API管理有特定的要求,所以这个问题不同于其他条件ARM部署问题

一些背景: 我的APIM实例是使用ARM模板部署的,但是需要设置自定义域,但不能成为其中的一部分。这是因为我的客户将他们的证书存储在不同的系统中。 这意味着在ARM模板创建APIM实例之后,将为该实例单独(手动)设置自定义域。 ARM模板还应用全局策略并创建产品。我使用链接模板设置

当我们想要更新APIM实例上的某些内容时,如扩展全局策略或添加产品,就会出现问题。然后ARM模板也会更新实例,但应该保持自定义域部分不变。根据文档,使用“增量”模式会使ARM模板中的资源保持不变。因此,我想通过省略ARM模板中的“hostnameConfigurations”部分来解决这个问题。然而,ARM模板似乎没有忽略它,而是将其解释为空,并有效地从APIM实例中删除自定义域

这似乎不是正常的行为,但我不得不接受它。要解决这个问题,我有两个选择。 其中一个是从通用APIM ARM模板中提取全局策略和产品,这样我可以在更新时跳过APIM实例部分。这意味着我必须在创建资源时运行多个单独的ARM模板

我想要的解决方案是有条件地将创建APIM实例的ARM模板部署到仅创建APIM实例。当资源已存在时,我想跳过此链接模板。 我想我可以通过获取对APIM实例的引用来实现这一点,但根据文档“引用函数从运行时状态派生其值,因此不能在变量部分使用。”


问题:是否可以根据资源是否已存在的事实有条件地部署链接的ARM模板?

答案是否定的。您不能这样做。除非你在调查不同的黑客方式。您可以调用Azure函数来确定资源是否存在。您可以使用部署的输出来确定资源是否存在。但直截了当地说,没有什么能帮助你。只有不同的黑客