是否可通过EventGrid检测table/queue/fileShare的创建事件?
回答
可行性结论
可以实现对Azure Table、Queue、File Share创建事件的检测,不需要完全从零构造自定义事件,借助Azure Event Grid内置的资源管理器控制平面事件即可实现。
实现原理
目前Azure Event Grid的内置存储事件仅覆盖Blob Storage的数据平面操作,而Table、Queue、File Share的创建属于存储资源的控制平面操作,所有这类操作都会生成Azure Resource Manager(ARM)操作事件,Event Grid原生支持订阅这类事件,通过规则过滤即可精准获取你需要的资源创建通知。
具体操作步骤
- 第一步:创建对应范围的Event Grid系统主题
你可以选择订阅单个存储账户、对应资源组或者整个订阅范围的ARM事件,系统主题类型选择对应范围的资源管理主题即可:如果仅需要监听单个存储账户下的资源,直接选择Microsoft.Storage.StorageAccounts类型的系统主题即可。 - 第二步:配置事件订阅的过滤规则
在事件订阅中添加以下两个过滤条件,精准匹配三类资源的创建成功事件:仅捕获操作成功的事件,过滤掉操作失败、权限不足等无效事件
- 事件类型过滤:固定匹配
Microsoft.Resources.ResourceWriteSuccess类型 - 操作名称过滤:添加以下三个操作名的匹配规则,分别对应三类资源的创建操作:
Microsoft.Storage/storageAccounts/tableServices/tables/write(Table创建)Microsoft.Storage/storageAccounts/queueServices/queues/write(Queue创建)Microsoft.Storage/storageAccounts/fileServices/shares/write(File Share创建)
- 事件类型过滤:固定匹配
- 第三步:配置事件处理终点
过滤后的事件可以直接发送到你需要的业务处理端点,比如Azure Function、Logic App、自研服务的WebHook等。如果需要统一纳管为自定义事件,你也可以对事件字段做简单转换后推送到Event Grid自定义主题中。
常见说明
- 该方案是事件驱动的,不需要轮询存储账户,事件延迟通常在1-5秒内,满足绝大多数业务场景的实时性要求
- 你可以根据业务需要扩展过滤规则,同时捕获三类资源的删除、修改等其他操作
- 单个Event Grid订阅支持最多25个过滤规则,完全覆盖三类存储资源的多操作匹配需求
内容的提问来源于stack exchange,提问作者MoonHorse
相关产品推荐
相关产品推荐

