メーリングリストの受信者は、自分の Amazon SNS トピックの Eメールから、リスト上の全員のサブスクリプションを解除できるようになっています。サブスクリプションを解除できないようにするにはどうすればよいですか?
最終更新日: 2021 年 1 月 15 日
私は E メールアドレスを Amazon Simple Notification Service (Amazon SNS) トピックのメーリングリストに登録しました。リストのメンバーが、メッセージ内にあるサブスクリプション解除リンクを選択しました。これにより、メーリングリストに登録している全員の E メールアドレスのサブスクリプションが解除されてしまいました。サブスクリプションを解除できないようにするにはどうすればよいですか?
簡単な説明
Amazon SNS トピックの E メール受信者にメッセージを発信する場合、その受信者が受信する E メールのメッセージには、サブスクリプションを解除するためのリンクが記載されます。リンクの上部には、「このトピックの通知を停止したい場合には、以下のリンクをクリックし、または以下のリンクにアクセスして、サブスクリプションを解除してください」と記載されています。
誰かが自分の E メールアドレスをある Amazon SNS トピックに登録している場合に、その人がサブスクリプション解除のリンクを選択すると、その人の E メールのサブスクリプションのみが解除されます。
Amazon SNS トピックメーリングリストのメンバーがサブスクリプションを解除するためのリンクを選択すると、メーリングリストのメールアドレスのサブスクリプションが解除されます。その後、メーリングリストのすべてのユーザーに「サブスクリプションの解除の確認」メッセージが送信されます。
注: また、メールスパムフィルターも、メーリングリストのメールアドレスのサブスクリプションを解除できます。
このアクションを防止するには、サブスクリプション解除するための認証を必要とするサブスクリプションを作成し、トピックの所有者とサブスクリプションの所有者のみがサブスクリプション解除できるようにします。その場合、サブスクリプション解除のリンクを選択したユーザーは次のエラーを受け取ります。
「サブスクリプションを解除できません。
エラーのため、お客様のサブスクリプションを解除できませんでした。AWS 認証情報がないけれどサブスクリプション解除を希望される場合、またはAmazon SNS についてその他の質問がある場合は、Amazon の sns-question@amazon.com までお問い合わせください。」
解決方法
サブスクリプション解除の認証を必要とするサブスクリプションと既存のサブスクリプションを置き換えるには、最初に既存のサブスクリプションを削除します。次に、次の方法のいずれかを使用して新規サブスクリプションをセットアップします。
重要: 新規サブスクリプションを確認してセットアップを完了するには、サブスクリプション確認メールのメッセージへのアクセスが必要です。お客様のトピックのメーリングリストを登録している場合は、お客様の E メールアドレスを最初にメーリングリストに追加し、まずサブスクリプションを確認できるようにします。
認証を必要とする E メールサブスクリプションをセットアップし、サブスクリプション解除する(Amazon SNS コンソール)
1. Amazon SNS コンソールを開き、E メールアドレスをトピックにサブスクリプションします。
2. お客様の E メールの中から、AWS 通知で受信したサブスクリプション確認メッセージを検索します。通常、送信者は「no-reply@sns.amazonaws.com」です。
重要:サブスクリプション確認メールのリンクを使ってサブスクリプションを確認しないでください。
3. [サブスクリプションを確認] リンクから URL をクリップボードにコピーします。
4. 左のナビゲーションメニューにある Amazon SNS コンソールで、[サブスクリプション] を選択します。
5. [サブスクリプション] ページで「保留中の確認」のサブスクリプションを選択し、続いて [サブスクリプションを確認] を選択します。
6. [サブスクリプションを確認] ダイアログで、コピーしたサブスクリプション確認用 URL を貼り付けます。
7. [Confirm subscription] (サブスクリプションを確認) を選択します。
サブスクリプション解除するための認証を必要とする E メールサブスクリプションをセットアップする (AWS CLI)
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、最新の AWS CLI バージョンを使用していることを確認してください。
1. AWS CLI で、次のコマンドを実行します。
aws sns list-topics --region us-east-1
重要: トピックが別のリージョンにある場合は、region us-east-1 をトピックの正しい AWS リージョンに置き換えてください。
2. 出力で、サブスクリプションするトピックを検索し、そのトピックのTopicArn 値をクリップボードにコピーします。トピック ARN は次のようなものです: arn:aws:sns:us-east-1:0123456789012:my-topic
3. 次のコマンドを実行します。
aws sns subscribe --topic-arn arn:aws:sns:us-east-1:0123456789012:my-topic --protocol email --notification-endpoint test@amazon.com --region us-east-1
重要: topic-arn の値をコピーしたトピック ARN に置き換えてください。また、notification-endpoint の値をトピックにサブスクライブする E メールアドレスに置き換え、region をトピックの AWS リージョンに置き換えてください。
4. お客様の E メールの中から、AWS 通知で受信したサブスクリプション確認メッセージを検索します。通常、送信者は「no-reply@sns.amazonaws.com」です。
重要:サブスクリプション確認メールのリンクを使ってサブスクリプションを確認しないでください。
5. サブスクリプションを確認 リンクから URL をクリップボードにコピーして、テキストエディタに URL を貼り付け、トークンをコピーします。このトークンは、URL の途中にある ”Token=” の後ろから ”&Endpoint=” の前の部分にある一連の長い数字と文字の列です。例:
https://sns.us-east-1.amazonaws.com/confirmation.html?TopicArn=arn:aws:sns:us-east-1:123456789012:my-topic&Token=2336412f37fb687f5d51e6e241da92fcfd03593fd8dfa4bd75978a2ad7255afb88e71028f6a034d06f469f6c7ef2
0a609348542a0c68a9561c03a39d59beb02e2b7112c45f7ae26c344819b39cf07f15bef6c6c09766f9caa1fa55c236e7
7c33a50870bc027c74640ff64a7e99a67117&Endpoint=test@amazon.com
6. コピーしたトークンとステップ 2 の同じトピック ARN を使用して、以下のコマンドを実行します。
aws sns confirm-subscription --token 2336412f37fb687f5d51e6e241da92fcfd03593fd8dfa4bd75978a2ad7255afb88e71028f6a034d06f469f6c7ef20a609348542a0c68a9561c03a39d59beb02e2b7112c45f7ae26c344819b39cf07f15bef6c6c09766f9caa1fa55c236e77c33a50870bc027c74640ff64a7e99a67117 --topic-arn arn:aws:sns:us-east-1:0123456789012:my-topic --authenticate-on-unsubscribe true --region us-east-1
重要: トークンの値をコピーしたトークンに置き換えてください。また、topic-arn の値をステップ 2 と同じトピック ARN に置き換え、region をトピックの AWS リージョンに置き換えてください。