Как прослушать событие mediaService с помощью функций Azure и подписок на события - PullRequest
0 голосов
/ 24 января 2019

У меня есть несколько заданий на кодирование с использованием API-интерфейса REST Azure, которые я хотел бы выполнить по завершении. Я все еще изучаю рабочий процесс Azure, но кажется, что правильный способ сделать это - создать функцию Azure, зарегистрировать ее в менеджере подписки на события и обработать завершенные задания в этой функции.

Прямо сейчас у меня есть:

  • Создано функциональное приложение на портале, связанное с моей подпиской и группой ресурсов. Я использовал пример, показанный здесь: https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-event-grid#javascript-example

  • Запущен процесс Создать подписку на события на портале. Я выбрал схему «Сетка событий», выбрал события, которые мне нужно было прослушать, и выбрал подходящую группу ресурсов и учетную запись медиа-службы. Я т

Когда я пытаюсь создать подписку, у меня появляется следующая ошибка:

Deployment has failed with the following error: {"code":"Url validation","message":"The attempt to validate the provided endpoint http://myendpoint failed. For more details, visit https://aka.ms/esvalidation."}

Если я затем перехожу к своей функции, у меня появляется следующая ошибка:

Function (EventHandler) Error: The binding type(s) 'eventGridTrigger' are not registered. Please ensure the type is correct and the binding extension is installed.

Я прочитал, что сначала я должен установить триггер Azure Event Grid на портале, создав новую функцию с этим шаблоном, но она не работает с этой ошибкой: https://mediaevent -handler.scm.azurewebsites.net / апи / VFS / данные / Функции / расширения / febd7383-0d66-4974-90f0-c266f0c08c2e.json

Я делаю правильный процесс или есть какая-то проблема с разрешением?

Я также делаю эти манипуляции как владелец организации.

Спасибо!

1 Ответ

0 голосов
/ 24 января 2019

Вы можете использовать либо «Функции», либо «Приложения логики», чтобы «перехватить» событие сетки событий из AMS.

Я использую оба довольно часто. Как только вы подтвердите, что RP включен в вашей подписке, как отмечено выше, вы можете создать новую функцию и выбрать шаблон «Запуск по сетке событий». Убедитесь, что вы не захватили «Event Hub Trigger», который не совпадает.

После создания рядом с кнопкой «Выполнить» появляется небольшая ссылка «Добавить подписку на сетку событий». Выберите «Схема сетки событий», а затем в качестве типа темы выберите «Службы мультимедиа Microsoft Azure», затем выберите правильную подписку, группу ресурсов и имя учетной записи для служб мультимедиа. Затем я всегда снимаю флажок «Подписаться на все события» и подписываюсь просто на «Задание завершено» или, если вы хотите, чтобы все изменения состояния были изменены «Состояние задания изменено».

После этого вставьте небольшой пример кода и протестируйте его:

#r "Newtonsoft.Json"

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

public static void Run(JObject eventGridEvent, TraceWriter log)
{
    log.Info(eventGridEvent.ToString(Formatting.Indented));

    var subject = eventGridEvent["subject"].ToString();
    var split = subject.Split('/');
    var transformName = split[1];
    var jobName = split[3];

    log.Info($"Transform = {transformName}");
    log.Info($"Job = {jobName}");
    log.Info($"State = {eventGridEvent["data"]["state"] }");

}

ОБНОВЛЕНИЕ этого ответа, чтобы он содержал комментарии:

Похоже, у команды функций может быть ошибка портала. Я свяжусь с ними. Проверьте эту ссылку - следующие действия должны решить проблему: github.com/Azure/azure-functions-host/wiki/

Если вы выполните это и остановите / перезапустите приложение Function на портале, оно должно начать работать.

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

...