
ユーザーへの情報発信や、システムアラートなどの「通知」機能は、Webサービスや情報システムの運用において欠かせません。AWSは、複数のメッセージングサービスを提供しており、そのうちの1つが「Amazon SNS」です。Amazon SNSを活用すれば、問題が発生した際に通知を送り、管理者がすぐに気づけるシステムを構築できます。本記事では、Amazon SNSの概要や具体的なユースケースに加え、Amazon SQSなど他のAWSメッセージングサービスとの違いについてもご紹介します。
目次
Amazon SNSとは
「Amazon SNS(Simple Notification Service)」は、AWSが提供するメッセージングサービスです。プッシュ型のサービスであり、モバイル端末に対して通知を送る機能や、特定の行動をトリガーにして通知を送る機能を有しています。
Amazon SNSと他のAWSメッセージングサービスとの違い
AWSのメッセージングサービスは他にもあります。ここでは、Amazon SQSやAmazon SESとの違いについて簡単にご紹介します。
Amazon SNS とAmazon SQSとの違い
Amazon SNS とAmazon SQS(Simple Queue Service)との大きな違いは、通知の形式が「プッシュ型」か「プル型」か、という点です。
Amazon SQSは、受信者がメッセージを取得しにいく「プル型」のメッセージングサービスです。プル型のメッセージングサービスでは、受信者がポーリングと呼ばれる定期的な問い合わせを行い、メッセージを取得することが基本的な流れです。Amazon SQSでは、送信者が「キュー」と呼ばれる入れ物にメッセージを蓄積して保管しておき、受信者がキューに対してポーリングを行い、メッセージを取得するという仕組みになっています。
一方のプッシュ型であるAmazon SNSは、受信者がポーリングを行う必要がありません。大量のジョブを扱う場合は、キューに蓄積して保管できるAmazon SQSが適しています。反対にジョブが少ない場合は、ポーリングを行わずともメッセージを確認できるAmazon SNSが適しています。
Amazon SNS とAmazon SESとの違い
Amazon SNS とAmazon SESとの違いは、Eメール専用か否か、という点です。Amazon SES(Simple Email Service)は、Eメールの送信に特化したサービスです。対してAmazon SNSは、Eメールのほかにモバイル端末へのSMS(ショートメッセージ)など、複数の通知方法を設定できます。
大量のメールを送信する場合や、マーケティングのために魅力的なメールコンテンツを発信したい場合には、Amazon SESが適しています。メール以外の方法で通知を受け取りたい場合には、Amazon SNSを活用する必要があります。
Amazon SNSのメッセージング形式「Pub/Sub型」とは
続いて、Amazon SNSで稼働するメッセージング形式「Pub/Sub型」について、もう少し詳しく見ていきましょう。
Pub/Sub型とは
Pub/Sub型とは、非同期通信を可能とするメッセージング形式の1つです。Pub(Publisher/パブリッシャー)は送信者、Sub(Subscriber/サブスクライバー)は受信者を表します。1つのパブリッシャーは、複数のサブスクライバーに対して通知できます。
パブリッシャーは「トピック」という論理アクセスポイントを作成してサブスクライバーをまとめ、一括で通知を送信可能です。また、サブスクライバーが購読したいトピックを選び、通知を受け取ることもできます。
なお、トピックには標準トピックと、メッセージの順序付けや重複排除ができるFIFOトピックがあります。
Amazon SNS のPub/Sub型のメリット
Pub/Sub型のメリットは大きくわけて2つあります。
1つ目は、イベントをトリガーにして通知を行えるイベントドリブン(イベント駆動型)の仕組みを実現できることです。Amazon SNS のPub/Sub型では、HTTPやHTTPS、Amazon SQS、Eメールなどのプロトコルをサポートしており、さまざまな方式で通知できます。
2つ目は、配信のレイテンシーを軽減できることです。Amazon SNSはプッシュ型でポーリングの必要がないため、応答時間を短縮できます。
Amazon SNSの注意点
なお、Amazon SNSには、指定した時間に通知を送信する機能がありません。時間を指定したい場合には、リソースとアプリケーションを監視する「Amazon CloudWatch」や、イベント時にコードを実行する「AWS Lambda」との連携が必要になります。
AWS CloudWatch、AWS Lambdaについてより詳しく知りたい方は、あわせて以下の記事もご参照ください。
AWS運用管理の定番!「Amazon CloudWatch」でできること
サーバを立てずにプログラムを実行できる「AWS Lambda」とは?
また、Amazon SNSには解析機能がない点にも注意が必要です。Amazon SNS単体でも単純な配信数などは確認できますが、詳細なマーケティング分析を行いたい場合には、Amazon SESなど他のサービスを利用することになります。
Amazon SNSのユースケース
続いて、Amazon SNSが実装で使えるケースを2つご紹介します。
ファンアウト
ファンアウトとは、1つのイベントに対して複数のタスクを並列で処理することを指します。Amazon SNSとAmazon SQSを連携させれば、リソースを占有することなくファンアウトを実現可能です。
たとえばECサイトで、「商品が購入されたこと」をAmazon SNSのトピックとし、Amazon SQSのキューにメッセージを配信。在庫管理システムや会計システムなどが、メッセージを受け取ったのちにそれぞれ処理を行う、という仕組みを構築できます。
異常を感知してアラートを管理者に送る
Amazon SNSを使えば、AWSの他のサービスと連携して、異常が発生した際にアラートを送信する仕組みも構築できます。
例として、Amazon SageMakerを使った異常感知システムが挙げられます。Amazon SageMakerはAWSの機械学習モデルであり、データ分析を行えるプラットフォームです。画像や音声などをAWSに送信し、それらをAmazon SageMakerが解析して異常かどうか判断。異常と判断されればAmazon SNSへ通知を送り、Amazon SNSから管理者に通知される、という仕組みを構築できます。
Amazon SNSの料金体系
Amazon SNSの料金体系は従量課金制で、基本料金等は発生しません。月額料金は、使用したトピックのタイプに基づいて、APIリクエストの数、配信先のエンドポイントと配信回数、データ転送、その他追加機能によって決定します。また、利用するリージョンによって基本料金は異なります。
〈アジアンパシフィック(東京)リージョン・標準トピックの場合〉
- API リクエスト:100万リクエストごとに 0.50 USD(毎月最初の100万リクエストは無料)
- 配信先のエンドポイントと配信回数
エンドポイントの種類 無料利用枠 料金 モバイルプッシュ通知 100万件の通知 0.50 USD /100万通知 Email/Email-JSON 1,000 件の通知 2.00 USD /10 万通知 HTTP/HTTPS 10 万件の通知 0.60 USD /100 万通知 Amazon Kinesis Data Firehose - 0.258 USD /100万通知
※Amazon Kinesis Data Firehose は別途利用料金が必要Amazon SQS 無料。ただしAmazon SQSの利用には別途利用料金が必要。また、Amazon SQSへのデータ転送料金が必要。 AWS Lambda 無料。ただし、AWS Lambdaは別途利用料金が必要。また、AWS Lambdaへのデータ転送料金が必要。 - データ転送
データ受信 無料 データ送信 最初の9.999 TB ...0.114 USD/GB
次の 40 TB ...0.089 USD/GB
次の 100 TB ...0.086 USD/GB
150 TB/月以上 ...0.084 USD/GB - その他
メッセージのフィルタリングやアーカイブ、データ保護が必要である場合は、有償となります。
FIFO トピックの場合など、他にも細かく料金が設定されています。詳しくは、下記をご参照ください。
参考:料金|Amazon SNS
まとめ
イベントドリブンでプッシュ通知やメッセージを配信できるAmazon SNS。スケーリングのしやすさや高耐久性、強固なセキュリティといったAWSのメリットを享受しながら、低レイテンシーの通知の仕組みを実現できます。とくにAmazon SNSは、異常が発生した際にアラートを上げる仕組みを実装することに適しています。問題発生時にも迅速に対応できるシステムづくりに、うまく活用していきましょう。
Amazon SNSを始め、AWSの各種サービスの導入を検討中の方や、AWSへの移行を検討している方は、TOKAIコミュニケーションズまでお気軽にご相談 ください。AWSの導入実績豊富な当社が、お客様にあった最適なプランを提案いたします。
関連サービス
おすすめ記事
-
2020.06.23
Amazon Connectで在宅勤務でも対応できる問合せ窓口を立ち上げてみた
-
2020.08.17
Datadogで実現するモニタリングとオペレーションのオートメーション化
-
2020.04.27
Amazon FSx for Windows ファイルサーバーへの移行と活用方法
-
2020.06.11
Amazon WorkSpacesとは?その特長をまとめてみた
-
2020.06.23
AWSのDevOpsサービスと当社マネージドサービスを活用したDevOpsの実装①~概念編~