申込完了イベントの利用者通知に使うマネージドサービス
地方の果樹園を運営する事業者が、収穫体験ツアーの予約サイトを AWS 上に新規構築しています。参加者が予約フォームを送信するたびに、その参加者本人へ予約確定の通知メッセージを届ける必要があります。運用チームは小規模で、メール配信基盤やワーカープロセスを自前で構築・保守する余力はありません。将来的には同じ予約イベントを社内の運用チャネルにも同時配信したいと考えています。この要件を最も少ない運用負荷で満たす AWS サービスはどれですか。
解説を読む(正解: C)
Amazon SNS はパブリッシュ/サブスクライブ型のフルマネージドメッセージングサービスです。発行者がトピックへメッセージを 1 回パブリッシュするだけで、購読しているすべてのエンドポイント (E メール、SMS、モバイルプッシュ、HTTP/S、Amazon SQS、AWS Lambda など) へ同時に配信でき、配信基盤のスケーリングや冗長化は AWS 側が担います。本問では「予約が入るたびに参加者本人へ通知を届ける」ことが要件であり、予約確定イベントを SNS トピックにパブリッシュし、参加者の連絡先をサブスクライブさせる構成が最短でこれを満たします。同じトピックを社内チャネルにもファンアウトできるため、将来の拡張要件にもそのまま対応できます。Amazon SQS はコンポーネント間を疎結合にするためのプル型キューで、メッセージを取り出すのはコンシューマー側のアプリケーションです。利用者へ能動的に通知を届ける仕組みではないため要件を満たしません。AWS STS は一時的なセキュリティ認証情報を発行して権限を委譲するサービスであり、認可のための機能でメッセージ配信とは無関係です。Amazon Kinesis Data Streams はストリーミングデータをリアルタイムに取り込んで処理するためのサービスで、コンシューマーがシャードから読み取ることを前提としており、エンドユーザーへの通知配信用途には適しません。
1 件のイベントを複数の宛先へ同報する通知基盤
配車マッチングアプリを提供する物流ベンチャーが、EC2 インスタンス上でバックエンド API を運用しています。インスタンスのステータスチェック失敗を CloudWatch アラームで検知した際に、Lambda 関数を起動してチャットツール (Slack や Microsoft Teams) へ投稿すると同時に、オンコール担当者のメールアドレスにも同じ通知を配信したいと考えています。追加のサーバーを管理せずにこの 1 対多の配信を実現するには、どのサービスを利用すべきですか。1 つ選択してください。
解説を読む(正解: B)
Amazon SNS は、パブリッシュ/サブスクライブ (pub/sub) モデルのフルマネージドなメッセージングサービスです。トピックに 1 件のメッセージを発行すると、そのトピックを購読しているすべてのサブスクライバー、たとえば AWS Lambda 関数、E メール、SMS、HTTPS エンドポイント、Amazon SQS キューなどへ同時にプッシュ配信されます。本問では CloudWatch アラームを起点として Lambda 関数によるチャット投稿とオンコール担当者へのメール送信を同時に行いたいという「ファンアウト」が要件なので、SNS トピックに Lambda 関数と E メールアドレスをサブスクライブさせる構成が最適です。CloudWatch アラームのアクションに SNS トピックを指定するだけでよく、サーバー管理も不要です。Amazon SQS はコンシューマー側がポーリングして取得するキューであり、1 件のメッセージは原則として 1 つのコンシューマーにしか処理されません。複数の宛先へ同報するにはキューを分けたうえで結局ファンアウト機構が必要になり、SQS 単体でメールを送信することもできません。Amazon Kinesis Data Streams は大量のストリーミングレコードを順序保証付きで処理するサービスで、シャード管理やコンシューマーアプリケーションの実装が必要になり、単発のアラート通知には過剰です。Amazon S3 のイベント通知はバケット内のオブジェクト作成・削除などを契機に動作する仕組みであり、EC2 インスタンスの障害や CloudWatch アラームを起点にすることはできません。
モバイルデバイスへのプッシュ通知とファンアウト
フードデリバリー事業者がマイクロサービスアーキテクチャを設計しています。注文が確定した瞬間に、配達員の iOS / Android アプリへプッシュ通知を届ける必要があり、同時に同じイベントを配車最適化サービスと分析基盤にも配信したいと考えています。通知の遅延は数秒以内に抑えたく、通知先の追加や削除は送信側のコードを変更せずに行えることが望まれます。
この要件を満たす AWS サービスを選択してください。
解説を読む(正解: A)
Amazon SNS はパブリッシュ/サブスクライブ (pub/sub) 型のメッセージングサービスで、送信側はトピックへ 1 回発行するだけで、そのトピックを購読しているすべてのサブスクライバーへ同じメッセージが配信されます。サブスクライバーとしては Lambda、SQS キュー、HTTP/S エンドポイント、E メールに加えて、モバイルプッシュ通知 (APNs、FCM などのプラットフォームエンドポイント) を指定できる点が本問の決め手です。A の SNS であれば、注文確定イベントを 1 つのトピックへ発行するだけで配達員のモバイルアプリへプッシュ通知が届き、同じイベントを配車最適化サービスや分析基盤へファンアウトできます。購読先の追加・削除はサブスクリプションの操作だけで完結し、発行側のコードは変更不要です。B の SQS はコンシューマーがポーリングして取得するキューであり、メッセージを能動的にプッシュしません。デバイスへの通知機能も持たず、1 つのメッセージは基本的に 1 つのコンシューマーが処理するためファンアウトにも向きません。C の SES は E メール送信に特化したサービスで、モバイルアプリのプッシュ通知は扱えません。D の EventBridge Scheduler は指定時刻や一定間隔でターゲットを起動するスケジューラーであり、イベント発生時のリアルタイム通知やモバイルデバイスへの直接配信の仕組みではありません。