Фабрика данных Azure для вызова локального API Alteryx

Мне нужно запустить задание в Alteryx (локально) из конвейера ADFv2, и я не могу найти способ сделать это. Встроенная веб-активность, похоже, не поддерживает процесс подписи OAUTH 1.0, который требуется Alteryx. При попытке настроить всегда получаю ошибку "Ошибка вызова конечной точки". Я пытался использовать службу Web Activity + HTTP Linked Service и не могу понять, как правильно это сделать. Мне нужно выполнить POST (начать задание) и GET (получить статус задания) для локального API Alteryx, и я даже не уверен, какое действие лучше всего подходит для этого.


person CodeMonkey    schedule 22.10.2018    source источник


Ответы (2)


Вы правы: веб-активность не поддерживает более сложные сценарии, кроме простого запроса, а связанная служба не поддерживает аутентификацию oAuth 1.0.

С моей точки зрения, вам придется извлечь процесс подписи, которого требует oAuth 1.0. Вы можете сделать одно из двух:

  • Используйте пользовательское действие, в котором вы собираетесь кодировать процесс подписи, а также вызывать задание Alteryx.

  • Используйте что-то вроде функции Azure, чтобы выполнить процесс подписи и вызвать свою работу. А затем используйте веб-активность для вызова вашей функции (это похоже на вызов обычного API с некоторыми пользовательскими заголовками для аутентификации).

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

person fgbaezp    schedule 23.10.2018
comment
Спасибо за ответ. Комбинация ваших вариантов, которые вы описали, - это решение, которое я придумал. Я создаю подпись в пользовательском коде и вывожу ее в следующую веб-активность задачи. К сожалению, я все еще не могу заставить веб-активность работать с моим локальным API Alteryx даже при использовании Private I.R. параметр. Было бы полезно, если бы ADF выдавал больше, чем общие ошибки, потому что я не могу сказать, останавливает ли он вообще API или что-то в локальной сети. Что, я думаю, может иметь место. Спасибо за ответ! - person CodeMonkey; 25.10.2018
comment
Должен добавить, что я уже написал полный проект .Net, который будет вызывать Alteryx. Он работает на 100%, когда я запускаю исполняемый файл из локальной сети. Но когда я устанавливаю его в хранилище BLOB-объектов и использую пакетные службы для его выполнения, я получаю сообщение об ошибке, в котором говорится, что он не может разрешить URL-адрес. Я думаю, это потому, что пакетная служба находится в Azure и не подключена к локальной среде. Я пытался использовать свой Private I.R. для связанной службы пакетной службы, но, похоже, это не имеет значения. Идеи? - person CodeMonkey; 25.10.2018
comment
Извините за поздний ответ, но, к сожалению, у меня больше нет идей по поводу вашей проблемы. Судя по тому, что вы описываете, это похоже на проблему с сетью. Должен ли Alteryx API оставаться закрытым и доступным только из внутренней сети вашей локальной сети? - person fgbaezp; 07.11.2018
comment
Это определенно была проблема с сетью для пользовательской активности пакетных служб. Мне пришлось расширить локальный домен до Azure через VPN и т. д. Но я все еще пытаюсь понять, почему я не могу заставить работать веб-активность, поскольку она использует собственный IR. Я должен иметь возможность сгенерировать ключ в пользовательской активности, которая требуется OAuth 1.0, а затем передать ее в веб-активность в качестве параметра. Но я не могу заставить веб-активность правильно распознать мой URL-адрес API. - person CodeMonkey; 09.11.2018
comment
Рад слышать, что часть проблемы решена! Итак, что осталось, так это то, что веб-активность попадает в ваш Alteryx Api, верно? Какую ошибку выдает веб-активность? - person fgbaezp; 09.11.2018
comment
Я открыл тикет с MSFT по веб-активности. Они подтвердили, что веб-активность не может использовать IR и, следовательно, не может подключаться к локальному источнику. Поэтому я застрял, делая это в Custom Activity/Batch Services. - person CodeMonkey; 19.11.2018

Я открыл тикет с Microsoft, и это был ответ:

В настоящее время веб-активность может выполняться только в веб-роли ADF, а не в IR. Это означает, что веб-операция выполняет прямые вызовы с серверов Azure на конечные точки и не может делать это через резидентную среду IR.

person user3780030    schedule 06.03.2019
comment
Это я тоже узнал. Мне пришлось использовать пакетные службы и установить свой код на виртуальную машину в пакетных службах. - person CodeMonkey; 14.03.2019