

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# SNS FIFO トピックの Amazon SNS メッセージフィルター処理
<a name="fifo-message-filtering"></a>

Amazon SNS FIFO トピックでは、メッセージフィルター処理がサポートされています。メッセージのフィルター処理により、受信者システムからのメッセージのルーティングロジックと、受信者システムからのメッセージのフィルター処理ロジックをオフロードすることにより、アーキテクチャが簡素化されます。

Amazon SQS FIFO キューまたは標準キューを SNS FIFO トピックにサブスクライブする場合、メッセージフィルタリングを使用して、サブスクライバーが、すべてのメッセージではなく、メッセージのサブセットを受信するように指定できます。各サブスクライバーは、独自のフィルターポリシーをサブスクリプション属性として設定できます。フィルターポリシーの範囲に基づいて、フィルターポリシーが受信メッセージ属性またはメッセージ本文と照合されます。フィルターポリシーが一致する場合、トピックはメッセージのコピーをサブスクライバーに配信します。一致するものがない場合、トピックはメッセージのコピーを配信しません。

[自動車部品価格管理のユースケース例](fifo-example-use-case.md)では、以下の Amazon SNS フィルターポリシーが設定されていて、フィルターポリシーの範囲が `MessageBody` であると仮定します。
+ 卸売キューについては、フィルターポリシー `{"business":["wholesale"]}` は、`business` という名前のキーと値のセットの `wholesale` を持つすべてのメッセージと一致します。次の図では、メッセージ **m1** 内のキーの 1 つは `wholesale` の値を持つ `business` です。メッセージ **m3** 内の 1 つのキーは `["wholesale,retail"]` の値を持つ `business` です。したがって、**m1** および **m3** の両方がフィルターポリシーの基準に一致し、両方のメッセージが卸売キューに配信されます。
+ 小売キューについては、フィルターポリシー `{"business":["retail"]}` は、`business` という名前のキーと値のセットの `retail` を持つすべてのメッセージと一致します。図では、メッセージ **m2** 内のキーの 1 つは `retail` の値を持つ `business` です。メッセージ **m3** 内の 1 つのキーは、`["wholesale,retail"]` の値を持つ `business` です。したがって、**m2** および **m3** の両方がフィルターポリシーの基準に一致し、両方のメッセージが小売キューに配信されます。
+ 分析キューでは、Amazon Athena ですべてのレコードを受信したいため、フィルタポリシーは適用しません。

![\[Amazon SNS FIFO トピックがフィルターポリシーを使用して、メッセージコンテンツに基づいてメッセージをさまざまな Amazon SQS キューにルーティングする方法の例。メッセージ m1 と m3 は「ビジネス」キーが「卸売」に設定されているため卸売キューに配信され、メッセージ m2 は「小売」が設定されているため小売キューにルーティングされます。このように、ターゲットを絞ったメッセージ配信を実行し、各サブスクライバー関数が関連するメッセージのみを受信して、処理効率とデータの関連性を最適化できます。\]](http://docs.aws.amazon.com/ja_jp/sns/latest/dg/images/sns-fifo-filtering.png)


SNS FIFO トピックは、属性文字列値、属性数値、属性キーなど、さまざまなマッチング演算子をサポートします。詳細については、「[Amazon SNS メッセージフィルター処理](sns-message-filtering.md)」を参照してください。

SNS FIFO トピックは、サブスクライブされたエンドポイントに重複メッセージを配信しません。詳細については、「[FIFO トピックの Amazon SNS メッセージ重複排除](fifo-message-dedup.md)」を参照してください。