はじめに
いきなりですが、Amazon SNSがどのようなサービスか説明できますか?
「メッセージを通知するサービス?」と思う方が多いと思いますが、Amazon SQSなどとの違いを合わせて
解説することができますか?
私が学習を進めている中で、この2つの使い分けが曖昧になってしまったことがあったので、
Amazon SNSについて整理しなおしたことを本記事に執筆させていただきます。
Amazon SNSとは?
ざっくり解説すると…
・フルマネージド型のメッセージングサービス
・ユーザーアクションをきっかけ(トリガー)にしたメッセージ通知が行える
Amazon SNSは、上記のようなサービスとなります。
そう思われた方、ご安心ください!もう少しシンプルに解説していきます。
簡単に言うと、Amazon SNS(Amazon Simple Notification Service)は
サービスとサービスの間で、メッセージのやり取りを行うサービスです。
郵便屋さんをイメージしてもらえると分かりやすいです!
私たちが手紙を送りたい時、郵便局で宛先に振り分けられて配送されますよね!
このように「出す側」と「受け取る側」の中間で、「メッセージのやり取りをサポート」する役割があります。

次に、AWSのサービスを用いて、例を見てみましょう!
パブリッシャーはAmazon SNSにメッセージを送信します。
Amazon SNSはそのメッセージをサブスクライバーに連携(送信)します。

SNSでは、
・メッセージの発信元を ”パブリッシャー(Publisher)”
・メッセージの受信側を”サブスクライバー(Subscriber)”と呼びます。
サブスクライバーには、各AWSサービスの他にもEmail連携やHTTP連携などがあります。
上記の通り、Amazon SNS(Amazon Simple Notification Service)は
サービスとサービスの間で、メッセージのやり取りを行っていますね!
Amazon SNSのユースケース
Amazon SNSは、
ユーザやアプリケーションの何らかのアクションをトリガー(きっかけ)に、Lambdaの起動やメッセージ通知、SMSなどによるモバイル通知が行えます。
例として、Amazon CloudWatch とAmazon SNSを統合した例を見てみましょう!
EC2インスタンスのCPUの使用率が80%を超えたら、
Amazon CloudWatch のメトリクスからアラームが発砲されます。
その通知をAmazon SNSが受け取り、メールやSlackなどに連携がされます。

メトリクスとは?
メトリクスとは、Amazonで取得・監視する項目のこと。
CPU使用率・インスタンスボリュームストアからの読み取り回数・メモリ使用率(カスタムで設定が必要)などが項目として設定可能。
SNSトピックについて
Amazon SNSには、トピックと言われるアクセスポイントがあります。
各トピックに対して複数のサブスクライバーを登録することで、並列で同じメッセージを処理させることが可能になります。

Amazon SQSとの違いについて
Amazonのメッセージングサービスには、Amazon SQSというものもあります。
では、Amazon SQSとAmazon SNSの違いはなんでしょうか?
それは、プル型であるかプッシュ型であるかということです。
- Amazon SNS:受信者にメッセージを一方的に送りつけるプッシュ型のサービス
- Amazon SQS:受信者がポーリングをしてメッセージを取得しにくるプル型のサービス


Amazon SQSについては、以下の記事でまとめていますので、ぜひご覧ください!
Amazon SESとの違いは?
AWSには他にも、Amazon SES(Amazon Simple Email Service)というサービスがあります。
Amazon SESはどういったサービスかと言うと、
Eメールの送信が得意で、Eメールで充実したコンテンツを届けたい場合に利用できます。
ただ、Amazon SNSのようにEメール以外の通知手段は選択できません。
詳しくはAWSの公式サイトをご覧ください。
最後に
本記事では、Amazon SNSについて解説してきました。
Amazon SNSはプッシュ型でユーザーアクションをきっかけ(トリガー)にしたメッセージ通知が行えるサービスでした。
Amazon SQSとの違いに注意しながら、上手に活用していきましょう!