Amazon Simple Notification Service
通知配信(pub/sub)
1 つのメッセージを複数の受信者に同時に送信します(fan-out): SQS、Lambda、メール、SMS、HTTP。
- コスト$ 安い
- 難易度●●●●●
- 未使用でも課金?いいえ
- サーバーレス
- 出題試験CLF · SAA · DVA · SOA
たとえるなら構内放送のようなものです。一度話せば、登録している全員に聞こえます。
SNS はシステムのどこにある?
具体例でステップごとに
- 新しい注文が入ったら、倉庫、経理、お客さんへのメール送信の 3 つのシステムが知る必要があります。
- 注文サービスは SNS トピック「new-order」にメッセージを 1 つ発行します。
- トピックには 3 つの SQS キューがサブスクライブしていて、それぞれがコピーを受け取り、後ろのシステムが自分のペースで処理します。
- 分析システムなどを新たに追加するときも、サブスクリプションを 1 つ増やすだけで、注文サービスは変更しません。
- 一方で、CloudWatch のアラームは別のトピックに通知し、障害時に当番のエンジニアへ SMS を送ります。
いつ使う?
✓ 使うべき場面
イベントの fan-out、メール/SMS でのアラート送信。
✗ 避けるべき場面
複雑なイベントのフィルタリング/ルーティングが必要 → EventBridge、保存して順次処理したい → SQS。
よくある使い方
- 1 つのイベントを複数の SQS キューや Lambda に fan-out
- メール/SMS による運用アラート
- モバイルアプリへのプッシュ通知
SNS・SQS・EventBridge の違い
| 種類 | 多数のサブスクライバーへのパブリッシュ | 処理を待つキュー | ルールによるイベントのルーティング |
|---|---|---|---|
| 配信先 | SQS、Lambda、HTTP、メール、SMS、プッシュ | 取りに来た側 | 20 種類以上の AWS ターゲット、API |
| フィルタリング | メッセージ属性による | なし | イベント内容に基づくルール |
| 向いている用途 | ファンアウト、人への通知 | 疎結合化、負荷の吸収 | AWS サービス/SaaS のイベント |
料金はいくら?
- 課金方式: 約 $0.50/100 万 publish。SQS と Lambda への配信は無料。メール、HTTP、SMS は別料金(SMS は国ごと)。
- 無料枠: Always Free: 毎月 100 万 publish、メール 1,000 件、HTTP 100,000 件。
SMS はかなり高額で、「SMS ポンピング」攻撃を受けやすい。filter policy を忘れると、すべての subscriber がすべてのメッセージを受信する。
1 つのイベントを、それぞれ独立して動く複数のシステムに届けるなら、SNS から複数の SQS へのファンアウトです。CloudWatch アラームで SMS/メールを送るなら SNS、順序が重要なら FIFO トピックと FIFO キューを使います。
本番の試験問題に挑戦
1[...] is a fast, flexible, fully managed push messaging service.
- AAmazon SNS.
- BAmazon SES.
- CAmazon SQS.
- DAmazon FPS.
答えを見る
正解: A
SNS はフルマネージドのプッシュ型メッセージング(パブリッシュ/サブスクライブ)サービスです。SES はメール送信、SQS はキューです。
2A user is running a webserver on EC2. The user wants to receive the SMS when the EC2 instance utilization is above the threshold limit. Which AWS services should the user configure in this case?
- AAWS CloudWatch + AWS SQS.
- BAWS CloudWatch + AWS SNS.
- CAWS CloudWatch + AWS SES.
- DAWS EC2 + AWS Cloudwatch.
答えを見る
正解: B
CloudWatch アラームで EC2 の CPU を監視し、SMS のサブスクリプションを持つ SNS トピックに通知します。SQS はキューで SMS を送れず、SES はメール送信サービスです。
よくある質問
SNS と SQS によるファンアウトとは何ですか?
1 つの SNS トピックが同じメッセージを複数の SQS キューに送り、各キューはそれぞれのシステムが自分のペースで処理する構成です。送信側を変更せずに新しい処理を追加できます。
SNS の料金はどのように決まりますか?
発行リクエスト数と、配信先の種類ごとの配信数で課金されます。SQS や Lambda への配信は非常に安く、SMS とメールには個別の料金があり、SMS は国によって料金が異なります。
AWS 認定試験では SNS について何が問われますか?
SNS と SQS によるファンアウトパターン、CloudWatch アラームのメール通知、属性によるメッセージフィルタリング、順序が重要な場合の FIFO トピック、SQS や EventBridge との違いなどです。