我正在尝试开发一种Azure功能,以对由事件中心的捕获功能创建的Blob进行操作。但是,尽管捕获Blob已正确存储在容器中,但似乎没有Microsoft.EventHub.CaptureFileCreated
事件被发布到Function订阅。已成功创建对函数终结点的事件订阅,并且没有错误,并且Azure CLI的输出为
{
"additionalProperties": {},
"deadLetterDestination": null,
"destination": {
"additionalProperties": {},
"endpointBaseUrl": "https://xxxxx-xxxxx-xxxxx.azurewebsites.net/api/EventGridWebhook",
"endpointType": "WebHook",
"endpointUrl": null
},
"eventDeliverySchema": "InputEventSchema",
"filter": {
"additionalProperties": {},
"includedEventTypes": [
"Microsoft.EventHub.CaptureFileCreated"
],
"isSubjectCaseSensitive": null,
"subjectBeginsWith": "",
"subjectEndsWith": ""
},
"id": "/subscriptions/yyyyy-yyyyy-yyyyyy/resourceGroups/test-event-grid-grp/providers/Microsoft.EventHub/namespaces/capture-hub-namespace/providers/Microsoft.EventGrid/eventSubscriptions/captureFunctionV1Sub",
"labels": null,
"name": "captureFunctionV1Sub",
"provisioningState": "Succeeded",
"resourceGroup": "test-event-grid-grp",
"retryPolicy": {
"additionalProperties": {},
"eventTimeToLiveInMinutes": 1440,
"maxDeliveryAttempts": 30
},
"topic": "/subscriptions/yyyyy-yyyyy-yyyyyy/resourceGroups/test-event-grid-grp/providers/microsoft.eventhub/namespaces/capture-hub-namespace",
"type": "Microsoft.EventGrid/eventSubscriptions"
}
该函数的主体是一个标准的Http触发器,具有事件网格端点订阅所需的其他验证部分
public static async Task<object> Run(HttpRequestMessage req, TraceWriter log)
{
string jsonContent = await req.Content.ReadAsStringAsync();
log.Info($"Webhook was triggered! Input: {jsonContent}");
dynamic events = JsonConvert.DeserializeObject(jsonContent);
if (req.Headers.GetValues("Aeg-Event-Type").FirstOrDefault() == "SubscriptionValidation")
{
var code = events[0].Data["validationCode"];
return req.CreateResponse(HttpStatusCode.OK,
new { validationResponse = code });
}
return req.CreateResponse(HttpStatusCode.OK);
}
作为一个实验,如果我为另一种类型的事件(例如blob创建事件)添加相同函数的端点,则可以在日志中看到该函数的调用。此外,在事件订阅的Metrics刀片中,似乎从未有事件发布给订阅者
此外,与webhook触发器一样,将捕获事件的订阅添加到Logic App或存储队列,导致发布了零个事件。还值得注意的是,这对于Azure函数(v1和v2)都不能同时使用两个运行时环境,甚至在使用特定的EventGridTrigger
属性而不是通用Http触发器时也不能使用;但是,其他事件类型可以正确发布事件并触发功能。
为参考可能的复制步骤,我从this Microsoft tutorial中汲取了灵感,略过了SQL Server /数据仓库部分。 在寻找其他有类似问题的人时,我发现this question似乎与我的情况有关,但是没有明确的答案或线索可能是什么问题。必须缺少一些东西,但是我不知道下一步该怎么做。
答案 0 :(得分:0)
几天后,这似乎是基础架构的临时问题。今天早上,我进行了其他测试,一切正常。
此外,我发现过去几天成功触发了我的函数的日志,而无需进行任何更改。