У меня есть функция Azure, выполняемая триггером Event Grid. Функция отлажена и работает так, как задумано. Мне удалось успешно создать подписку на тему сетки событий с помощью пользовательского интерфейса на портале Azure (щелкните Add Event Grid subscription
и заполните экранную форму).
Проблема в том, что я не могу правильно указать формат конечной точки при попытке использовать интерфейс командной строки (Cloud Shell вошел в систему как администратор) для создания подписки. Я использую базовый шаблон
az eventgrid event-subscription create --resource-group $resourceGroup
--topic-name $topicName
--included-event-types $includedEventTypes
--name $eventSubscriptionName
--endpoint https://XXX.azurewebsites.net/admin/extensions/EventGridExtensionConfig?functionName=FunctionName&code=ABC123
Я попытался скопировать автоматически заполняемую конечную точку, включая ее параметр кода, из пользовательского интерфейса. Он работает в пользовательском интерфейсе, но не из интерфейса командной строки. Когда я запускаю указанный выше сценарий, используя конечную точку и код, предоставленные на портале, я получаю следующее
The term 'code=<XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX> is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
Если я опущу код, я получаю сообщение о том, что подписка не удалась, потому что не удалось проверить конечную точку.
Если я попытаюсь использовать конечную точку в форме, обычно наблюдаемой для конечных точек функций, https://XXX.azurewebsites.net/FunctionName
, я также получаю жалобы на проверку.
Каков правильный формат конечной точки при создании подписки из интерфейса командной строки в Cloud Shell? Я должен включать параметр кода или нет? Где мне взять правильный код?
С использованием:
Microsoft.NET.Sdk.Functions 1.0.19
Microsoft.Azure.EventGrid 1.4.0
Microsoft.Azure.WebJobs.Extensions.EventGrid 1.0.0
полный subscriberUrl для EventGridTrigger имеет следующий формат: https: // {FunctionAppName} .azurewebsites.net / admin / extensions / EventGridExtensionC onfig? functionName = { EventGridTriggerFunctionName} & code = {mast erKey}
Я попытался подписаться с использованием _master и ключей хоста по умолчанию, а также системного ключа, созданного путем отправки запроса GET с ключом _master. Все привело к The term 'code=XXXX' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
Я только что протестировал его с помощью ключа _master с помощью CLI на портале (подписка на событие обновления) со значением конечной точки, заключенным в двойные кавычки, как рекомендовано ответом Джерри.
Я просто пробовал использовать двойные кавычки и использовать ключ _master. Теперь получаю The attempt to validate the provided endpoint https://XXX.azurewebsites.net/admin/extensions/EventGridExtensionConfig failed. For more details, visit https://aka.ms/esvalidation.
Обратите внимание, что имя функции чувствительно к регистру. Постарайтесь точно соответствовать названию вашей функции.
Попробуйте заключить конечную точку функции в кавычки, &
кажется зарезервированным знаком в синтаксисе CLi, поэтому ваш параметр code
вырезан из URL-адреса.
Заключение конечной точки в кавычки решило проблему. В какой-то момент приложение-функция перестало работать. После повторной публикации и помещения конечной точки в кавычки и использования ключа _master все заработало, как ожидалось.
посмотрите docs.microsoft.com/en-us/azure/azure-functions/…