Размещенная в Docker функция Azure не может связаться с сеткой событий - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь подключить мой статический сайт, размещенный в хранилище BLOB-объектов Azure, к функции Azure (размещенной в контейнере Docker) через сетку событий.Я планирую использовать функцию оптимизации изображений, добавляемых в хранилище больших двоичных объектов, для уменьшения размера файла.

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

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

Я следую этим шагам из руководства Microsoft по , получая системную клавишу .от мастер-ключа.(Это позже используется при настройке подписки)

Когда я нажимаю на ссылку: http://<func-app>.azurewebsites.net/admin/host/systemkeys/eventgrid_extension?code=<master_key> Я получаю 404 (То же самое при использовании HTTPS).

Я заменил приложение функцииимя и получил master_key отсюда (имя _master): Azure functions app settings

Я могу только предположить, что я делаю что-то не так, но я понятия не имею, что, любая помощь приветствуется!

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Наконец-то дошло до этого, для его исправления потребовалось 2 шага:

  • Убедитесь, что вы используете правильную сигнатуру метода.Я добавил IActionResult в качестве возвращаемого типа в мою функцию вместо сигнатуры этого метода: public static void EventGridTest([EventGridTrigger]EventGridEvent eventGridEvent, ILogger log) (использование async Task вместо void также допустимо).При неправильной подписи во время выполнения функции не удалось найти действительную подпись функции, эта ошибка не появлялась до тех пор, пока я фактически не запустил func host start, после чего я получил следующее:
Microsoft.Azure.WebJobs.Host: Error indexing method '<funcName>'.
Microsoft.Azure.WebJobs.Host: Cannot bind parameter '$return' to type IActionResult&. Make sure the parameter Type is supported by the binding. If you're using binding extensions (e.g. Azure Storage, ServiceBus, Timers, etc.) make sure you've called the registration method for the extension(s) in your startup code (e.g. builder.AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers(), etc.).
  • Во-вторых, конечная точка для получения системного ключа, как описано в документации, не существует (Возвращает 404).Как описано Джерри Лю https://stackoverflow.com/a/54763760/537821, использование клавиши _master работает вместо системного ключа.

Так что благодаря Roman Kiss & Джерри Луи , который помог мне решить эту проблему.

0 голосов
/ 19 февраля 2019

Кажется, существует некоторая проблема с генерацией системных ключей для функции linux.Я встречал ту же ошибку, в то время как в Windows все работает.

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

https://{functionappname}.azurewebsites.net/runtime/webhooks/eventgrid?functionName={functionname}&code={masterkey}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...