Simple Notification Service – SNS

Amazon SNS

  • Simple Notifidation Service – SNS は、エンドポイントまたはクライアントをサブスクライブするためのメッセージの配信または送信を調整および管理する web サービスです。
  • SNS は、論理的なアクセスポイントと通信チャネルであるトピックを作成する機能を提供します。
  • 各トピックには、通知を登録するためにメッセージとサブスクライバーを投稿するパブリッシャーの SNS エンドポイントを識別する一意の名前があります。
  • プロデューサとコンシューマは、トピックにメッセージを生成して送信することにより、サブスクライバと非同期に通信します。
  • プロデューサは、トピックにメッセージをプッシュしたり、作成したりアクセスしたりして、そのトピックにサブスクライブしているサブスクライバのリストに SNS がトピックと一致し、それらの各サブスクライバにメッセージを配信します。
  • サブスクライバは、サブスクライブしているトピックにパブリッシュされたすべてのメッセージを受信し、トピックのすべてのサブスクライバが同じメッセージを受信します。
  • サブスクライバ (つまり、Web サーバー、Email アドレス、SQS キュー、AWS Lambda 関数) は、サポートされているプロトコル (SQS、HTTP/S、Email、SMS、Lambda) のいずれかのメッセージまたは通知を、トピックにサブスクライブしているときに消費または受信します。

Amazon SNS へのアクセス

  • Amazon 管理コンソール
    • Amazon 管理コンソールは、Webベースのユーザーインターフェイスデ SNS を管理するために使用することができます
  • AWS コマンドラインインタフェース (CLI)
    • Windows、Mac、および Linux でサポートされている広範な AWS 製品セットのコマンドを提供します。
  • Windows Powershell 用の AWS ツール
    • PowerShell 環境でスクリプトを作成する人のための広範な AWS 製品セットのコマンドを提供します。
  • AWS SNS クエリ API
    • クエリ API では、HTTP 動詞 GET または POST を使用する HTTP または HTTPS 要求と、Action という名前のクエリパラメーターを指定できます。
  • AWS SDK ライブラリ
    • AWS はさまざまな言語でライブラリを提供し、要求の暗号化、要求の再試行、エラー応答の処理などのタスクを自動化する基本的な機能を提供します。

SNS がサポートするトランスポートプロトコル

  • HTTP、HTTPS – サブスクライバーは、サブスクリプション登録の一部として URL を指定します。通知は、指定された URL に HTTP POST を通じて配信されます。
  • Email、Email-JSON – メッセージは、Email として登録されたアドレスに送信されます。Email は JSON オブジェクトとして通知を送信し、Email はテキストベースの Email を送信します。
  • SQS – ユーザーは、エンドポイントとして SQS キューを指定できます。SNS は、指定されたキューに通知メッセージを送信します (サブスクライバは ReceiveMessage、DeleteMessage などの SQS API を使用して処理できます)
  • SMS – メッセージは、SMS テキストメッセージとして登録された電話番号に送られます

SNS でサポートされるエンドポイント

  • Email 通知
    • SNS は、Email メール通知を送信する機能を提供します
  • モバイルプッシュ通知
    • SNS は、プッシュ通知メッセージをモバイルデバイス上のアプリに直接送信する機能を提供します。モバイルエンドポイントに送信されたプッシュ通知メッセージは、メッセージ警告、バッジの更新、さらにはサウンドアラートとしてモバイルアプリに表示されます。
    • サポートされるプッシュ通知サービス
      • Amazon デバイスメッセージング (ADM)
      • アップルプッシュ通知サービス (APN)
      • Google クラウドメッセージング (GCM)
      • windows 8 + および windows Phone 8.1 + の windows プッシュ通知サービス (WNS)
      • マイクロソフトプッシュ通知サービス (MPNS) の Windows Phone 7 +
      • 中国のアンドロイドデバイスのための Baidu のクラウドプッシュ
  • SQS キュー
    • SQS を使用した SNS は、イベントの即時通知を必要とするアプリケーションにメッセージを配信する機能を提供し、他のアプリケーションが後で処理するために SQS キューに保持することもできます。
    • SNS は、アプリケーションが “プッシュ” メカニズムを介して複数の加入者に時間の重要なメッセージを送信することができます、定期的にチェックしたり、更新のための “ポーリング” を排除する必要があります。
    • SQS は、分散アプリケーションがポーリングモデルを介してメッセージを交換するために使用することができ、コンポーネントを同時に使用できるようにすることなく、送信と受信を分離するために使用できます。
  • SMS 通知
    • SNS は、SMS 対応の携帯電話やスマートフォンにショートメッセージサービス (SMS) 通知を送受信する機能を提供します。
  • HTTP/HTTPS エンドポイント
    • SNS は、1つまたは複数の HTTP または HTTPS エンドポイントに通知メッセージを送信する機能を提供します。トピックに対してエンドポイントをサブスクライブすると、トピックに通知を発行し、Amazon SNS は通知の内容をサブスクライブされたエンドポイントに配信する HTTP POST 要求を送信できます。
  • Lambda
    • SNS と Lambda は統合されているため、SNS 通知で Lambda 関数を呼び出すことができます。
    • Lambda 関数がサブスクライブしている SNS トピックにメッセージがパブリッシュされると、パブリッシュされたメッセージのペイロードで Lambda 関数が呼び出されます。

AWS認定試験の練習問題

  • 質問はインターネットから収集され、答えは自分の知識と理解に基づいてマークされます(これはあなたと異なる場合があります)。
  • AWSサービスは毎日更新され、回答と質問はすぐに時代遅れになる可能性がありますので、それに応じて調査してください。
  • AWSのアップデートのペースを追うためにAWS試験の質問は更新されないため、基礎となる機能が変更されても質問が更新されないことがあります。
  • さらなるフィードバック、ディスカッション、修正を可能にします。
  1. 次の通知エンドポイントまたはクライアントは、Amazon Simple Notification Service をサポートしていますか。2つの回答を選択
    1. Email
    2. CloudFront ディストリビューション
    3. FTP
    4. SMS
    5. シンプルなネットワーク管理プロトコル
  2. Amazon SNS でトピックを作成するとどうなりますか?
    1. トピックが作成され、指定した名前が付けられます。
    2. ARN (Amazon リソース名) が作成されます。
    3. Amazon SNS ではなく、Amazon SQS でトピックを作成することができます。
    4. この質問は意味をなさない。
  3. ユーザーが自分のプライベートクラウドにアプリケーションを展開しました。ユーザーは独自の監視ツールを使用しています。彼は、エラーが発生するたびに、監視ツールは、SMS 経由で彼に通知する必要があることを構成したい。このシナリオでは、以下の AWS サービスが役立ちます。
    1. ユーザーインフラストラクチャがプライベートクラウド内にあるため、なし
    2. AWS SNS
    3. AWS SES
    4. AWS SMS
  4. ユーザーは、AWS EC2 インスタンスの CPU 使用率が 90% を超えるたびに、彼の寝室の赤いライトがオンになるようにしたいと考えています。以下の AWS サービスは、この目的のために役立つものですか?
    1. AWS CloudWatch + AWS SES
    2. AWS CloudWatch + AWS SNS
    3. AWS インフラストラクチャサービスでライトを構成することはできません
    4. AWS CloudWatch とライトをオンにする専用ソフトウェア
  5. ユーザーが AWS SNS を理解しようとしています。以下のエンドポイントのうち、SNS が通知を送信できないのはどれですか?
    1. Email JSON
    2. HTTP
    3. AWS SQS
    4. AWS SES
  6. ユーザーが EC2 上でウェブサーバを実行している。EC2 インスタンスの使用率がしきい値を超えている場合、ユーザーは SMS を受信したいと考えています。この場合、ユーザーはどの AWS サービスを構成する必要がありますか。
    1. AWS CloudWatch + AWS SES
    2. AWS CloudWatch + AWS SNS
    3. AWS CloudWatch + AWS SQS
    4. AWS EC2 + AWS CloudWatch
  7. ユーザーは、EC2 でモバイルゲームをホストして、高得点または新機能の追加により、アクティブなユーザーに通知を送信することを計画しています。ユーザーは、モバイルデバイスでオンラインになったときにこの通知を受け取る必要があります。この機能を実現するには、以下の AWS サービスのうちどれが役立ちますか。
    1. AWS SNS
    2. AWS SQS
    3. AWS モバイル通信サービス
    4. AWS シンプルメールサービス
  8. Amazon SNS プッシュ通知を活用する新しいモバイルアプリケーションを開発する企業向けに、AWS コンサルティングサービスを提供しています。個々のデバイスに直接通知メッセージを送信するために、各デバイス登録識別子またはトークンは SNS に登録する必要がありますが、開発者はこれを行うための最善の方法を確認していません。あなたはどのようなアドバイスをしますか?
    1. AWS マネジメントコンソールを使用して CSV ファイルに含まれるデバイストークンを一括アップロード
    2. プッシュ通知サービス (Amazon デバイスメッセージングなど) が登録を処理できるようにする
    3. 登録を処理するトークン自動販売サービスを実装する
    4. CreatePlatformEndpoint API 関数を呼び出して、複数のデバイストークンを登録します。(参考文献)
  9. 会社は、RDS MySQL インスタンスで実行されているメイントランザクション DB 上で、1時間ごとにバッチ分析を実行して、Redshift で実行されている中央データウェアハウスを作成します。バッチの実行中に、トランザクションアプリケーションは非常に低速です。バッチが完了したら、新しいデータを使用してトップ管理ダッシュボードを更新する必要があります。パフォーマンスの問題を解決し、可能な限りプロセスを自動化するために、このシナリオをどのように最適化しますか。
    1. RDS をバッチ分析および SNS 用の Redshift に置き換えて、社内システムにダッシュボードを更新するように通知します。
    2. RDS を使用して、バッチ分析と SQS のために、オンプレミスシステムにメッセージを送信してダッシュボードを更新します。
    3. バッチ分析用の RDS リードレプリカを作成し、ダッシュボードを更新するために社内システムに SNS 通知する
    4. バッチ分析および SQS 用の RDS リードレプリカを作成し、ダッシュボードを更新するために社内システムにメッセージを送信します。
  10. 次のうち、有効な SNS 配信トランスポートはどれですか。2つの回答を選択します。
    1. HTTP
    2. UDP
    3. SMS
    4. DynamoDB
    5. 名前付きパイプ
  11. Amazon SNS から送信された構造化通知メッセージの形式は何ですか?
    1. MessageId、UnsubscribeURL、サブジェクト、メッセージ、およびその他の値を含む XML オブジェクト
    2. MessageId、DuplicateFlag、メッセージ、およびその他の値を含む JSON オブジェクト
    3. MessageId、DuplicateFlag、メッセージ、およびその他の値を含む XML オブジェクト
    4. MessageId、unsubscribeURL、サブジェクト、メッセージ、およびその他の値を含む JSON オブジェクト
  12. SNS 発行要求の有効な引数は、次のうちどれですか。3つの回答を選択します。
    1. TopicArn
    2. 件名
    3. 宛先
    4. 形式
    5. メッセージ
    6. 言語

リファレンス

  • AWS Black Belt Techシリーズ Amazon SNS モバイルプッシュ (SlideShare)


Jayendra’s Blog

この記事は自己学習用に「AWS Simple Notification Service – SNS – Certification(Jayendra’s Blogより)」を日本語に訳した記事です。