问题描述
我有一个适用于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没有发现>
- Azure ARM templates : DocumentDB primaryMasterKey as OUTPUT
- How to return Redis primaryKey via ARM template output?
- https://devkimchi.com/2018/01/05/list-of-access-keys-from-output-values-after-arm-template-deployment/
研究
- https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-outputs?tabs=azure-powershell
- https://docs.microsoft.com/en-us/azure/stream-analytics/powerbi-output-managed-identity
- https://www.terraform.io/docs/providers/azurerm/r/template_deployment.html
非常感谢您的帮助。
解决方法
在其他地方(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]"
}
}