重要
2026 年 7 月 11 日,蓝图(预览版)将弃用。 将现有蓝图定义和分配迁移到 模板规格。 蓝图工件将转换为用于定义部署堆栈的ARM JSON模板或Bicep文件。 若要了解如何将工件创建为 ARM 资源,请参阅:
Azure Blueprints使用 排序顺序来确定在处理蓝图定义的分配时资源的创建顺序。 本文介绍以下概念:
- 使用的默认排序顺序
- 如何自定义订单
- 如何处理自定义订单
JSON 示例中有一些变量需要替换为自己的值:
-
{YourMG}- 替换为管理组的名称
默认排序顺序
如果蓝图定义中不包含部署项目的指导,或者指导为 null,则使用以下顺序:
- 按工件名称排序的订阅级 角色分配 工件
- 按工件名称排序的订阅级别 策略分配 工件
- 订阅级别Azure Resource Manager模板(ARM 模板)项目按项目名称排序
- 按 占位符名称排序的资源组项目(包括子项目)
在每个 资源组 项目中,以下顺序用于在该资源组中创建的项目:
- 按工件名称排序的资源组子角色分配工件
- 按工件名称排序的资源组子 策略分配 工件
- 资源组子Azure Resource Manager模板(ARM 模板)项目按项目名称排序
注释
使用 artifacts() 创建对所引用项目的隐式依赖项。
自定义排序顺序
撰写大型蓝图定义时,可能需要按特定顺序创建资源。 此方案的最常见使用模式是蓝图定义包含多个 ARM 模板时。 Azure Blueprints允许定义排序顺序来处理此模式。
排序是通过在 JSON 中定义 dependsOn 属性来实现的。 资源组和项目对象的蓝图定义支持此属性。
dependsOn 是工件名称的字符串数组,特定工件需要在创建之前创建这些名称。
注释
创建蓝图对象时,每个项目资源都会从文件名(如果使用 PowerShell)或 URL 终结点(如果使用 REST API)获取其名称。 项目中的 resourceGroup 引用必须与蓝图定义中定义的引用匹配。
示例 - 有序资源组
此示例蓝图定义包含两个资源组,一个通过设置dependsOn值来定义自定义排序顺序的资源组,以及一个标准资源组。 在这种情况下,将在ordered-rg资源组之前处理名为assignPolicyTags的工件。
将按默认排序顺序处理 standard-rg。
{
"properties": {
"description": "Example blueprint with custom sequencing order",
"resourceGroups": {
"ordered-rg": {
"dependsOn": [
"assignPolicyTags"
],
"metadata": {
"description": "Resource Group that waits for 'assignPolicyTags' creation"
}
},
"standard-rg": {
"metadata": {
"description": "Resource Group that follows the standard sequence ordering"
}
}
},
"targetScope": "subscription"
},
"type": "Microsoft.Blueprint/blueprints"
}
示例 - 具有自定义顺序的工件
此示例是依赖于 ARM 模板的策略项目。 默认情况下,将在 ARM 模板之前创建策略项目。 此排序允许策略项目等待创建 ARM 模板。
{
"properties": {
"displayName": "Assigns an identifying tag",
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/2a0e14a6-b0a6-4fab-991a-187a4f81c498",
"resourceGroup": "standard-rg",
"dependsOn": [
"customTemplate"
]
},
"kind": "policyAssignment",
"type": "Microsoft.Blueprint/artifacts"
}
示例 - 订阅级别模板项目,具体取决于资源组
此示例适用于在订阅级别部署的 ARM 模板,该模板依赖于资源组。 默认排序下,订阅级别的工件会在任何资源组以及这些资源组中的子工件之前创建。 资源组在蓝图定义中定义,如下所示:
"resourceGroups": {
"wait-for-me": {
"metadata": {
"description": "Resource Group that is deployed prior to the subscription level template artifact"
}
}
}
订阅级别模板项目,具体取决于 等待我的 资源组,如下所示:
{
"properties": {
"template": {
...
},
"parameters": {
...
},
"dependsOn": ["wait-for-me"],
"displayName": "SubLevelTemplate",
"description": ""
},
"kind": "template",
"type": "Microsoft.Blueprint/blueprints/artifacts"
}
处理自定义序列
在创建过程中,拓扑排序用于创建蓝图项目的依赖项图。 检查可确保支持资源组和制品之间的每个级别的依赖关系。
如果声明项目依赖项不会更改默认顺序,则不会进行更改。
例如,依赖于订阅级别策略的资源组。 另一个示例是资源组“standard-rg”中“子策略分配”,其依赖于资源组“standard-rg”中的“子角色分配”。 在这两种情况下,dependsOn 不会改变默认排序顺序,也不会做任何变动。