[アップデート] Amazon SNS のサブスクリプションフィルターポリシーで文字列一致の際にワイルドカードが使えるようになりました

[アップデート] Amazon SNS のサブスクリプションフィルターポリシーで文字列一致の際にワイルドカードが使えるようになりました

2025.08.05

いわさです。

Amazon SNS にはサブスクリプションフィルターポリシーという機能があり、サブスクリプションごとにトピックへ送信されたメッセージをフィルターする条件を設定することが出来ます。
この条件を設定する際、これまでサフィックスやプレフィックスは指定出来たのですがワイルドカードを使うことができなかったため設定の柔軟性に限界がありました。

しかし、先日のアップデートでフィルタールールにワイルドカードを指定できるようになりました。ついに...

https://aws.amazon.com/about-aws/whats-new/2025/07/amazon-sns-message-filtering-operators/

今回こちらの機能を使ってみたので紹介します。

「wildcard」機能

フィルターポリシーの中で、様々なフィルター演算子を指定できるのですが、今回のアップデートで文字列一致の際にwildcardを指定出来ます。

今回、次のようなメッセージ属性スコープのフィルターポリシーを設定してみました。
hoge 属性に対してワイルドカード付きの条件を指定しています。

4C1596B9-7595-4A0D-9081-93D30D9DBF83.png

これに対して、ワイルドカード条件に一致するメッセージをトピックへ送ってみましょう。

52EEE59A-4198-4929-8F5C-6BD82D05CC39.png

そうすると、対象サブスクリプションにメッセージが配信されることを確認しました。
また、ワイルドカードに一致するほかの値(bbbfuga など)も配信されることを確認しました。

image.png

続いて、ワイルドカード条件に一致しない、次のようなメッセージをトピックに送信してみたところ...

CFAEE996-ADA1-41BE-908B-50E2119C1FB9.png

こちらは対象サブスクリプションへ配信がされませんでした。
うまくサブスクリプションフィルターが機能していることが確認できますね。

anything-but でも wildcard 機能

従来からanything-butというフィルター演算子自体はありまして、こちらは一致しないことを指定する演算子になっています。
こちらに対してもネストする形でwildcard演算子を指定できるようになっています。

次のように指定してみましょう。これで、先程と逆の配信条件になる感じです。

A2BAC8C3-4982-45AA-9987-1A30396665C1.png

先ほどは配信出来た以下については対象サブスクリプションに配信されないことを確認しました。

image.png

そして、先程は配信できていなかった以下については配信されることを確認できました。

image.png

元のwildcard演算子と組み合わせてトピック内でのサブスクリプション分岐をワイルドカードで完全に制御出来そうです。

ワイルドカードは一つのパターン内に最大3つまで、複雑さの概念あり

ワイルドカード機能ですが、いくつか制限があります。
まず一つのフィールドあたり、ワイルドカードは3つまで設定ができます。

image.png

そのためにひとつのパターンに4つ以上指定すると、Wildcard complexity too high: pattern exceeds maximum allowed wildcardsというエラーが発生します。

image.png

ただし、このルールはパターンごとなので、ワイルドカード3つ以内のパターンが複数存在する分には問題ありません。

image.png

ただし、複数のパターンに分散させる場合でもポリシー全体で複雑さを判定しており、一定の複雑さを超えると次のようにWildcard complexity too highエラーとなります。

1E8C45CC-DF37-4C57-A741-206461F673B4.png

このパターンの組み合わせによってポイントが計算されるようで、そのポイントが100を超えるとエラーになるようです。公式ドキュメントにルールが記載されているのでこちらも参考にしてください。ちなみに上記ルールは私の計算ではポイントが48なのですが、なぜかエラーになりました。なぜだ...

https://docs.aws.amazon.com/sns/latest/dg/subscription-filter-policy-constraints.html

さいごに

本日は Amazon SNS のサブスクリプションフィルターポリシーで文字列一致の際にワイルドカードが使えるようになったので試してみました。

これは良いアップデートですが、フィルターポリシーが柔軟に設定しやすくなりました。
ドキュメントにも記載されていましたが、複雑なルールを構築するとパフォーマンスに影響が出る場合があるそうなので、ほどほどにしておきましょう。

この記事をシェアする

facebookのロゴhatenaのロゴtwitterのロゴ

© Classmethod, Inc. All rights reserved.