Как настроить активность Webhook для выполнения модулей Runbook в Azure Data Factory v2? - PullRequest
0 голосов
/ 31 октября 2019

Я работаю над запуском модулей Runbook (powershell и graphic) из ADF. Один из способов, которые я нашел для выполнения этой задачи, - это использование веб-хуков. У меня будут модули Runbook, работающие параллельно и последовательно (если существует зависимость от предыдущего модуля Runbook).

В целом,

  • Если плоский файл удаляется в хранилище BLOB-объектов Azure, тогдаон запускает конвейер, который содержит соответствующие модули Runbook. Эта часть работает.

  • Веб-крючок Runbook (ов) используются в деятельности ADF веб-крюка. Вот где я сталкиваюсь с проблемой. Я не уверен в том, что должно быть в теле активности webhook?

После некоторого исследования я смог найти что-то про Callri URI, которое нужно добавить (или как-то сгенерировать) вТело паутины. Как я могу получить этот обратный вызов URI? Если я не добавлю правильный обратный вызов URI, то действие будет продолжаться до истечения времени ожидания. Я полагаю, что функционирование должно завершаться, когда действие webhook завершается, когда запускаемая книга запускается успешно, чтобы мы могли перейти к следующему действию webhook в конвейере. Я также пробовал веб-активность, но это та же проблема.

Тело, которое я сейчас использую, чуть ниже json.

{"body": {"myMessage": "Sample"}}

Я ссылался:

https://vanishedgradient.com/2019/04/25/webhooks-with-azure-data-factory/

https://mrpaulandrew.com/2019/06/18/azure-data-factory-web-hook-vs-web-activity/

https://social.msdn.microsoft.com/Forums/en-US/2effcefb-e65b-4d5c-8b01-138c95126b79/in-azure-data-factory-v2-how-to-process-azure-analysis-service-cube?forum=AzureDataFactory

1 Ответ

0 голосов
/ 15 ноября 2019

Я не уверен, что это лучшая практика, но у меня есть кое-что, что работает в Runbook PowerShell Workflow.

Если в модуле Runbook определен webhook, то вы используете параметр webhookdata. Тело вашего запроса должно быть в формате JSON, а параметр $ WebhookData его забирает. Например, предположим, что тело в вашей активности веб-крючка выглядит следующим образом:

{"MyParam": 1, "MyOtherParam": "Hello"}

В вашей книге запусков вы выбираете параметры таким образом:

Param([object]$WebhookData)

if($WebhookData){
    $parameters=(ConvertFrom-Json -InputObject $WebhookData.RequestBody)
    if($parameters.MyParam) {$ParamOne = $parameters.MyParam} 
    if($parameters.MyOtherParam) {$ParamTwo = $parameters.MyOtherParam} 
}

Переменные в вашем Runbook $ ParamOne и $ ParamTwo заполняются из проанализированной строки тела JSON. Фабрика данных автоматически добавляет callBackUri в строку Body. Вам не нужно создавать его.

Вы должны использовать имя $ WebhookData. Это определенное свойство.

Надеюсь, это поможет.

...