You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建本地存储的ARM链接模板?能否从VS/命令行部署本地ARM模板?

本地ARM链接模板创建与部署问题解答

1. 如何创建存储在本地的ARM链接模板?

要创建本地存储的链接模板,核心是在主模板中使用相对路径来引用链接模板,而非绝对路径或云端URI。举个实际的例子:

假设你的主模板(main-template.json)和链接模板(linked-resources.json)在同一个项目目录下,主模板里的部署资源可以这样写:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2021-04-01",
      "name": "deployLinkedResources",
      "properties": {
        "mode": "Incremental",
        "templateLink": {
          "uri": "./linked-resources.json",
          "contentVersion": "1.0.0.0"
        }
      }
    }
  ]
}

这个相对路径的写法能让本地部署工具识别到链接模板的位置,但要注意:Azure Resource Manager(ARM)服务本身无法直接访问你的本地文件,必须依靠部署工具来处理本地文件的传递工作。

2. 能否从VS或命令行部署本地存储的所有模板?

关于Visual Studio的默认部署问题

你遇到的报错"The language expression property 'templateLink' doesn't exist...",本质原因是VS默认的ARM部署流程是直接把主模板提交给ARM服务,而ARM无法访问你本地的链接模板——它只能识别公开的云端URI(比如存储账户、GitHub仓库地址)。所以直接用VS自带的「部署到Azure」功能,确实没法直接部署本地的链接模板组合。

但这不代表VS完全没法实现本地流程,你可以通过两种方式绕开限制:

  • 在VS中添加PowerShell或Azure CLI脚本任务,用本地部署命令执行部署(下面会讲命令行的具体方法),替代VS自带的部署任务。
  • 把链接模板转换成内嵌模板:把链接模板的完整JSON内容直接复制到主模板的template属性中,替换原来的templateLink。示例如下:
{
  "properties": {
    "mode": "Incremental",
    "template": {
      // 直接粘贴链接模板的完整JSON内容
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "resources": [/* 链接模板的资源定义内容 */]
    }
  }
}

这样整个模板是单一文件,VS就能直接完成部署了。

命令行部署(无需上传云端)

用Azure CLI或Azure PowerShell可以直接部署本地的主模板和链接模板,工具会自动处理本地文件的临时上传:

Azure CLI 示例

az deployment group create \
  --resource-group your-resource-group-name \
  --template-file ./main-template.json \
  --parameters ./parameters.json

当你用--template-file指定本地主模板时,CLI会自动扫描所有通过相对路径引用的链接模板,把它们打包上传到一个临时的、带SAS授权的存储容器中,ARM服务可以安全访问这些临时文件,部署完成后临时容器会自动被清理。

Azure PowerShell 示例

New-AzResourceGroupDeployment `
  -ResourceGroupName your-resource-group-name `
  -TemplateFile ./main-template.json `
  -TemplateParameterFile ./parameters.json

PowerShell的逻辑和CLI一致,会自动处理本地链接模板的临时上传,不需要你手动把文件上传到云端存储。

总结一下:如果想纯本地流程完成部署,Azure CLI或PowerShell是最直接的方式;如果要在VS里完成,可以通过添加脚本任务或者转换为内嵌模板来实现。

内容的提问来源于stack exchange,提问作者Nicolae Daian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 06:30:26