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

Get ObjectId of Azure Data Factory, within ARM template deployment output

我正在使用 ARM 模板部署 Azure Data Factory。我需要部署输出中数据工厂的 ObjectId/PricipalId/Managed Identity Object ID。这可以在数据工厂

Properties 选项卡下的 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) 不存在

我也试过这里文档中提到的东西:https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-template-functions-resource#reference,它给出了同样的错误

尝试使用 reference(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]"
}

注意这与 "Managed Identity Application ID" 属性

不同

为了以防万一,我在部署预配数据工厂的 ARM 模板时遇到了这个问题,然后为其创建了 Key Vault 访问策略。访问策略的 objectId 属性 的语法是正确的,即:

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

但是它仍然返回一个错误,指出身份 属性 对资源不可用。问题是我在部署数据工厂时没有提供身份。需要将以下 属性 添加到数据工厂部署中:

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

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