AWS SNSのサブスクリプションフィルターポリシーで通知をフィルターする方法

AWS SNSのサブスクリプションフィルターポリシーで通知をフィルターする方法

SNSのサブスクリプションには、「サブスクリプションフィルターポリシー」というのがあり、この機能を使用することによって通知をフィルターすることが出来ます。

例えば通知対象が「生死」として、「生きている」、「死んでいる」をメールなどのエンドポイントに通知するとします。

生きていることを毎日通知してもらう必要はないので、死んでいる通知のみ受け取りたいという場合サブスクリプションフィルターを利用します。

一旦どちらの情報もうけとるサブスクリプションフィルターを設定してみます。

以下のサブスクリプションフィルターを設定してサブスクリプション登録します。

{
  "notify": [
    "LIFE",
    "DEATH"
  ]
}

マネジメントコンソールが以下のようになっていればOKです。

AWS SNSのサブスクリプションフィルターポリシーで通知をフィルターする方法

エンドポイントはEメールにしておけばわかりやすいです。

メッセージ発行

本当はプログラムでメッセージ発行しますが、確認だけなのでマネジメントコンソールからメッセージ発行を行います。

メッセージ属性の名前に「notify」、値に「LIFE」を設定します。

AWS SNSのサブスクリプションフィルターポリシーで通知をフィルターする方法

メールが届くことが確認できます。

次に死んだ情報を通知します。

メッセージ属性の名前に「notify」、値に「DEATH」を設定します。

AWS SNSのサブスクリプションフィルターポリシーで通知をフィルターする方法

メールが届くことが確認できます。

サブスクリプションフィルターの設定変更する

今の状態ではどちらの状態の通知もメールされますので、死んだときだけメール通知するようにサブスクリプションフィルターの設定を変更します。

AWS SNSのサブスクリプションフィルターポリシーで通知をフィルターする方法

“LIFE”を削除しました。この状態で生きている情報を通知してみます。

メッセージ属性の名前に「notify」、値に「LIFE」を設定します。

AWS SNSのサブスクリプションフィルターポリシーで通知をフィルターする方法

メールが届きません。これで”DEATH”のみメールが送信されるようにフィルターされていることがわかります。

確認の為、メッセージ属性の名前に「notify」、値に「DEATH」を設定します。

AWS SNSのサブスクリプションフィルターポリシーで通知をフィルターする方法

メールが届くことが確認できます。これで正常にフィルターがされていることが確認できます。

上限制約

リージョンごとにサブスクリプションフィルターポリシーは200までが上限とのことです。

限度引き上げリクエストにより上限を上げることは出来るようです。

Amazon SNS サブスクリプションフィルターポリシー - Amazon Simple Notification Service
サブスクリプションフィルターポリシーの仕組みについて説明します。

コメント

タイトルとURLをコピーしました