【发布时间】:2022-12-05 17:30:41
【问题描述】:
我想使用 ADO 管道中使用的服务连接的主体 ID 在 bicep 中创建一个 roleAssignment。
由于在 terraform 中 bicep 中没有 self-method,因此我尝试获取所使用的 ARM 服务连接的服务主体 ID。我找到的唯一解决方案是 ADO 管道的以下任务:
- task: AzureCLI@2
displayName: Retrieve principal ID of service connection
continueOnError: false
inputs:
azureSubscription: $(armServiceConnectionName)
scriptType: bash
scriptLocation: inlineScript
addSpnToEnvironment: true
inlineScript: echo "##vso[task.setvariable variable=servicePrincipalId]$servicePrincipalId"
这将返回服务连接的服务主体的 App ID。
是否可以从此应用程序 ID 获取主体 ID?
我在 here 记录的二头肌中尝试了以下操作:
armPrincipalId = split(extensionResourceId(armConnectionPrincipalAppId, 'Microsoft.ManagedIdentity/userAssignedIdentities', armServiceConnectionName), '/')[8]
但这会导致以下错误:DeploymentOutputEvaluationFailed: The template output 'armPrincipalId' is not valid: Unable to evaluate template language function 'extensionResourceId': the provided parent resource id '***' is not a valid uri
这显然是行不通的,因为它需要二头肌资源生成的 uri 形 ID。但是我只有一个UID。
【问题讨论】:
标签: azure-pipelines azure-resource-manager arm-template azure-bicep