Azure 数据工厂发布管道 - 找不到资源错误

Azure Data Factory Release Pipeline - Resource Not Found Error

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

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

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

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

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

正如我在上图中提到的,在模板开始应用于相应的资源组和部署时,此任务在第一步使用的是 api。更清楚的,请先参考这个REST API文档:Deployments - Create Or Update.

此任务的逻辑是从 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文件,使其参数对应实际的目标资源组即可。但如果使用第二种方法,则不要进行任何操作。只需将它们应用于任务即可。

ADF(publish)生成的ARM模板不能直接部署到新的RG。

解决方案

  1. 创建 RG(可选,假设它是 IAC(下面的代码))
  2. 运行 管道中的 powershell 脚本任务创建一个空的 ADF(不要使用空的 ARM)。由于它不是 ARM,因此您需要添加一个可选条件来检查它是否已经存在)

    Set-AzDataFactoryV2 -ResourceGroupName "RG" -Name "ADF" -Location "North Europe"

  3. 现在我们可以从发布文件夹(那个you had given)执行ARM模板

ADF 发布系统错误。

  1. ARM模板需要按如下方式生成 幂等(如果不存在,也应该重新创建)。但它不是 在这一刻。它期望 ADF 已经存在(奇怪地)。
  2. 当使用在另一个RG 中创建的空ARM 模板在该RG(新创建)中创建一个新的空ADF 时,失败。好吧,它创建了空的 ADF,但我们不能将 adf_publish(ADF 的默认发布文件夹)放在它上面,因为我们得到 'resource not found error'.
  3. 但是当我们手动创建 ADF 和 运行 adf_publish 模板时 然后就可以了!但当然,这不是我们想要的。
  4. 为什么 manual 和 powershell 工作(空 + 发布)而不是 ARM 模板?可能是 ARM Template 中提到的错误 location/region 但事实并非如此。(我真的很费解)