I have a arm template which adds role assignments. I am using resourceid function to get resource Id. Multiple resource names can be passed to resourceid function depending on resource type nesting. I am using parameters as resource type and resource name.How can I pass multiple resource names depending on resource type.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"roleAssignment" : {
"type" : "array",
"metadata" : {
"description" : "Enter resource assignment details for target resource permissions"
},
"defaultValue" :[]
}
},
"variables": {...},
"resources": [
{
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2020-04-01-preview",
"name": "[name]",
"scope": "[resourceId(subscription().subscriptionId,parameters('roleAssignment').resourceGroup,parameters('roleAssignment').resourceType,parameters('roleAssignment').resourceName)]",
"properties": {....
}
}
]
}
In the above example number of parameters to resourceid function can vary depending upon resource type. For example: For Microsoft.eventhub/namespace I just need to pass eventhub namespace name but for Microsoft.eventhub/namespace/eventhub type I need to pass namespace name and eventhub name parameters to resourceid function.
"scope": "[resourceId(subscription().subscriptionId,parameters('roleAssignment')[copyIndex()].resourceGroup,parameters('roleAssignment')[copyIndex()].resourceType,parameters('roleAssignment')[copyIndex()].resourceName)]"