我遇到了一个大问题,即 azure 事件网格系统主题无法响应从 azure 函数应用程序或 azure 逻辑应用程序上传的 blob。当我手动上传文件(即使是相同的文件)时,它可以工作
Blob 存储和事件网格中存在一个大错误,其中 Blob 存储将允许您上传到具有前导 / 的 Blob 路径的存储,这将导致事件网格系统主题不响应事件,因为它有 https://storagename.blob.core.windows.net/container//folder/folder/file.txt 如果您在主题过滤器中添加 // ,您可能会使其工作
但在我看来,blob 存储不应允许您在路径无效时上传文件,就像在本例中一样
根据我的理解,事件网格系统主题正在对 Log Analytics Workspace(或只是普通日志)putBlob 和您的主题过滤器做出反应,但我的过滤器没有 //,那么它不会采取任何操作,因为它不匹配
我花了一周的时间进行调试,并让多个团队与来自 azure 支持事件网格团队和存储 Blob 团队的多个人员会面,他们都没有发现双正斜杠的问题,即使当我发现错误并告诉他们时,他们也会不承认这是一个错误并且他们需要修复它。 解决方案是删除代码中的前导斜杠
我已使用您的筛选器在存储帐户 (rk2018ebstg) 上创建了一个订阅(名称为 abc),请参阅我的 Azure Event Grid Tester 工具的以下屏幕片段:
然后我使用 REST API Put 请求上传了一个 blob 文件:
https://rk2018ebstg.blob.core.windows.net/container/folder/folder/2024-04-21T00:16:40.txt?sp=racwd&st=2024-04-21T00:16:40Z&se=2034-04-21T08:16:40Z&sv=2022-11-02&sr=c&sig=****
以下屏幕片段显示了收到的有关存储主题的事件消息:
如您在上面的屏幕中看到的,AEG 反应正确,包括其过滤。
您与 blob 路径中的“< no name >”相关的评论(例如多个“/”)不是错误,它是基于设计的,请参阅here,所以换句话说,“< no name >”字典是有效的字典名称。
我建议在 AEG 订阅中使用高级过滤,请参阅以下示例:
"advancedFilters":[
{
"values":[
"/containers/container/blobs//folder/folder/",
"/containers/container/blobs/folder/folder/"
],
"operatorType":"StringContains",
"key":"subject"
}
]