Pulumi AzureNative事件网格主题订阅多事件类型过滤配置方法
Pulumi Azure Native 配置Event Grid订阅多条件筛选规则实现方案
针对「仅放行指定事件类型」的最简实现
如果核心需求是过滤允许通过的事件类型,不需要使用高级筛选特性,EventSubscriptionFilterArgs内置的IncludedEventTypes属性直接支持传入事件类型数组,即可实现白名单放行:
args.Filter = new Pulumi.AzureNative.EventGrid.Inputs.EventSubscriptionFilterArgs { // 保留原有的主题前后缀匹配规则,不需要可以删除 SubjectBeginsWith = "the_topic", SubjectEndsWith = "the_topic", // 传入需要放行的事件类型数组即可 IncludedEventTypes = new[] { "Microsoft.Resources.ResourceWriteSuccess", "MyCustomNamespace.OrderPaid", "MyCustomNamespace.OrderRefunded" } };
复杂多条件高级筛选配置方法
EnableAdvancedFilteringOnArrays和AdvancedFilters是配置复杂多条件筛选的核心属性,使用说明如下:
AdvancedFilters:虽然SDK声明类型为List<object>,但实际接收的是Pulumi.AzureNative.EventGrid.Inputs命名空间下的各类强类型筛选器Args,命名规则为[筛选逻辑]AdvancedFilterArgs,常用类型包括:StringInAdvancedFilterArgs:匹配指定字段值在给定字符串数组内StringNotInAdvancedFilterArgs:匹配指定字段值不在给定字符串数组内StringContainsAdvancedFilterArgs:匹配指定字段值包含给定数组中任意子串- 数值类筛选器:
NumberInAdvancedFilterArgs、NumberGreaterThanAdvancedFilterArgs、NumberLessThanOrEqualsAdvancedFilterArgs等 - 布尔类筛选器:
BoolEqualsAdvancedFilterArgs
EnableAdvancedFilteringOnArrays:布尔类型属性,当需要筛选的事件字段本身是数组类型时,将该值设为true,筛选逻辑会自动遍历数组内的所有元素做匹配,无需额外解析数组结构。- 多个高级筛选规则默认是AND逻辑,即所有规则都匹配的事件才会被投递。
高级筛选代码示例
以下示例实现两个筛选规则:事件data字段下的operation值属于create/update/submit集合、且version字段大于2,同时开启数组字段筛选能力:
args.Filter = new Pulumi.AzureNative.EventGrid.Inputs.EventSubscriptionFilterArgs { EnableAdvancedFilteringOnArrays = true, AdvancedFilters = new object[] { new Pulumi.AzureNative.EventGrid.Inputs.StringInAdvancedFilterArgs { Key = "data.operation", Values = new[] { "create", "update", "submit" } }, new Pulumi.AzureNative.EventGrid.Inputs.NumberGreaterThanAdvancedFilterArgs { Key = "data.version", Value = 2 } } };
注意:筛选器的
Key属性填写事件JSON结构的字段路径,顶层字段直接写字段名(如eventType、subject),嵌套字段用.分隔,例如data.creator.userId。
内容的提问来源于stack exchange,提问作者Ole Albers
相关产品推荐
相关产品推荐

