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

Azure数据工厂发布管道-未找到资源错误,azure,azure-pipelines-release-pipeline,Azure,Azure Pipelines Release Pipeline,我正在测试一个非常简单的ADF(仅一个活动)的构建/发布,构建、存储库、arm模板导出似乎都正常,直到我运行发布任务时,错误显示在最后一步,即: "error": { "code": "ResourceNotFound", "message": "The Resource 'Microsoft.DataFactory/factories/htTestDF' under resource group 'xxx-rg' was not found." } 我看了几个教程和mi

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

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

我看了几个教程和microsoft网站,并多次尝试导出ARM模板,同样的错误也发生了。任何想法都将不胜感激。

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

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

正如我在上面的pic中提到的,当模板开始应用到相应的资源组和部署中时,该任务在第一步使用的是api。如需了解更多信息,请首先参考此REST API文档:

此任务的逻辑是从ARM模板文件编译参数,打包并将其用作此PUTapi调用的请求主体。查看它的api文档,您可以得到,对于这个api调用,需要首先指定它的
resourceGroupName
deploymentName
。换句话说,如果指定了另一个目标资源组,它将找不到可以应用此模板定义的正确目标位置。因为,您可以看到此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."
  }
在我的示例中,
merlinarmdeploy
是我的目标资源组


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

由ADF(发布)生成的ARM模板不能直接部署到新的RG

解决方案

  • 创建RG(可选,假设为IAC(以下为代码))
  • 在管道中运行powershell脚本任务以创建空ADF(不要改用空ARM)。由于它不是ARM,您需要设置一个可选条件来检查它是否已经存在)

    Set-AzDataFactoryV2-资源组名称“RG”-名称“ADF”-位置“北欧”

  • 现在我们可以从publish文件夹(一个)执行ARM模板

  • ADF发布系统中出现错误。

  • ARM模板需要以如下方式生成: 幂等元(如果不存在,也应重新创建)。但事实并非如此 现在。它期望ADF已经出现(奇怪的是)
  • 当在另一个RG中创建的空ARM模板用于在此RG(新创建的)中创建新的空ADF时,它将失败。好的,它会创建空的ADF,但是我们不能将ADF_publish(ADF的默认发布文件夹)放在它上面,因为我们会得到“resource not found error”
  • 但是当我们手动创建ADF并运行ADF_发布模板时 那就行了!当然,这不是我们想要的
  • 为什么手动和powershell可以工作(清空+发布),但不能使用ARM模板?可能是ARM模板中提到了错误的位置/区域,但事实并非如此。(我真的很困惑)

  • 请共享模板这意味着您正在使用的工厂现在不存在于资源组“xxx rg”下。在发布此模板之前,您是否检查过它?您最好共享您的模板和有关ADF的屏幕截图。您好,我将很快上传模板。也许我不理解这个概念。无论是为Data Factory导出/导入模板还是测试Azure DevOps发布管道,我都会遇到相同的错误。我在源环境中有一个数据工厂,它与tartget env具有不同的资源组。当我导入到目标环境中时,我将资源组parm替换为目标资源组。它失败了。我的模拟有误吗?这是我的arm_template.json:在目标环境端导入模板时,我使用了“部署自定义模板”,并加载了这个模板文件。向导允许我指定目标环境资源组。之后,当我接受向导时,处理将出错:
    {“error”:{“code”:“ResourceNotFound”,“message”:“未找到资源组“slalom_rg”下的资源“Microsoft.DataFactory/Factorys/HTDF3”。}
    感谢您的上述说明。这解释得非常清楚。两条注释:1)如何设置“debug=true”如果我想调试?2)我很惊讶似乎没有人会有这个问题?当然,在迁移到更高的环境时,这必须是相当标准的(数据工厂还不存在)-我看了好几个youtube视频和博客,没有人提到过这一点。现在我必须将所有这些打包以在Azure DevOps CICD管道中工作,我想知道您是否有一个解决上述问题的示例发布管道?再次感谢,如果我的CICDworks@HT1(1)请转到变量选项卡,然后添加变量“System.debug”它的值为“true”。这可以获得管道的详细日志。(2)正常情况下,最常用于部署ARM模板的是数据库、web应用等(不是开玩笑,这是我第一次尝试部署ADF模板)。对于数据库或web应用,它没有此限制。因为这些模板非常通用。看到了吗?什么