You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 05:15:31