バナー画像

AWSのSNS(Amazon Simple Notification Service)についてまとめています。

AWSのSNSは、多対多対応のフルマネージド型メッセージングサービス

Amazon Simple Notification Service (Amazon SNS) は、アプリケーションとアプリケーション(A2A)、アプリケーションと個人(A2P)間の通信に使える、フルマネージド型メッセージングサービスです。

A2A での pub/sub 機能で、分散型システムやマイクロサービス、イベント駆動型のサーバーレスアプリケーションでプッシュベースの、多対多メッセージングを利用できます。Amazon SNS トピックを使用すると、メッセージ発信側のシステム(パブリッシャー)は、多数のメッセージ受信側システム(サブスクライバーシステム)に対しメッセージを発信し、並列処理を行えます。対象システムは、Amazon SQS キュー、AWS Lambda 関数、HTTPS エンドポイント、 Amazon Kinesis Data Firehose など。A2P 機能を使用すると、SMS、モバイルプッシュ、E メールを介して、大量ユーザーに対しメッセージ送信できます。

関連)Amazon SNS(サーバーレスアプリのための pub/sub メッセージングサービス)| AWS

Amazon SNSの利点

アプリケーションの最新化と疎結合化が可能。

Amazon SNS を使用して、アプリケーションを機能ごとに小さな単体コンポーネントに分離できます。コンポーネント間をメッセージでつないで連携させるんですね。そうすると、開発、デプロイ、メンテナンスが容易になります。アプリケーションの pub/sub イベント駆動型アーキテクチャを活用して、パフォーマンスや信頼性の向上、各コンポーネントの個別スケーリングが可能になります。

Amazon SNS で、数百万のユーザーにメッセージをプッシュ送信できます。

Amazon SNS を使用して、200 か国以上への SMS テキストメッセージや、Apple や Android その他のプラットフォームでのモバイルプッシュ、電子メール(SMTP)でのメッセージをユーザーに直接送信できます。具体的には、ネットショッピングで購入した商品を「ただいま発送しました」という通知、フリマアプリに出品したアイテムが「購入されました」という通知などに活用されています。

電子メールとは違って、リアルタイムに通知されるため、高い確率で反応があるんですね。

Amazon SNS は、確実にメッセージを配信できます。

Amazon SNS でパブリッシュされたメッセージは、地理的に分離された複数のサーバーとデータセンターで保存されます。受信側のエンドポイントが利用できない場合は配信再試行を実行します。これにより、メッセージが途中でロストすることがないんですね。

Amazon SNSのNASAでの導入事例

NASA Image and Video Libraryには、NASA の半世紀以上に及ぶ実績を記録した 140,000 を超える静止画像、音声記録、および動画が保管されています。

アーキテクチャに、新しいコンテンツの処理パイプラインをトリガーするのにAmazon SNSが使用されています。また、受信されたジョブをパイプラインプロセッサから分離するのにAmazon SQS が使用されています。

【関連記事】
AWS SQSを使ってお手軽にメッセージキューイング(MQ)をしよう!

AWS SNSの料金

Amazon SNSの料金はメッセージ送信とAPIリクエストに対して従量課金されます。毎月100万メッセージまでは無料。

以下は、米国西部(カリフォルニア)リージョンでの料金です。

  • APIリクエストの毎月最初の 100 万 Amazon SNS リクエストは無料。以降の料金は 100 万 リクエストごとに 0.50USD
  • モバイルプッシュ通知 100 万件の通知まで無料 /  0.50USD/100 万通知
  • Email/Email-JSON 1,000 件の通知まで無料 / 2.00USD/10 万通知
  • HTTP/S 10 万件の通知まで無料 /  0.60USD/100 万通知

関連)料金 – Amazon SNS | AWS

データ転送に対しては、受信はすべて無料、月に1GBまでの送信は無料で以降は0.09ドル/GBがかかります。(ボリュームディスカウントあり)

システムの規模によっては、Amazon SNSの機能は無料で使えそうですね。

AWS CLIでAmazon SNSを実行

Amazon SNSを使用する方法を具体的に見てみましょう。以下は、AWS CLIでAmazon SNSを使ってトピックを作成し、サブスクライブ(購読)するサンプルです。

【関連記事】
AWS CLIのインストール方法 AWSアクセスキーの登録と疎通確認

awsコマンドから、トピックの作成とトピックのサブスクライブを行います。

$ aws sns create-topic --name my-topic
{
    "TopicArn": "arn:aws:sns:us-west-2:123456789012:my-topic"
}

$ aws sns subscribe --topic-arn arn:aws:sns:us-west-2:123456789012:my-topic --protocol email --notification-endpoint saanvi@example.com
{
    "SubscriptionArn": "pending confirmation"
}

You have chosen to subscribe to the topic:
arn:aws:sns:us-west-2:123456789012:my-topic
To confirm this subscription, click or visit the following link (If this was in error no action is necessary):

(サブスクライブ適用にはクリックまたはリンクを訪問します)

Confirm subscription

Subscription confirmed!

You have subscribed saanvi@example.com to the topic:my-topic.

Your subscription's id is:
arn:aws:sns:us-west-2:123456789012:my-topic:1328f057-de93-4c15-512e-8bb22EXAMPLE

If it was not your intention to subscribe, click here to unsubscribe.

関連)AWS CLI での Amazon SNS の使用 – AWS Command Line Interface

以下は、トピックに対して「Hello world!」というメッセージをパブリッシュする例です。トピックのサブスクライバーにメッセージが送信されます。

$ aws sns publish --topic-arn arn:aws:sns:us-west-2:123456789012:my-topic --message "Hello World!"
{
    "MessageId": "4e41661d-5eec-5ddf-8dab-2c867EXAMPLE"
}

AWS SNSのまとめ

ポテパンダの一言メモ
  • AWSのSNSは、多対多対応のフルマネージド型メッセージングサービス
  • アプリケーションと個人あてのメッセージ両方に使える
  • Amazon SNSには毎月の無料枠あり

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。