Amazon SNS のサブスクリプション解除リンクを無効化もしくは削除する方法を教えてください

2021.09.17

困っていた内容

Amazon SNS でメーリングリスト宛にメール通知を設定していますが、受信者のひとりがサブスクリプション解除リンクを誤クリックし、メール通知が解除される事故が発生しました。再発防止としてサブスクリプション解除リンクの無効化もしくはサブスクリプション解除リンク自体を削除したいのですが、どうしたら良いでしょうか。

どう対応すればいいの?

作成時のサブスクリプション確認を AWS マネジメントコンソールから実施してください。

サブスクリプションは次のいずれかの方法で確認できます。

  1. 確認メール内のリンクをクリック
  2. 確認メール内のリンクをマネージメントコンソールに入力
  3. AWS CLI などで確認メール内のリンクに含まれるトークンを実行

もっとも手軽な「1.」の方法で確認した場合、その後通知されるメール内のサブスクリプション解除リンクをクリックすると、認証不要で誰でもメール通知を解除できます。

一方で、「2.」もしくは「3.」の方法で確認した場合、サブスクリプション解除リンクは同様にメール内に記載されますが、クリックしてもエラーとなり解除できません。(AWS マネジメントコンソールから削除が必要)

やってみた

誤クリックによりメール通知が解除された状態で、「2. 確認メール内のリンクをマネージメントコンソールに入力」を実施します。

「3. AWS CLI などで確認メール内のリンクに含まれるトークンを実行」の実施方法は次の記事をご確認ください。

Amazon SNS メール通知の「unsubscribe」リンクを無効化する | DevelopersIO

手順

  1. 誤って解除したサブスクリプションを削除する
  2. 新規にサブスクリプションを作成する

新規に登録する場合や解除したサブスクリプションが自動削除されている場合は手順2から実施してください。

1. 誤って解除したサブスクリプションを削除する

Amazon SNS コンソールから、[サブスクリプションの作成] を選択します。

※「削除済み」のサブスクリプションは変更・削除できないため、一度登録状態に戻します。
参考:Amazon SNS トピックのサブスクリプションの削除に関するトラブルシューティング

解除したサブスクリプションと同じトピック、エンドポイントを入力して、[サブスクリプションの作成] を選択します。

設定したメールアドレスにサブスクリプション確認メールが届きますので、「Confirm subscription」を選択します。

「Subscription confirmed!」が表示されることを確認します。

Amazon SNS コンソールから、確認したサブスクリプションを選択し、[削除] を選択します。

[削除] を選択します。

2. 新規にサブスクリプションを作成する

Amazon SNS コンソールから、[サブスクリプションの作成] を選択します。

トピック、エンドポイントを入力して、[サブスクリプションの作成] を選択します。

!リンクはクリックしない!
設定したメールアドレスにサブスクリプション確認メールが届きますので、「Confirm subscription」を右クリックして、リンクURLをコピーします。
※誤ってクリックした場合は、一度削除してやり直しです。

Amazon SNS コンソールから、作成したサブスクリプションを選択し、[サブスクリプションの確認] を選択します。

コピーしたURLを入力し、[サブスクリプションの確認] を選択します。

「サブスクリプションが正常に確認されました」と表示されることを確認します。

動作確認

サブスクリプション解除リンクをクリックしても、「Subscription not removed」と表示されて解除に失敗します。

サブスクリプションを解除したいときは?

Amazon SNS コンソールから、サブスクリプションを選択し、[削除] を選択します。

参考資料