如何使用Bicep按名称查找Azure现有roleDefinition ID?
问题原因
Azure内置角色的roleDefinition资源中,name属性对应的是角色的GUID ID,而你使用的Storage Blob Data Reader是角色的displayName(友好名称)。直接用友好名称作为existing资源的name属性时,Azure会将其当作资源名称处理,返回的路径自然包含该名称而非预期的GUID。
解决方案
可以通过listRoleDefinitions函数查询订阅下的所有角色定义,再根据友好名称过滤出目标角色,获取其GUID ID。示例代码如下:
param roleDefinitionName string = 'Storage Blob Data Reader' // 调用订阅级别的角色定义列表API var roleDefinitions = listRoleDefinitions(subscription().id, '2022-04-01').value // 过滤出匹配友好名称的角色 var targetRole = filter(roleDefinitions, rd => rd.displayName == roleDefinitionName)[0] // 输出角色的GUID ID output roleDefinitionId string = targetRole.name
说明
listRoleDefinitions(subscription().id, '2022-04-01')会获取当前订阅下所有角色定义的详细信息filter函数根据displayName匹配目标角色,取第一个匹配结果(内置角色的友好名称唯一)- 目标角色的
name属性就是你需要的GUID格式的角色定义ID
内容的提问来源于stack exchange,提问作者user20111722
相关产品推荐
相关产品推荐

