Amazon SNS のサブスクリプションフィルターポリシーの問題をトラブルシューティングするにはどうすればよいですか?
最終更新日: 2021 年 8 月 26 日
私の Amazon Simple Notification Service (Amazon SNS) サブスクリプションフィルターポリシーが機能していません。この問題をトラブルシューティングするにはどうすればよいですか?
解決方法
重要: サブスクリプションフィルターポリシーの追加または変更を有効にするには、最大 15 分かかります。
Amazon SNS トピックにパブリッシュされたメッセージにメッセージ属性が含まれていることを確認します。
サブスクリプションフィルターポリシーは、メッセージ本文ではなく、メッセージ属性のみをフィルタリングできます。メッセージで MessageAttributeValue を空のままにすると、フィルターポリシーはそのメッセージを拒否します。
属性が含まれていないためにフィルターポリシーでメッセージが拒否されたかどうかを確認するには、Amazon SNS の Amazon CloudWatch メトリクスで次のメトリクスを確認します。
NumberOfNotificationsFilteredOut-NoMessageAttributes
詳細については、「Amazon SNS メッセージフィルタリング」を参照してください。属性付きのメッセージを送信する方法のチュートリアルについては、「AWS マネジメントコンソールを使用して Amazon SNS トピックにメッセージをパブリッシュするには」を参照してください。
Amazon SNS トピックにパブリッシュされたメッセージが、必要なフィルターポリシーの制約を満たしていることを確認します。
制約の完全なリストについては、「ポリシーの制約のフィルタリング」を参照してください。
サブスクリプションフィルターポリシーの属性が正しく設定されていることを確認します。
サブスクリプションフィルターポリシーの属性を定義すると、サブスクリプションエンドポイントは、定義された属性を含むメッセージのみを受信します。詳細については、「属性文字列値の一致」および「属性数値の一致」を参照してください。
属性の不一致または不適切なフォーマットが原因でフィルターポリシーが拒否したメッセージを表示するには、次の Amazon SNS の CloudWatch メトリクスを確認します。
- NumberOfNotificationsFilteredOut
- NumberOfNotificationsFilteredOut-InvalidAttributes
注:numberOfNotificationsFilteredOut メトリクスは、メッセージ属性がポリシー属性と一致しなかったことが原因でフィルターポリシーが拒否したメッセージを表示します。numberOfNotificationsFilteredOut-InvalidAttributes メトリクスは、メッセージ属性が有効な形式ではなかったことが原因でフィルターポリシーが拒否したメッセージを表示します。