在ARM模板部署输出中获取Azure数据工厂的ObjectId

在ARM模板部署输出中获取Azure数据工厂的ObjectId,azure,arm-template,azure-template,Azure,Arm Template,Azure Template,我正在使用ARM模板部署一个Azure数据工厂。我需要部署输出中数据工厂的ObjectId/PricipalId/Managed Identity Object ID。这可以在Azure门户的数据工厂的属性选项卡下找到 我尝试过这些变化,但没有任何效果: "value": "[reference(concat('Microsoft.DataFactory/factories/', variables('name')), '2018-06-01').identity.principalId]" "

我正在使用ARM模板部署一个
Azure数据工厂
。我需要部署输出中数据工厂的
ObjectId/PricipalId/Managed Identity Object ID
。这可以在Azure门户的数据工厂的
属性
选项卡下找到

我尝试过这些变化,但没有任何效果:

"value": "[reference(concat('Microsoft.DataFactory/factories/', variables('name')), '2018-06-01').identity.principalId]"
"value": "[reference(concat('Microsoft.DataFactory/factories/', variables('name')), '2018-06-01').principalId]"
我在使用它们时看到的错误是属性(identity/principalId)不存在


我还尝试了文档中提到的内容:,它给出了相同的错误

尝试使用
引用(concat('Microsoft.DataFactory/factories/',variables('name')),'2018-06-01','Full')
作为输出值,并检查它,您应该看看您需要的是否存在。如果有-像通常一样引用它,如果没有-你就不走运了。

工作输出片段是:

 "dataFactoryPrincipalId": {
  "type": "string",
  "value": "[reference(concat('Microsoft.DataFactory/factories/', parameters('name')), '2018-06-01', 'Full').identity.principalId]"
}

注意,这与“托管标识应用程序ID”属性不同

为了防止对任何人有所帮助,我在部署一个ARM模板时遇到了这个问题,该模板配置了一个数据工厂,然后为其创建了一个密钥Vault访问策略。访问策略的objectId属性的语法正确,即:

"[reference(concat('Microsoft.DataFactory/factories/', parameters('dataFactoryName')), '2018-06-01', 'Full').identity.principalId]"
但是,它仍然返回一个错误,即标识属性不可用于资源。问题是我在部署数据工厂时没有设置标识。需要将以下属性添加到数据工厂部署中:

"identity": {
    "type": "SystemAssigned"
 }

然后该属性可用于引用函数。

我最初实际使用了
Full
参数,但Visual Studio提示
reference
函数只接受1或2个参数!这就是我删除它的原因。遗憾的是,模式是垃圾,不要相信它;)