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

.NET中使用过滤策略创建SNS订阅遇InvalidParameterException报错求助

解决SNS订阅过滤策略的InvalidParameterException错误

你遇到的错误是因为直接在Attributes字典里使用自定义的MessageType作为键是不合法的。SNS订阅的Attributes只接受特定的属性名,过滤策略必须通过FilterPolicy这个专属键来配置,而且值需要是符合格式的JSON字符串,不能直接写键值对。

正确的代码实现

把原来的Attributes配置改成用FilterPolicy作为键,值序列化为包含过滤规则的JSON字符串:

public async Task CreateSubscriptionAsync()
{
    using var snsClient = new AmazonSimpleNotificationServiceClient(_amazonSimpleNotificationServiceConfig);

    // 构造过滤策略的JSON内容
    var filterPolicy = new Dictionary<string, List<string>>
    {
        { "MessageType", new List<string> { "OrderReceived" } }
    };
    string filterPolicyJson = JsonSerializer.Serialize(filterPolicy);

    _ = await snsClient.SubscribeAsync(new SubscribeRequest
    {
        Protocol = "sqs",
        Endpoint = _sqsSettings.Queues!.First(queue => !queue.Consume).Url,
        TopicArn = _snsSettings.Topic!.Arn,
        Attributes = new Dictionary<string, string> 
        { 
            { "FilterPolicy", filterPolicyJson } 
        }
    });
}

关键说明

  • FilterPolicy是SNS订阅中专门用于配置过滤规则的属性名,必须用这个键才能被识别。
  • 过滤规则需要序列化为JSON字符串,格式要求是键为消息属性名,值为数组形式的允许值(即使只有一个值也要用数组),这样SNS才能正确解析过滤条件,只把符合MessageType=OrderReceived的消息推送到这个订阅的SQS队列。

内容的提问来源于stack exchange,提问作者Onofre Antonio Juvencio Junior

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 17:17:02