0
votes

I am getting this error when trying to deploy my Azure Resource Package. Would love to find a way around 'resourceId': function requires exactly one multi-segmented argument statement.

 [ERROR] New-AzureRmResourceGroupDeployment : 2:17:06 PM - Error: Code=InvalidTemplate; 
14:17:06 - [ERROR] Message=Deployment template validation failed: 'The template resource 
14:17:06 - [ERROR] 'xxxxx/basket-item-changed-topic/basket-telemetry-processor' at line 
14:17:06 - [ERROR] '2799' and column '10' is not valid: Unable to evaluate template language 
14:17:06 - [ERROR] function 'resourceId': function requires exactly one multi-segmented argument 
14:17:06 - [ERROR] which must be resource type including resource provider namespace. Current 
14:17:06 - [ERROR] function arguments 'Microsoft.ServiceBus/namespaces/topics,xxxxxx/bask
14:17:06 - [ERROR] et-item-changed-topic'. Please see 

-------------------This is the template

{ "comments": "Generalized from resource: '/subscriptions/fa17ed69-d83f-47bc-8604-fd96cd27d322/resourcegroups/xxxxxxx-Integration-Environment/providers/Microsoft.ServiceBus/namespaces/xxxxx/topics/basket-item-changed-topic/subscriptions/basket-telemetry-processor'.", "type": "Microsoft.ServiceBus/namespaces/topics/subscriptions",
"name": "[parameters('subscriptions_basket_telemetry_processor_name')]",
"apiVersion": "2015-08-01", "location": "UK West",
"scale": null, "properties": {
"lockDuration": "00:02:00", "requiresSession": false,
"defaultMessageTimeToLive": "10675199.02:48:05.4775807",
"deadLetteringOnMessageExpiration": true,
"deadLetteringOnFilterEvaluationExceptions": true,
"messageCount": 0, "maxDeliveryCount": 1,
"enableBatchedOperations": true, "status": "Active",
"createdAt": "2017-05-10T14:31:54.2059078Z",
"updatedAt": "2017-05-10T14:31:56.6330818Z",
"accessedAt": "2017-06-23T10:53:20.3815084Z",
"countDetails": { "activeMessageCount": 0,
"deadLetterMessageCount": 0,
"scheduledMessageCount": 0, "transferMessageCount": 0, "transferDeadLetterMessageCount": 0
}, "autoDeleteOnIdle": "10675199.02:48:05.4775807",
"entityAvailabilityStatus": "Available" },
"dependsOn": [
"[resourceId('Microsoft.ServiceBus/namespaces', parameters('namespaces_xxx_int_name'))]",
"[resourceId('Microsoft.ServiceBus/namespaces/topics', parameters('topics_basket_item_changed_topic_name'))]" ]
},

2
are all the resources in the same template?4c74356b41
Yeap they are in the same azure resource templateRıfat Erdem Sahin
I have also asked here but did not understand how to implement the solution. Reference github.com/Azure/azure-quickstart-templates/issues/1965Rıfat Erdem Sahin

2 Answers

0
votes

You can just use the name of the resource if its deployed in the same template:

dependsOn: [
    "[parameters('namespaces_xxx_int_name')]",
    "[parameters('topics_basket_item_changed_topic_name')]"
]

you cannot use dependsOn with resources deployed or existing outside of the template, so my original remark doesn't make any sense.

0
votes

That was a naming issue.

parameters('namespaces_xxx_int_name')

Steps to solve

1.Remove parameters from parameter file.( Use default parameters)

2.Add your functions.

3.Find all the related places that causes the error.