在ARM模板中,如果同时使用了Function MSDeploy和Event Grid订阅,可能会出现竞争条件。这是因为Function MSDeploy和Event Grid订阅都会监听资源的更改,并且可能会尝试同时对同一个资源进行操作。
为了解决这个问题,可以采取以下方法:
"dependsOn": [
"[resourceId('Microsoft.Web/sites', variables('functionAppName'))]",
"[resourceId('Microsoft.EventGrid/topics', variables('eventGridTopicName'))]"
]
"condition": "[equals(parameters('deployFunction'), true)]"
"resources": [
{
"type": "Microsoft.Web/sites/extensions",
"name": "[concat(variables('functionAppName'), '/MSDeploy')]",
"apiVersion": "2019-08-01",
"properties": {
...
}
},
{
"type": "Microsoft.EventGrid/topics/eventSubscriptions",
"name": "[concat(variables('eventGridTopicName'), '/Microsoft.EventGrid/', variables('eventGridSubscriptionName'))]",
"apiVersion": "2020-10-15-preview",
"properties": {
...
}
}
]
通过以上方法,可以解决ARM模板中Function MSDeploy和Event Grid订阅之间的竞争条件,并确保它们按照正确的顺序进行部署。