首页 > 解决方案 > Azure 数据工厂发布管道 - 找不到资源错误

问题描述

我正在测试一个非常简单的 ADF(只有一个活动)的构建/发布,构建、存储库、arm 模板导出似乎一切正常,直到我运行发布任务时,错误出现在最后一步,即:

 "error": {
    "code": "ResourceNotFound",
    "message": "The Resource 'Microsoft.DataFactory/factories/htTestDF' under resource group 'xxx-rg' was not found."
  }

我看了几个教程和微软网站,并尝试导出ARM模板几次,出现同样的错误。任何想法将不胜感激。

标签: azureazure-pipelines-release-pipeline

解决方案


感谢您的详细信息在评论中澄清。现在,您遇到的错误消息是使用不同的目标资源组作为此 ARM 模板部署到的。

为了更清楚地说明这一点,我根据您提供的详细信息重现了该问题。幸运的是,你遇到了同样的错误。现在,让我们关注它的日志,然后了解它导致Not Found错误的原因。(请设置debug=true

在此处输入图像描述

正如我在上图中提到的,它是该任务在第一步使用的 api,而模板开始应用于相应的资源组和部署。如需了解更多信息,请先参阅此 REST API 文档:部署 - 创建或更新

此任务的逻辑是从 ARM 模板文件编译参数,将它们打包并将其用作此PUT api 调用的请求体。查看它的 api 文档,你可以得到这个 API 调用,它resourceGroupNamedeploymentName需要首先指定。换句话说,如果您指定了另一个目标资源组,它将找不到可以应用此模板定义的正确目标位置。因为,您可以看到此 ARM 模板正准备将活动应用SetVariable到您的数据工厂HTDF3,并且定义的pipelines名称是HTPipe1. 但是这些都不应该存在于您的目标资源组中。因此它导致了这样的错误:

"error": {
    "code": "ResourceNotFound",
    "message": "The Resource 'Microsoft.DataFactory/factories/Merlin-1003' under resource group 'Merlin-ARM-deploy' was not found."
  }

在我的示例中,Merlin-ARM-deploy是我的目标资源组。

如果要将其部署到目标资源组中,则需要手动创建一个数据工厂,或者使用另一个 ARM 模板在目标资源组中创建一个新的相同工厂。如果选择前面的方法,只需修改template.json文件,让它的参数对应实际的目标资源组即可。但是如果使用第二种方法,不要操作任何东西。只需将它们与任务一起应用即可。


推荐阅读