Создание подписки EventGrid для приложения СТАНДАРТНОЙ логики
В основном я хочу создать стандартное приложение логики, использующее этот триггер:
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-адрес рабочего процесса и вставив его под URL-адрес конечной точки веб-перехватчика (который мне нужно заполнить, чтобы создать подписку вручную). Однако и это не сработало. У меня очень похожая ошибка:
Я выполнил предыдущий шаг просто как шаг отладки. Я знаю, что если я создал триггер в рабочем процессе вручную, проблема будет устранена, и подписка будет создана самостоятельно (или с помощью серверной системы Azure).
Итак, есть ли кто-нибудь, кто решил эту проблему с помощью стандартного приложения логики? Есть идеи, как решить эту проблему?
Я имею в виду, как создать шаблон ARM подписки на eventgrid, который подключается к стандартному приложению логики ??
2 ответа
Если во время создания подписки на событие вы видите сообщение об ошибке, например
The attempt to validate the provided endpoint https://your-endpoint-here failed. For more details, visit https://aka.ms/esvalidation
, это указывает на сбой при подтверждении подтверждения . Чтобы устранить эту ошибку, проверьте следующие аспекты:
Выполните HTTP POST для своего URL-адреса веб-перехватчика с тела запроса образцомSubscriptionValidationEvent с помощью Postman, curl или аналогичного инструмента.
Если ваш веб-перехватчик реализует механизм подтверждения синхронной проверки, убедитесь, что ValidationCode возвращается как часть ответа.
Если ваш веб-перехватчик реализует механизм подтверждения асинхронной проверки, убедитесь, что HTTP POST возвращает 200 OK.
Вы можете обратиться к Устранение неполадок при проверке подписки на сетку событий Azure» , « , « разделам «конечнойНевозможно создать подписку topc для сетки событий на основе URL-адреса рабочего процесса - сбой рукопожатия»Проверкаточки с событиями сетки событий» и « Реализация приложений логики Azure - при возникновении события ресурса».
Вы также можете открыть проблему на GitHub: Azure / logicapps
После общения со службой поддержки MS я обнаружил, что сначала имя имени приложения логики не должно превышать 43 символа. Тогда создание этого рабочего процесса может работать на портале, но не с использованием ARM. так как у него будет ошибка проверки из-за внутренней ошибки на стороне Microsoft.
Обходной путь для решения этой проблемы вдохновлен этой страницей :
Запрос на проверку сетки событий всегда будет иметь 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"
}