Amazon SNS編~unsubscribeリンクを無効化させてみよう!~


こんにちは!新人のKです!
今回はSNS通知メールのunsubscribeリンクを無効化させる方法をご紹介いたします。

SNSからメールを受信したことのある方はご存知かと思いますが、SNS通知メールの文末に、下記のようなリンク(unsubscribeリンク)があるかと思います。

unsubscribe

このリンクをクリックし、ブラウザで下記のようなメッセージが出力された場合・・・

Subscription removed

以降、SNSからメールを受け取る事が出来なくなってしまいます。
CloudWatchでStatus check等を行なっており且つSNS通知メールの設定をしていた場合、最悪インスタンスの障害発生に気づかないという危険性があります。

このような事態に陥らないよう、今回ご紹介する方法でunsubscribeリンクを無効化させておきましょう。

AWS CLIインストール

1. Unsubscribeリンクの無効化は、CLIで行ないますので、まずはCLIをインストールしておきましょう。

※CLIのインストールは、下記ページの【AWS CLIインストール】を参考にしてください。
Amazon ELB編~ELBに設定したSSL証明書の削除~

Cloudwatch&SNS topic作成

 2.下記を参考にCloudWatchを作成してください。

(下記ページの手順どおりCloudWatchを作成すると、SNSが新規作成されます。)
  この時、「4.Send a notification to:・・・」の項目の所で、For at least:「1」consecutive period(s)of 「1munutes」と設定してください。

Amazon EC2編~EC2インスタンスを監視するには~

※ 既にCloudwatchとSNSのtopicを作成している場合、一度SNSのtopicをdeleteする必要があります。以下の手順を実行して下さい。

・ 過去に受け取っているSNSのアラート通知メールを探し、unsubscribeのリンクをクリックして下さい。
(アラート等でSNSからメールを受け取った事がない場合は、一番最初に受け取っているメール「AWS Notification – SubscriptionConfirmationというタイトルのメール」の本文内にあるConfirm subscriptionのリンクをクリック後、ブラウザに表示されるclick here to unsubscribeのリンクをクリックしてください。)

・「AWS Notification – Unsubscribe Confirmation」のメールを受信。
・マネージメントコンソールで、該当SNSの「Subscription ID」が「Deleted」である事を確認。

unsubscribe リンク無効化

それでは、unsubscribeのリンクを無効化させます。

3.まず先ほどCloudWatch作成時に受け取った「AWS Notification – Subscription Confirmation」のメールを開き、「Confirm subscription」のリンクをコピーし、テキストファイルに貼り付けます。

※CloudWatchを既に作成していた方は、「AWS Notification – Unsubscribe Confirmation」というタイトルのメールの「Resubscribe」のリンクをコピーし、テキストファイルに貼り付け。
※誤って「Confirm subscription」、「Resubscribe」のリンクをクリックしてしまった場合(ブラウザに「Subscription confirmed!」と表示された場合)、前述の「 【Cloudwatch&SNS topic作成】」の「既にCloudwatchとSNSのtopicを作成している場合・・・」の手順を実施してください。

4.コマンドプロンプトを起動し、下記コマンドを投入します。
–tokenと–topic-arnの値は先ほどコピーしたリンク内に記載されていますので、コピーしてコマンドを完成させてください。

※confirm-subscription の–authenticate-on-unsubscribeオプションをtrueとする事で、topicの所有者(Subscriptionの所有者)のみ、unsubscribeさせる事が出来るようになります。(SNSのunsubscribeリンクでは、topicをdeleteできなくなる)

5.上記コマンド投入後、マネージメントコンソールにて該当SNSの「Subscription ID」が設定されている事を確認。

Subscription ID

unsubscribe リンク無効化 確認

 さて、それではリンクが無効化されている事を確認しましょう。

6.SNSからアラートメールを送信します。
(前述の作業でCloudWatchの作成から実施した方は、該当インスタンスのリブートを行なって下さい。リブートを行なえばSNSよりメールを受信する事ができます)
 
  ※新たにSNSからメールを送信したくないという方は過去のメールを開き、以下を実施してください。

7.アラートメール内に記述されている、unsubscribe リンクをクリックします。

unsubscribe link

 8.下記画面が表示されれば、成功です!

Subscription not removed

いかがでしたでしょうか?
これでうっかりunsubscribeのリンクをクリックしても、SNS通知が削除される事はありませんね。
それでは、また次回!お楽しみに!