Azure ARM模板-流分析Identity.principalId作为输出

问题描述

我有一个适用于Stream Analytics作业的ARM模板,该模板创建了它自己的“托管身份”,可以使用AZ CLI进行查询,例如:

'az stream-analytics job show -g <resource_group> -n <stream_analytics_job_name> -o json --query 'identity.principalId'

(通过terraform'azurerm_template_deployment'模块进行部署。

添加一个ARM模板输出,以使用'listkeys'返回此密钥:

    "outputs": {
        "principalId": {
        "type": "string","value": "[listkeys(resourceId('Microsoft.StreamAnalytics/streamingjobs',parameters('StreamAnalyticsJobName')),parameters('ASAApiVersion')).identity.principalId]"
        }
    }
}

现在,如资源组部署列表中所示,ARM部署失败:

{
  "code": "DeploymentFailed","message": "At least one resource deployment operation Failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.","details": [
    {
      "code": "NotFound","message": "{\r\n  \"code\": \"NotFound\",\r\n  \"message\": \"The webpage cannot be found.\",\r\n  \"details\": {\r\n    \"code\": \"404\",\r\n    \"message\": \"The webpage cannot be found.\",\r\n    \"correlationId\": \"<redacted>\",\r\n    \"requestId\": \"<redacted>\"\r\n  }\r\n}"
    }
  ]
}

在资源组“活动日志”的“写Steam Analytics作业”下,存在对列表键的失败操作-没有一个提供任何进一步的线索。

通过https://resources.azure.com为此流分析作业找到了

'identity.principalId':

...etc...
  "identity": {
    "principalId": "<redacted>","tenantId": "<redacted>","type": "SystemAssigned"
  },

还尝试了以下具有相同结果的ARM模板输出

    "outputs": {
        "principalId": {
        "type": "string",parameters('ASAApiVersion')).principalId]"
        }
    }

发现了类似的问题,但Stream Analytics没有发现>

研究

非常感谢您的帮助。

解决方法

在其他地方(How to get Principal Id in app service using Arm template?)的答案中都出现了问题,因为我试图获取主体ID而不是密钥(我很不好)。

使用以下ARM模板输出有效:

    "outputs": {
        "principalId": {
        "type": "string","value": "[reference(resourceId('Microsoft.StreamAnalytics/streamingjobs',parameters('StreamAnalyticsJobName')),parameters('ASAApiVersion'),'Full').identity.principalId]"
        }
    }