我正在测试一个非常简单的ADF(仅一项活动)的构建/发布,构建,存储库,arm模板导出都正常,直到运行发布任务时,错误才显示在最后一步,即说:
"error": {
"code": "ResourceNotFound",
"message": "The Resource 'Microsoft.DataFactory/factories/htTestDF' under resource group 'xxx-rg' was not found."
}
我看了几个教程和Microsoft网站,并尝试多次导出ARM模板,但发生相同的错误。任何想法将不胜感激。
答案 0 :(得分:1)
谢谢您的详细说明。现在,遇到此错误消息是由于在此ARM模板部署到另一个目标资源组时引起的。
为更清楚地说明这一点,我将根据您提供的详细信息重现该问题。幸运的是,您遇到了同样的错误。现在,让我们集中讨论其日志,然后了解导致Not Found
错误的原因。(请设置 debug=true
)
正如我在上面的图片中提到的,第一步是在模板开始应用到相应的资源组和部署中时,此任务首先使用的api。要清除更多内容,请首先参考此REST API文档:Deployments - Create Or Update。
此任务的逻辑是从ARM模板文件编译参数,打包参数并将其用作此 PUT api调用的请求正文。请参阅其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."
}
在我的示例中,Merlin-ARM-deploy
是我的目标资源组。
如果要将其部署到目标资源组中,则需要手动创建一个数据工厂,或使用另一个ARM模板在目标资源组中创建一个新的相同工厂。如果选择以前的方法,则只需修改template.json文件,使其参数与实际的目标资源组相对应。但是,如果使用第二种方法,则什么也不做。只需将它们与任务一起应用即可。
答案 1 :(得分:0)
由ADF(publish)生成的ARM模板不能直接部署到新的RG。
解决方案
在管道中运行Powershell脚本任务以创建一个空的ADF(而不是使用空的ARM)。由于它不是ARM,因此您需要放置一个可选条件来检查它是否已经存在)
Set-AzDataFactoryV2 -ResourceGroupName“ RG”-名称“ ADF”-位置“ North Europe”
现在我们可以从发布文件夹(一个you had given)执行ARM模板
ADF发布系统中的错误。