0

我主要想创建一个使用此触发器的标准逻辑应用程序When a resource event occurs::

在此处输入图像描述

我希望能够通过 ARM 创建这个逻辑应用程序。我为逻辑应用、工作流、API 连接和事件网格订阅添加了模板。但我收到此错误:

##[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).

因此,我尝试通过手动复制工作流 url 并将其粘贴到 webhook 端点 url 下(我需要填写以手动创建订阅),在门户中手动创建 eventgrid 订阅。但是,这也不起作用。我得到了一个非常相似的错误:

在此处输入图像描述

我做了上一步只是作为调试步骤。我知道如果我在工作流中手动创建触发器,问题将得到解决,订阅将单独创建(或由 Azure 后端系统创建)。

那么,有没有人用标准逻辑应用解决了这个问题?您对如何解决此问题有任何想法吗?

我的意思是如何创建连接到标准逻辑应用程序的 eventgrid 订阅 ARM 模板?

4

2 回答 2

0

在事件订阅创建过程中,如果您看到诸如 的错误消息The attempt to validate the provided endpoint https://your-endpoint-here failed. For more details, visit https://aka.ms/esvalidation,则表明验证握手失败。要解决此错误,请验证以下方面:

  • 使用 Postman 或 curl 或类似工具使用示例 SubscriptionValidationEvent请求正文对您的 webhook url 执行 HTTP POST 。

  • 如果您的 webhook 正在实现同步验证握手机制,请验证 ValidationCode 是否作为响应的一部分返回。

  • 如果您的 webhook 正在实现异步验证握手机制,请验证您的 HTTP POST 是否返回 200 OK。

您可以参考疑难解答 Azure 事件网格订阅验证 无法根据工作流 url 创建事件网格 topc 订阅 - 握手失败 使用事件网格事件进行端点验证实现 Azure 逻辑应用 - 发生资源事件时

你也可以在 GitHub 上打开一个问题:Azure/logicapps

于 2021-10-26T06:34:34.863 回答
0

在与 MS 支持团队沟通后,我发现首先逻辑应用名称的名称不应超过 43 个字符。然后创建此工作流可以在门户中工作,但不能使用 ARM。因为它会因为微软方面的内部错误而出现验证错误。

此页面启发了解决此问题的解决方法:

eventgrid 验证请求将始终具有验证 URL(仅当 LA 已通过 ARM 部署时)。因此我们可以添加这些动作: 在此处输入图像描述

然后,http 请求可以具有: 在此处输入图像描述

因此,工作流程将具有与此类似的代码:

{
    "definition": {
        "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
        "actions": {
            "Condition": {
                "actions": {
                    "HTTP_try_to_return_the_validation": {
                        "inputs": {
                            "body": "@triggerBody()?['data']?['validationCode']",
                            "method": "POST",
                            "uri": "@{triggerBody()?['data']?['validationUrl']}"
                        },
                        "runAfter": {},
                        "type": "Http"
                    },
                    "Terminate": {
                        "inputs": {
                            "runStatus": "Cancelled"
                        },
                        "runAfter": {
                            "HTTP_try_to_return_the_validation": [
                                "Succeeded"
                            ]
                        },
                        "type": "Terminate"
                    }
                },
                "expression": {
                    "and": [
                        {
                            "equals": [
                                "@triggerBody()?['eventType']",
                                "Microsoft.EventGrid.SubscriptionValidationEvent"
                            ]
                        }
                    ]
                },
                "runAfter": {},
                "type": "If"
            }
        },
        "contentVersion": "1.0.0.0",
        "outputs": {},
        "triggers": {
            "When_a_resource_event_occurs": {
                "inputs": {
                    "body": {
                        "properties": {
                            "destination": {
                                "endpointType": "webhook",
                                "properties": {
                                    "endpointUrl": "@{listCallbackUrl()}"
                                }
                            },
                            "filter": {
                                "includedEventTypes": [
                                    "X.Y.Z"
                                ],
                                "subjectBeginsWith": "/x/y/z"
                            },
                            "topic": "@{appsetting('eventgrid_name')}"
                        }
                    },
                    "host": {
                        "connection": {
                            "referenceName": "eventgrid"
                        }
                    },
                    "path": "/subscriptions/@{encodeURIComponent(appsetting('subscriptionId'))}/providers/@{encodeURIComponent('Microsoft.EventGrid.Topics')}/resource/eventSubscriptions",
                    "queries": {
                        "subscriptionName": "testName",
                        "x-ms-api-version": "2017-09-15-preview"
                    }
                },
                "splitOn": "@triggerBody()",
                "type": "ApiConnectionWebhook"
            }
        }
    },
    "kind": "Stateful"
}
于 2022-03-03T07:56:11.823 回答