Сбой при создании подписки EventGrid для функций Azure Runtime v1 - PullRequest
0 голосов
/ 31 января 2019

Что я делаю не так или как заставить это работать?Я использую Azure Runtime v1 (нужно использовать .NET Framework, а не ядро).

Код функции в Visual Studio выглядит следующим образом:

// This is the default URL for triggering event grid function in the local environment.
// http://localhost:7071/admin/extensions/EventGridExtensionConfig?functionName={functionname} 

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Azure.WebJobs.Extensions.EventGrid;
namespace FunctionApp1
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static void Run([EventGridTrigger]Microsoft.Azure.EventGrid.Models.EventGridEvent eventGridEvent, TraceWriter log)
        {
            log.Info(eventGridEvent.Data.ToString());
        }
    }
}

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

PS Azure:\> az eventgrid event-subscription create -g [<myGroupName>] --topic-name data-generated --name Func1Subs --endpoint "https://[<myFunctionAppName>].azurewebsites.net/admin/extensions/EventGridExtensionConfig?functionName=Function1&code=[<code>]"
Argument 'resource_group_name' has been deprecated and will be removed in version '2.1.0'. Use '--source-resource-id' instead.
Argument 'topic_name' has been deprecated and will be removed in version '2.1.0'. Use '--source-resource-id' instead.
The attempt to validate the provided endpoint https://[<myFunctionAppName>].azurewebsites.net/admin/extensions/EventGridExtensionConfig failed. For more details, visit https://aka.ms/esvalidation.

Я пробовал как системный код, полученный из GET-запроса на https://[<myFunctionAppName>].azurewebsites.net/admin/host/systemkeys/eventgridextensionconfig_extension?code=[<master_key>], так и ключ по умолчанию и даже сам мастер-ключ - тот же результат.

При использовании кнопки на портале для добавления подписки на Event Grid"- Я также получаю эту ошибку в окне уведомлений.

Когда я создаю функцию на портале - создание подписки работает нормально.
Также, когда я развертываю функцию .netcore в среде выполнения 2.x - и используюКнопка портала для создания подписки - это тоже отлично работает.Но, как я уже сказал, я хочу использовать среду выполнения 1.x для развертывания функции .NETFramework.

Ответы [ 2 ]

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

Я воспроизвел это и некоторые наблюдения здесь

все работает нормально, если я использую подпись функции по умолчанию

    namespace FunctionApp7
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static void Run([EventGridTrigger]JObject eventGridEvent, TraceWriter log)
        {
            log.Info(eventGridEvent.ToString(Formatting.Indented));
        }
    }
}

, но когда я использую подпись, как вы упомянули, я получаю ошибку при созданииподписка на события.Мне также нужно добавить пакет nuget для подписки, чтобы скомпилировать Microsoft.Azure.EventGrid 3.0.0

    namespace FunctionApp10
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static void Run([EventGridTrigger]Microsoft.Azure.EventGrid.Models.EventGridEvent eventGridEvent, TraceWriter log)
        {
            log.Info(eventGridEvent.Data.ToString());
        }
    }
}

Взгляните на следующую ссылку

https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-event-grid

Подпискаподпись не применима для функций V1

public static void Run([EventGridTrigger]Microsoft.Azure.EventGrid.Models.EventGridEvent eventGridEvent, TraceWriter log) 
0 голосов
/ 01 февраля 2019

Вы можете проверить функцию EventGridTrigger для подписчика Azure Event Grid с помощью Почтальона, см. Следующее:

URL запроса:

POST https://{myFuncApp}.azurewebsites.net/admin/extensions/EventGridExtensionConfig?functionName={myEventGridTriggerFnc}&code={_masterKey}

Заголовок:

aeg-event-type: SubscriptionValidation

Body:

[{
   "id": "123",
   "subject": "abc",
   "eventType": "xxx",
   "eventTime": "2019-01-31T16:17:37.1080645Z",
   "data": {
      "validationCode": "xxxxxxxx",
      "validationUrl": "",
      },
   "dataVersion": "0",
   "metadataVersion": "1",
   "topic": "xxxx"
}]

Успешный ответ вернет:

{"validationResponse":"xxxxxxxx"}

Примечания:

  1. URL-адрес запроса можно скопировать с портала yourFunction / Integrate, свойство URL-адрес подписки на сетку событий
  2. В случае создания URL-адреса запроса вручную используйте ключ _ master на странице портала yourFunction / Manage.
  3. Для тестирования тела функции используйте заголовок 'aeg-event-type: Notification '
...