Добавление подписчика для blobcreated webhook в сетку событий завершается ошибкой даже с правильным (?) телом и кодом состояния HTTP 200

#azure-eventgrid

#azure-eventgrid

Вопрос:

Я пытаюсь добавить подписчика в сетку событий Azure в соответствии с документацией для javascript. При тестировании как локально, так и против службы веб-приложений Azure, запущенной из образа docker, ответ кажется правильным (?) При тестировании с помощью curl / postman с фиктивным сообщением о проверке, Однако сетка событий завершается с ошибкой при добавлении подписчика Azure web app — есть идеи, что я делаю не так?

 Deployment has failed with the following error: {"code":"Url validation","message":"Webhook validation handshake failed for https://blablablba.azurewebsites.net/event. Http POST request retuned 2XX response with response body {"validationResponse":"BF3F55BB-862E-447F-8C49-8D7538D60484". When a validation request is accepted without validation code in the response body, Http GET is expected on the validation url included in the validation event(within 10 minutes). For troublehooting, visit https://aka.ms/esvalidation. Activity id:blablalba-7c10-4002-a5ea-c2e7a1701d04, timestamp: 11/8/2020 9:45:33 PM (UTC)."}
  

Код, в основном скопированный, вставлен из документов..

      eventHook: function(req, res) {
        var validationEventType = "Microsoft.EventGrid.SubscriptionValidationEvent";
        var storageBlobCreatedEvent = "Microsoft.Storage.BlobCreated";

        for (var events in req.body) {
            var body = req.body[events];
            if (body.data amp;amp; body.eventType == validationEventType) {
                var code = body.data.validationCode;
                res.status(200).send({
                    "validationResponse": code
                });
            }

            else if (body.data amp;amp; body.eventType == storageBlobCreatedEvent) {
                var blobCreatedEventData = body.data;
                //Handle blob created event
            }
        }
    }
  

Тестирование с помощью Curl

 curl -w " | statusCode= %{http_code} n" -X POST -d '[{"id": "2d1781af-3a4c-4d7c-bd0c-e34b19da4e66","topic": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","subject": "","data": {"validationCode": "512d38b6-c7b8-40c8-89fe-f46f9e9622b6"},"eventType": "Microsoft.EventGrid.SubscriptionValidationEvent","eventTime": "2018-01-25T22:12:19.4556811Z", "metadataVersion": "1","dataVersion": "1"}]' -H 'Content-Type: application/json' https://blablablba.azurewebsites.net/event
  

Ответ

 {"validationResponse":"512d38b6-c7b8-40c8-89fe-f46f9e9622b6"} | statusCode= 200
  

С помощью Postman

Статус HTTP — 200 OK введите описание изображения здесь

 {
    "validationResponse": "512d38b6-c7b8-40c8-89fe-f46f9e9622b6"
}
  

Ответ №1:

Ну, по-видимому, это была просто azure, являющаяся azure .. попробовал еще раз после публикации этого вопроса, очевидно, и тогда это сработало. #life. да, надеюсь, это поможет кому-то еще позже