SNS トピックの通知先を変更する方法を教えてください

2021.11.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

SNS トピックのサブスクリプションで指定している通知先メールアドレスを変更したいです。

SNS コンソールで通知先を変更しようと思ったのですがメールアドレスを入力する箇所が見つかりません。

どうやって通知先を変更したらいいでしょうか?

どう対応すればいいの?

Amazon SNS トピックの通知先(エンドポイント)を変更する方法はございません。
サブスクリプションを解除し、再度登録し直す必要があります。

SNS コンソールでは次のとおり操作してください。

サブスクリプションの解除方法

  1. SNS コンソールのトピックへアクセス
  2. 対象のトピック名をクリック
  3. 変更したいサブスクリプション対象を検索(エンドポイントのメールアドレスなどを検索欄へ入力)
  4. 変更したいサブスクリプションをチェック
  5. [削除] ボタンをクリック
  6. [削除] ボタンをクリック

サブスクリプションの再登録方法

  1. SNS コンソールのトピックへアクセス
  2. [サブスクリプションの作成] をクリック
  3. [プロトコル] を選択
  4. [エンドポイント] を入力
  5. [サブスクリプションの作成] をクリック
  6. (プロトコルが E メールなら)宛先のメールの Confirm リンクをクリック

どうして変更できないの?

Amazon SNS のような Pub/Sub メッセージングモデルは、以下のキーワードを理解することが重要です。

  • メッセージ: 送信したい情報、Amazon SNS では基本的に JSON 文字列が該当する
  • パブリッシャー(プロデューサー、出版者): メッセージの送信元
  • サブスクライバー(コンシューマー、購読者): メッセージの送信先
  • エンドポイント: メッセージの宛先
  • トピック(ブローカー): メッセージを仲介し、出版(パブリッシュ)するもの

トピックを使ったメッセージ配信は、以下のような流れになります。

  1. サブスクライバーは自分の興味のあるトピックを購読します。
  2. パブリッシャーは送信先や送信方法を考慮せずに、トピックへメッセージを送信します。
  3. トピックはサブスクライバーが希望する方法(プロトコル)で、全サブスクライバーへメッセージを送信します。

以上を踏まえて、サブスクライバーが意図せずにエンドポイントが変更できてしまうと、興味のない、購読した覚えのないメッセージが届く状態となります。
購入した覚えのない定期便が届けられるようなイメージです。

Amazon SNS は Pub/Sub メッセージングモデルにしたがって、管理者側でトピックのエンドポイントを変更できず、サブスクライバーの意思によって購読/解除する仕組みになっていると思われます。

よって、エンドポイントを変更するにはサブスクライバーが購読を「解除」してから、再度「購読」し直す流れが正しいフローになります。

運用観点でのワンポイント

管理者の視点では「通知先を変更したいだけなのに、手間がかかるなー。」と思われるかもしれません。
しかしながら通知先の変更が管理者側でできてしまうと、メッセージングモデルの仕組みに綻びが生じます。

運用者も管理者視点だけではなく、利用者視点も持てると理解が捗ります。

参考資料