AWS SNS Eメール通知のUnsubscribeリンクを無効化する

これはなに?

AWS SNSを使ったEmail通知のUnsubscribeリンクを無効にする手順。
AWSのシステム通知をAWS SNSを利用してEメール通知することがよくあると思うのですが、メール内に記載されているUnsubscribeを間違えてクリックしてしまい、メール通知が無効化されてしまうことが運用シーンでよくあります。
そのため、Unsubscribeをクリックしても、メール通知を無効化しないように設定変更してみます。

設定方法

AWS CLIを利用して、Unsubscribe のリンクを無効化にしていきます。
方法としては、サブスクライブ承認時に、「authenticate-on-unsubscribe」オプションを指定してあげれば、リンクが無効化されます。

1. サブスクライブ発行

aws sns subscribe --topic-arn <sns topic arn> --protocol email --notification-endpoint <mail address>
  • sns topic arn : SNSのトピックARN
  • mail address: SNSに登録したいメールアドレス

f:id:ykoomaru:20201127163220p:plain

2. Tokenの確認

メールを確認し、メール内のハイパーリンクを右クリックしコピーします。 f:id:ykoomaru:20201127163752p:plain

以下のような文字列が取得できると思うので、your tokenの箇所をメモします。

https://sns.ap-northeast-1.amazonaws.com/confirmation.html?TopicArn=arn:aws:sns:ap-northeast-1:xxxxxxxx:test-topic&Token=<your token>&Endpoint=xxxxxx@gmail.com

3. サブスクライブ承認

--authenticate-on-unsubscribe true のオプションで、Unsubscribe のリンクを無効化しています。

aws sns confirm-subscription --topic-arn <sns topic arn> --token <your token>   --authenticate-on-unsubscribe true
  • sns topic arn : SNSのトピックARN
  • your token: 2で取得したToken文字列

以上で設定は完了です。

動作確認

Unsubscribe のリンクを無効化したので、リンクをクリックして、メール登録が解除されないことを確認します。

メール内のUnsubscribe のリンクをクリックしてみます。 f:id:ykoomaru:20201127165531p:plain

エラーが表示されて、メール登録が解除されていないことが確認できます。 f:id:ykoomaru:20201127165308p:plain

最後に

誤ってUnsubscribeしてしまうと重要な通知を見逃してしまう可能性があるので、メーリングリストをAWS SNSに登録している場合は事故防止のためにこの設定を入れたほうがいいなと感じました。