Функции Azure, развивающиеся локально - не удается зарегистрировать функцию, запускаемую EventHub

Я хочу разработать локально свое приложение-функцию Azure, а затем опубликовать его на портале Azure. Я использую командную строку Azure Functions Core Tools, и все мои функции находятся в Node.js. В настоящее время мне удалось загрузить свои функции локально и получить их настройки с помощью команды:

func azure functionapp fetch-app-settings

Итак, после этого мой local.settings.json имеет правильные значения настроек. Когда я вношу какие-либо изменения, я также могу успешно опубликовать их на портале Azure.

Проблема в том, что теперь у меня есть две функции в моем приложении: одна - Http Triggered, а вторая - EventHub. Когда я пытаюсь запустить локальный хост с:

func host start

Я получаю следующий вывод с консоли:

[10.12.2017 13:03:47] Found the following functions:
[10.12.2017 13:03:47] Host.Functions.HttpTriggerJS1
[10.12.2017 13:03:47]
[10.12.2017 13:03:47] Job host started
[10.12.2017 13:03:47] The following 1 functions are in error:
[10.12.2017 13:03:47] EventHubTriggerJS1: The binding type 'eventHubTrigger' is not registered. Please ensure the type is correct and the binding extension is installed.

И когда я пытаюсь запустить локально эту функцию EventHubTriggerJS1 с помощью curl:

curl --request POST -H "Content-Type:application/json" --data '{"input":"sample queue data"}' http://localhost:7071/admin/functions/EventHubTriggerJS1

тогда ничего не происходит, поэтому я предполагаю, что это проблема регистрации этого триггера. HttpTriggerJS1 работает отлично, я могу получить к нему доступ через

http://localhost:7071/api/HttpTriggerJS1

Итак, у вас есть идеи, где могут возникнуть проблемы при настройке? Кстати, возможно ли локально работать и подключаться к удаленному EventHub на портале?


person tommy vercetti    schedule 10.12.2017    source источник


Ответы (1)


Мне не удалось воспроизвести вашу ошибку во время выполнения версии 1.0.

Я воспроизвел ошибку в 2.0. Я считаю, что 2.0 пока не поддерживает концентраторы событий, https://github.com/Azure/azure-webjobs-sdk-script/wiki/Azure-Functions-runtime-2.0-known-issues#functional-gaps

попробуйте установить расширения func extensions install --package Microsoft.Azure.WebJobs.Extensions.EventHubs -v 3.0.0-beta4

Не могли бы вы подробнее рассказать о своих функциях и шагах, которые вы предприняли для их создания?

HttpTriggerJS1 был создан локально, а затем опубликован на портале в соответствии с шагами, описанными в https://docs.microsoft.com/en-us/azure/azure-functions/functions-run-local?

EventHubTriggerJS1 был создан на портале? в том же приложении-функции?

Не смешивайте локальную разработку с разработкой портала в одном и том же функциональном приложении. Когда вы создаете и публикуете функции из локального проекта, вам не следует пытаться поддерживать или изменять код проекта на портале.

person patrick    schedule 12.12.2017
comment
Привет, Патрик, спасибо за ответ. Я создал функции на портале, а затем загрузил их локально и попытался запустить их с func host start. Я использую среду выполнения 1.0, и HttpTriggerJS1, и EventHubTriggerJS1 принадлежат одному и тому же приложению-функции. Когда я запускаю их на портале, оба работают нормально, однако я хотел бы иметь локальную среду, и только HttpTriggerJS1 работает правильно. К сожалению, после установки предлагаемого расширения обе функции триггера не работают. В консоли появляется сообщение: imgur.com/8uWrZHI Вам удалось это сделать локально, без портала? - person tommy vercetti; 13.12.2017
comment
Можете ли вы предоставить свои файлы function.json? Также убедитесь, что вы правильно скопировали настройку приложения, запустите func azure functionapp fetch-app-settings <FunctionAppName> - person patrick; 13.12.2017
comment
Патрик, спасибо за поддержку, я нашел решение. Проблема заключалась в том, что я использовал новую версию azure-function-core-tools @ core (время выполнения 2.0). После его удаления и установки среды выполнения 1.0 с npm install -g azure-function-core-tools, func host start плавно настраивает все функции, включая триггер eventhub! Простите за поздний ответ - person tommy vercetti; 21.12.2017