Amazon Simple Notification Service
開発者ガイド

Amazon SNS メッセージのフィルタ処理

デフォルトでは、Amazon SNS トピックの受信者は、トピックに対して発行されたすべてのメッセージを受信します。メッセージのサブセットを受信する場合、受信者はトピックのサブスクリプションにフィルタポリシーを割り当てる必要があります。

フィルタポリシーは、受信者が受信するメッセージを定義する属性が含まれているシンプルな JSON オブジェクトです。トピックにメッセージを発行すると、Amazon SNS はトピックの各サブスクリプションフィルタポリシー内の属性と、メッセージ属性を比較します。一致する属性があると、Amazon SNS は受信者にメッセージを送信します。それ以外の場合、Amazon SNS はメッセージを送信することなく、受信者をスキップします。サブスクリプションにフィルタポリシーがない場合は、そのトピックに発行されたすべてのメッセージがサブスクリプションで受信されます。

メッセージのフィルタ条件をトピックのサブスクリプションに統合することで、Amazon SNS の使用を簡略化できます。これにより、受信者からはメッセージのフィルタ処理ロジックをオフロードし、発行者からはメッセージのルーティングロジックをオフロードできるため、メッセージをフィルタ処理するために条件ごとに別個のトピックを作成する必要がなくなります。単一のトピックを使用することで、属性を使用してメッセージを差別化できます。各受信者は、そのフィルタポリシーで許可されたメッセージのみを受信および処理します。

たとえば、単一のトピックを使用して、小売サイトのトランザクションで生成されたすべてのメッセージを発行できます。トランザクション状態を示すには、各メッセージに対して属性 (order_placedorder_cancelledorder_declined など) を割り当てることができます。フィルタポリシーでサブスクリプションを作成することで、メッセージのトランザクション状態を処理するように設計されたキューに各メッセージをルーティングできます。

詳細については、「トピックに発行されたメッセージのフィルタ処理」、「文字列値の一致 (ホワイトリスト、ブラックリスト、プレフィックスマッチング)」、および「数値の一致 (ホワイトリストと範囲一致)」を参照してください。