ARM 模板规范错误“无法检索模板工件”

问题描述 投票:0回答:1

当我尝试使用 Azure CLI 中的模板规范进行部署时,出现错误。 错误消息是

Unable to retrieve the template artifact

模板规格名称为

test
,主模板和链接模板保存在本地PC上。

我将分享主模板和每个模板的路径(主模板和链接模板)。

main_template.json

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "env":{
            "type": "string"
        },
        "location": {
            "type": "string",
            "defaultValue": "[resourceGroup().location]"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2020-06-01",
            "name": "storage",
            "properties": {
              "mode": "Incremental",
                "templateLink": {
                  "relativePath": "linked/linkedtemplate_storage.json"
                },
                "parameters": {
                  "env": {
                      "value": "[parameters('env')]"
                  },
                  "location": {
                      "value": "[parameters('location')]"
                  }
                }
            }
        },
        {
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2020-06-01",
            "name": "monitoring",
            "properties": {
              "mode": "Incremental",
                "templateLink": {
                  "relativePath": "linked/linkedtemplate_monitoring.json"
                },
                "parameters": {
                  "env": {
                      "value": "[parameters('env')]"
                  },
                  "location": {
                      "value": "[parameters('location')]"
                  }
                }
            }
        },
        {
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2020-06-01",
            "name": "notification",
            "properties": {
              "mode": "Incremental",
                "templateLink": {
                  "relativePath": "linked/linkedtemplate_notification.json"
                },
                "parameters": {
                  "env": {
                      "value": "[parameters('env')]"
                  }
                }
            }
        }
    ]
}

路径

main
:“C:\Users emplate\maintemplate.json”

linked(Storage)
:“C:\Users emplate\linked\linkedtemplate_storage.json”

linked(Monitoring)
:“C:\Users emplate\linked\linkedtemplate_monitoring.json”

`linked(通知): "C:\Users emplate\linked\linkedtemplate_notification.json"

这是部署命令。

$id = $(az ts show --name test --resource-group rg-nonprod-japan-rubiconclientbridge01-na-idbridge-n01-devops --version "1.0" --query "id")

az deployment group create \
  --resource-group rg-nonprod-japan-rubiconclientbridge01-na-idbridge-n01-infrastructure \
  --template-spec $id \
  --parameters "@.\maintemplate.parameters-dev.json" \

我认为主模板中的链接模板路径是正确的,所以我不知道为什么会发生该错误。

有人知道我该怎么办吗?

任何答案都会有所帮助,如果您想了解更多信息,请随时询问我。

谢谢你。

azure azure-resource-manager
1个回答
0
投票

使用给定命令执行部署时,我也收到了相同的错误。当无法从 Azure

"Unable to retrieve the template artifact"
命令正确访问链接的模板时,可能会出现
az ts show
问题。 可能有几个原因导致其无法按预期工作。

首先,检索模板规范 ID 工作正常,但当它传递到

az deployment  group create
命令时,请确保模板规范 ID 读取正确。

我尝试直接传递它,如下所示,而不是从

az ts show
检索它以查明问题是否与任一命令有关。它按预期工作,没有任何冲突。

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "location": {
            "type": "string",
            "defaultValue": "[resourceGroup().location]"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2020-06-01",
            "name": "storage",
            "properties": {
              "mode": "Incremental",
                "templateLink": {
                  "relativePath": "storage.json"
                },
                "parameters": {
                  "location": {
                      "value": "[parameters('location')]"
                  }
                }
            }
        },
        {
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2020-06-01",
            "name": "monitoring",
            "properties": {
              "mode": "Incremental",
                "templateLink": {
                  "relativePath": "monitor.json"
                },
                "parameters": {
                  "location": {
                      "value": "[parameters('location')]"
                  }
                }
            }
        }
    ]
}
az deployment group create --resource-group ipresources --template-spec "/subscriptions/xxxx/res
ourceGroups/ipresources/providers/Microsoft.Resources/templateSpecs/secondtemp/versions/1.0" --template-file "linkedtemp.json"

enter image description here

此外,问题可能出在

relative path
块的
templateLink
字段上。另一种方法是分别使用存储帐户的模板规范的 ID 和监控 Json 模板,以避免此处的混淆。

首先使用

az ts create
为存储帐户创建 ts 规范,并对监控模板执行相同的操作。现在,在模板链接
ID
字段下传递每个单独模板规范的 ID,如下所示。

"templateLink": {
   "id": "/subscriptions/xxxx/resourceGroups/ipresources/providers/Microsoft.Resources/templateSpecs/secondtemp/versions/1.0"
  }

根据此MSDoc,您还可以在上传文件内容后通过提供 GitHub Uri 或 blob Uri 来在

uri
下的
templateLink
字段进行部署(
Json
)。请参阅给定的 MS 文档以了解清晰的程序。

"templateLink": {
   "uri": "blob uri or Git Uri"
  }
© www.soinside.com 2019 - 2024. All rights reserved.