You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过ARM为Standard逻辑应用创建Event Grid订阅并解决校验报错

问题描述

我想创建一个使用When a resource event occurs触发器的Standard逻辑应用,触发器参考如下:
enter image description here
我希望通过ARM模板完成该逻辑应用的部署,已在模板中添加了逻辑应用、工作流、API连接、Event Grid订阅的相关配置,但部署时出现如下报错:

##[error]Url validation: Webhook validation handshake failed for https://myLogicApp.azurewebsites.net/runtime/webhooks/workflow/scaleUnits/prod-00/workflows/9382f38a3bc54b528e50dcc4351cd665/triggers/When_a_resource_event_occurs/paths/invoke. Http POST request retuned 2XX response with response body . When a validation request is accepted without validation code in the response body, Http GET is expected on the validation url included in the validation event(within 10 minutes).

我后续尝试调试:在Azure门户中手动复制工作流的回调URL,粘贴为Event Grid订阅的Webhook端点地址手动创建订阅,仍然得到类似报错,报错参考如下:
enter image description here
已知如果直接在门户中手动添加工作流的Event Grid触发器,Azure后端会自动完成订阅创建,不会出现该问题。

解决方案

该报错的核心原因是Event Grid向逻辑应用触发器发送验证握手请求时,没有得到预期的响应,对应ARM模板部署需要按以下规则调整:

  • 调整部署顺序:先完成逻辑应用、工作流定义的部署,等待触发器完全加载后再部署Event Grid订阅,不要将两类资源放在同一个部署步骤中并行创建,避免触发器未初始化完成导致无法响应验证请求。
  • Event Grid订阅资源不要硬编码回调URL,使用ARM内置的listCallbackURL函数动态获取触发器的完整回调地址,参考ARM模板片段如下:
{
  "type": "Microsoft.EventGrid/systemTopics/eventSubscriptions",
  "apiVersion": "2022-06-15",
  "name": "[concat(parameters('systemTopicName'), '/', parameters('eventSubscriptionName'))]",
  "properties": {
    "destination": {
      "endpointType": "WebHook",
      "properties": {
        "endpointUrl": "[listCallbackURL(concat(resourceId('Microsoft.Web/sites', parameters('logicAppName')), '/hostruntime/runtime/webhooks/workflow/scaleUnits/prod-00/workflows/', parameters('workflowName'), '/triggers/When_a_resource_event_occurs'), '2022-03-01').value]"
      }
    },
    "filter": {
      "includedEventTypes": [
        "Microsoft.Resources.ResourceWriteSuccess",
        "Microsoft.Resources.ResourceDeleteSuccess"
      ]
    },
    "eventDeliverySchema": "EventGridSchema",
    "retryPolicy": {
      "maxDeliveryAttempts": 30,
      "eventTimeToLiveInMinutes": 1440
    }
  }
}
  • 若逻辑应用配置了IP访问限制、VNet接入等网络规则,部署Event Grid订阅前需要临时放开公网访问,或者将Event Grid服务标签加入IP白名单,订阅创建完成后再恢复原有网络配置即可。
  • 不要自行删减回调URL中的任何参数(包括sig签名、api-version等),确保请求可以被逻辑应用正确识别。

如果按照上述配置仍然存在问题,可以先在Azure门户手动创建符合要求的触发器和Event Grid订阅,导出对应资源的ARM模板,对比自己编写的模板定位差异即可。

内容的提问来源于stack exchange,提问作者ibda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 14:15:08