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 调用,它的 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文件,使其参数对应实际的目标资源组即可。但如果使用第二种方法,则不要进行任何操作。只需将它们应用于任务即可。
ADF(publish)生成的ARM模板不能直接部署到新的RG。
解决方案
- 创建 RG(可选,假设它是 IAC(下面的代码))
运行 管道中的 powershell 脚本任务创建一个空的 ADF(不要使用空的 ARM)。由于它不是 ARM,因此您需要添加一个可选条件来检查它是否已经存在)
Set-AzDataFactoryV2 -ResourceGroupName "RG" -Name "ADF" -Location "North Europe"
现在我们可以从发布文件夹(那个you had given)执行ARM模板
ADF 发布系统错误。
- ARM模板需要按如下方式生成
幂等(如果不存在,也应该重新创建)。但它不是
在这一刻。它期望 ADF 已经存在(奇怪地)。
- 当使用在另一个RG 中创建的空ARM 模板在该RG(新创建)中创建一个新的空ADF 时,失败。好吧,它创建了空的 ADF,但我们不能将 adf_publish(ADF 的默认发布文件夹)放在它上面,因为我们得到 'resource not found error'.
- 但是当我们手动创建 ADF 和 运行 adf_publish 模板时
然后就可以了!但当然,这不是我们想要的。
- 为什么 manual 和 powershell 工作(空 + 发布)而不是 ARM 模板?可能是 ARM Template 中提到的错误 location/region 但事实并非如此。(我真的很费解)
我正在测试一个非常简单的 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 调用,它的 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文件,使其参数对应实际的目标资源组即可。但如果使用第二种方法,则不要进行任何操作。只需将它们应用于任务即可。
ADF(publish)生成的ARM模板不能直接部署到新的RG。
解决方案
- 创建 RG(可选,假设它是 IAC(下面的代码))
运行 管道中的 powershell 脚本任务创建一个空的 ADF(不要使用空的 ARM)。由于它不是 ARM,因此您需要添加一个可选条件来检查它是否已经存在)
Set-AzDataFactoryV2 -ResourceGroupName "RG" -Name "ADF" -Location "North Europe"
现在我们可以从发布文件夹(那个you had given)执行ARM模板
ADF 发布系统错误。
- ARM模板需要按如下方式生成 幂等(如果不存在,也应该重新创建)。但它不是 在这一刻。它期望 ADF 已经存在(奇怪地)。
- 当使用在另一个RG 中创建的空ARM 模板在该RG(新创建)中创建一个新的空ADF 时,失败。好吧,它创建了空的 ADF,但我们不能将 adf_publish(ADF 的默认发布文件夹)放在它上面,因为我们得到 'resource not found error'.
- 但是当我们手动创建 ADF 和 运行 adf_publish 模板时 然后就可以了!但当然,这不是我们想要的。
- 为什么 manual 和 powershell 工作(空 + 发布)而不是 ARM 模板?可能是 ARM Template 中提到的错误 location/region 但事实并非如此。(我真的很费解)