0

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)]"

Octonaut
  • 13
  • 6
  • can you provide a code example, because i dont think i understand the question. ie you can use `if()` to fork logic – 4c74356b41 Mar 14 '23 at 09:39
  • We can use `if()` and here is the example how to use it `"scope": "[if(equals(parameters('roleAssignment').resourceType, 'Microsoft.EventHub/namespaces/eventhubs'), resourceId(subscription().subscriptionId,parameters('roleAssignment').resourceGroup,parameters('roleAssignment').resourceType,parameters('roleAssignment').namespaceName,parameters('roleAssignment').eventHubName), resourceId(subscription().subscriptionId,parameters('roleAssignment').resourceGroup,parameters('roleAssignment').resourceType,parameters('roleAssignment').resourceName))]"` – Tarun Krishna Mar 14 '23 at 12:19
  • 1
    Thanks @TarunKrishna, it worked, I was using if condition inside of resourceid function to pass additional parameters to make it simple but it didn't work. It worked with your suggestion but made it little complex to understand. I am fine as long as it works though. – Octonaut Mar 14 '23 at 13:52

0 Answers0