Amazon ElastiCacheイベントをAmazon SNSでフィルタリングして通知する
この記事はNHN テコラス Advent Calendar 2025 の 6 日目の記事です。
はじめに
皆様、ElastiCache のイベント通知は設定していますでしょうか?
ElastiCacheでは重要なイベントが発生した際に、Amazon SNSを使用してメッセージを発行できる機能があります。
イベントには基盤メンテナンスによるノード置換(Failover)やスナップショット作成など様々なイベントが含まれます。
通知内容のフィルタリングはLambdaなどを用いれば実装可能ですが、今回はできるだけ運用負荷を下げ、シンプルに実装するためSNSサブスクリプションフィルターを用いた特定のイベントのみ通知する方法をご紹介します。
構成
今回は下記のような構成で実装してみたいと思います。
- ElastiCacheのメンテナンス通知でSNSトピックにイベントを送信
- SNSトピックのサブスクリプションフィルターにてメッセージの除外/フィルタリングを実施

設定手順
SNS設定
まず、ElastiCacheから通知を受け取るSNSトピックを作成します。
トピックにサブスクリプションを登録する場合、注意点があります。
必ずプロトコルをJSON形式のメール(EMAIL-JSON)に設定してください。
メッセージ本文に対してフィルターを適用するには、SNSメッセージがJSON形式である必要があるためです。
![]()
「サブスクリプションの確認」からメールに記載されたSubscribeURLを入力することでサブスクリプションが有効になります。
![]()
サブスクリプションフィルター設定
SNSのサブスクリプション設定で、メッセージ本文をスコープとするフィルターポリシーを設定します。

例としてスナップショット作成通知のみ除外したい場合、以下の内容をJSONエディタに設定します。
{
"ElastiCache:SnapshotComplete": [
{
"exists": false
}
]
}
この設定により、ElastiCache:SnapshotCompleteキーを含む通知が存在しない場合のみ通知が届く(=当該通知を除外)ようになります。
exists句をtrueにすることでキーを含む通知が存在する場合のみ通知することも可能です。
文字列値の一致 – Amazon Simple Notification Service
ElastiCache設定
ElastiCache側のメンテナンス設定画面で、先ほど作成したSNSトピックを指定します。
指定できるSNSトピックは1つのみとなっています。

以上で設定は完了です。
通知メールの見た目について
通知文がJSON形式になるので少し見づらいです。
整形しようと試みましたが、現状SNS側で改善する方法はありませんでした。。
![]()
注意点
フィルターに指定できるキーは最大5つまで
SNSサブスクリプションフィルターには最大5つのキーしか設定できません。
Amazon SNS フィルターポリシーの制約 – Amazon Simple Notification Service
現状ElastiCacheイベントではキー/値の構造があるわけではないので文字列による一致のフィルターしか使えず、実質的に除外/個別通知できるイベント数に制限があります。
そのためより複雑な条件分岐や運用要件がある場合は、現時点ではLambda関数で個別実装するのが良いかと思います。
さいごに
基盤メンテナンスに伴うノード置換はHealth Dashboard等には表示されず、ElastiCacheのイベント通知でしか気付けないケースがあります。
そういった重要なイベントに気づける仕組みとして、本記事が参考になれば幸いです。
NHN テコラスの採用情報はこちら
テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!
Follow @twitterインフラエンジニアです。刹那的に生きてます。
Recommends
こちらもおすすめ
-
【イベント参加】Oracle HeatWave Meet in Tokyo
2025.12.4
Special Topics
注目記事はこちら
データ分析入門
これから始めるBigQuery基礎知識
2024.02.28

AWSの料金が 10 %割引になる!
『AWSの請求代行リセールサービス』
2024.07.16

