AWSのSNSとは
AWS SNS(Simple Notification Service)は、AWSが提供する分散型のフルマネージドのメッセージングサービスです。AWSを利用してサービスを提供する場合、ユーザとのやり取りが必要になるケースがあります。
ユーザへの通知手段としては、Eメール以外にもSMSなど様々な配信方法が求められ、こうした配信サービスを自前で構築すると大変ハードルが高くなります。またサービスの拡大に伴い、配信システムの管理も重要になっていきます。
AWS SNSはこうした問題を一挙に解決できるオプションサービスの1つです。この記事では、AWS SNSの特徴、基本的な機能や活用方法などについて解説していきます。
【参考】:Amazon SNS(サーバーレスアプリのための pub/sub メッセージングサービス)| AWS
AWS SNSの概要
AWS SNSを利用するにあたって、特徴や機能、気を付ける点などについて確認しておきましょう。
AWS SNSの特徴
AWS SNSはメッセージング(メール送信)サービスですが、具体的にはどのような特徴があるのかを見ていきましょう。実際の利用シーンや使い方を想定しながら理解を深めてください。
■ ユーザのアクションに対する通知 サービスを利用したユーザのアクションごとにメッセージ通知を行うことができます。たとえば、ユーザがアカウント情報を更新したり、商品を購入したりした際に、その行動をトリガーにして通知を行うことができます。
■ プッシュ通知 ユーザのスマートフォンに対してプッシュ通知を送ることができます。プッシュ通知は即時性があり、開封率が高く、販売促進面などで高い効果を期待できます。特にセール情報や新製品情報の発信は購入につながる可能性が高いと言われています。
■ セキュアなメッセージング メッセージングでは個人情報や購買情報などのセキュアな情報が含まれることがあり、漏洩リスク対策が求められます。AWS SNSではメッセージの暗号化に対応しており、セキュアな情報を安心して通知することができます。
■ 利用のしやすさ AWS SNSはAWSのマネジメントコンソールを利用して、簡単に各種設定を行えます。このため、1からメッセージング機能を構築する必要がなく、アプリケーションやサービスの開発工数、コストの低減につながります。
■ AWS CLIを使用してAWS SNSの機能にアクセス AWS SNSはAWSのコマンドインターフェース、「AWS CLI」を用いてAWS SNSの各機能に簡単にアクセスすることができます。AWS SNSで用いるAWS CLIのコマンドを一覧表示したい時には、次のコマンドで利用できるAWS CLIが表示されます。
aws sns help
【参考】:AWS CLI での Amazon SNS の使用 - AWS Command Line Interface
■ Amazon SESとの違い AWSのメッセージングサービスとしては、他に「AWS SES」があります。AWE SES(Simple Email Service)はEメール送信に特化したサービスで、Eメールを中心とするコンテンツ配信などを行う場合に適しています。
AWS SNSはプッシュ型の通知を得意としていますが、メッセージの容量に制限があり、長文や充実したコンテンツの配信には適しません。
他、AWSのメッセージングサービスとしては、「AWS SQS」がありますが、AWS SQS(Simple Queue Service)はプル型のメッセージ処理を特徴としており、受け取ったメッセージのキューイング処理を行います。
【参考】:Amazon SES(高可用性で低価格なEメール送信サービス)| AWS 【参考】:Amazon SQS(サーバーレスアプリのためのメッセージキューサービス)| AWS
AWS SNS利用上の注意点
AWS SNSを利用する際には、気を付けることがあります。AWS SNSは活用の仕方によっては大変優れたサービスですが、利用に当たっては注意すべきことがあります。AWS SNSの利用上の注意点を理解した上でサービスを利用するようにしましょう。
■ 定時送信ができない AWS SNS自体には所定の時刻に送信するような機能がありません。メールマガジンなどを配信する場合に、決められた時間に送信する機能は必須とも言えます。
その対応としては「AWS Step Functions」を利用して、タスクタイマーを実装するなどの方法がありますので、定時送信が必要な方はAWS SNSと併せてAWS Step Functionsの採用を検討してみてください。
【参考】:AWS Step Functions とは? - AWS Step Functions
■ 解析機能がない AWS SNSには解析機能がありません。 単純な配信数、配信成功率などのような統計はコンソールで表示できますが、送信したメールの開封率カウントや集計などの機能がありません。マーケティング分析に重きを置きたい場合には、他のサービスとなるAWS SES(Eメール送信サービス)の利用を検討する必要があります。
【参考】:Amazon CloudWatch(リソースとアプリケーションの監視と管理)| AWS
AWS SNSの対応プロトコル
AWS ANSのトピック※でサブスクライブ(メッセージを受信すること)されているサブスクライバー(メッセージを受信するアプリなど)は、AWS SNSでサポートされているプロトコルを使用してメッセージングを行っています。ここではAWS SNSでサポートされている主なプロトコルを3つ紹介します。
※トピックとは、通信チャネルとして機能する論理アクセスポイントのことです。
【参考】:Amazon SNS トピックを作成する - Amazon Simple Notification Service
■ HTTPプロトコル HTTP(Hypertext Transfer Protocol)は主にWebブラウザからWebサーバにアクセスする際に利用されるプロトコルです。他にHTTPはデータ提供をAPIを介して行ったり、リモートアクセスに利用したりします。また、HTTPのセキュリティを強化したHTTPSプロトコルもAWS SNSではサポートされています。
■ SMSプロトコル SMS(Short Message Service)は電話番号を使ってSMSメッセージを送信する際に利用するプロトコルです。 SMSは日本語の場合、70文字程度のショートメッセージを指定された電話番号に送信する仕組みです。
携帯電話番号はあらかじめ登録された本人であることが確認ができますので、SMS認証という仕組みがよく利用されますが、SMS認証の仕組みを構築すると大変コストが掛かるため、SMS認証を検討している方はAWS SNSの利用をおすすめします。
■ AWS Lambda AWS Lambdaはサーバレスでコードを実行できるプロトコルです。AWS Lambdaの利用で、プログラムを実行するためのサーバが不要となり、開発者は実行環境を意識せずに開発に専念できるというメリットがあります。
【参考】:AWS Lambda(イベント発生時にコードを実行)| AWS
AWS SNSの用途
AWS SNSが手軽で便利に使えるメッセージサービスであることは理解できたと思いますが、ではどのようなケースで利用すると効果が大きいのかを考えてみましょう。
■ 大量ユーザへの一斉通知 Webサービスではいかに多くの会員を有するかが評価ポイントになります。しかし、多くの会員を獲得し、増加した会員数を維持するには、会員に対する通知やキメの細かいフォローが重要なカギとなります。
特に数10万、数100万人単位のユーザが利用しているスマートフォンアプリは、いち早く、確実に全員にメッセージを配信できる機能が求められます。その点、AWS SNSは世界中のスマートフォンユーザに対し、手軽にプッシュ通知が実装でき、スケーラビリティの観点からも十分、要求に応えてくれるでしょう。
■ 受発注在庫管理 物流管理や配送システムでは商品の動きに対応した効率的な作業が求められます。受注、検品やピッキング、在庫引当などのイベントをトリガーに通知を行い、リアルタイムで管理することが可能になります。ネット通販分野ではAWS SNSのメッセージング機能を利用した受発注在庫管理システムの構築に有効です。
AWS SNSの料金
AWS SNSを利用すると、どの程度の料金が掛かるのでしょうか?AWSにはサービス毎にあらかじめ料金を見積もる仕組みが用意されていますので、予算確保のためにも必ず料金シミュレーションをしておきましょう。
無料利用枠の利用
AWS SNSでは、基本料金や料金の前払い費用は一切ありません。使った分だけ支払う完全従量課金制となっています。またモバイルプッシュ通知では月間100万件まで、SMSだと100件まで、Eメール送信は1,000件までは無料利用枠を行うことができます。
そのため、テスト段階であれば、大方無料で利用することが可能です。
SNSの料金体系
AWS SNS の標準トピック(論理アクセスポイント)内での料金は、1カ月の間に作成された API リクエストの数と、エンドポイントへの配信回数に基づいて決定されます。また、エンドポイントへの配信では、その種類によって料金は異なります。
たとえば、毎月100万件までのモバイルプッシュ通知では無料ですが、100万件の上限を超えると、超えた 100万のリクエスト単位に 0.50USDが加算されます。 仮に月に500万件のプッシュ通知を利用すると、(500万件-100万件)× 0.50USD/100万件 = 2.00USDとなります。
【参考】:料金 - Amazon SNS | AWS 【参照】:AWS 料金見積りツール
AWS SNSを有効に活用しよう
ここまで、AWS SNSの概要、利用上の注意点、対応するプロトコル、用途例などについて紹介してきました。Amazon SNSは、メッセージングサービスとしてはシンプルで、定時送信ができない、マーケティング分析機能が弱いといった弱点はあるものの、シンプルさゆえに拡張性が高いことが特徴です。
また、同じAWSのサービスを組み合わせることで、高額な万能タイプのメッセージアプリを超える機能を発揮できますので、AWSの各種サービスの研究や要件定義を行った上で、無料利用枠を活用して、しっかり評価を行った後に正式導入を行うとよいでしょう。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから