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

时间:2019-03-04 12:00:38

标签: azure arm-template azure-template

我正在使用ARM模板部署Azure Data Factory。在部署的输出中,我需要数据工厂的ObjectId/PricipalId/Managed Identity Object ID。可以在Azure门户的“数据工厂”的Properties选项卡下找到

我尝试了这些变化,但无济于事:

"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)不存在

我还尝试了以下文档中提到的内容:https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-template-functions-resource#reference,它给出了相同的错误

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

工作输出片段为:

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

请注意,此属性与“ Managed Identity Application ID”属性不同

答案 2 :(得分:0)

为防万一,在部署配置有Data Factory的ARM模板并为其创建Key Vault访问策略时,我就遇到了这个问题。语法对于访问策略的objectId属性是正确的,即:

"[reference(concat('Microsoft.DataFactory/factories/', parameters('dataFactoryName')), '2018-06-01', 'Full').identity.principalId]"

但是,它仍然返回错误,表明该属性不能用于该资源。问题是,在部署数据工厂时我没有配置身份。需要将以下属性添加到Data Factory部署中:

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

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