このチュートリアルでは、Amazon Simple Notification Service (SNS) と Amazon Simple Queue Service (SQS) を使用して、ファンアウトメッセージングシナリオを実装します。このシナリオでは、メッセージが複数の受信者に "プッシュ" されます。更新の定期的な確認やポーリングが必要なくなり、受信者ごとにメッセージの並列非同期処理ができるようになります。

これを説明するため、オンラインストアで注文が発生するたびに Amazon SNS メッセージをトピックに送信するクラウドネイティブなアプリケーションを開発していることを前提とします。そのトピックにサブスクライブされている各 SQS キューは、新しい注文に対して同一の通知を受け取ります。

このチュートリアルで使用する AWS のサービスは、AWS 無料利用枠内のものです。

AWS でのファンアウトイベント通知の送信にはアカウントが必要です

まずは無料で始める

AWS 無料利用枠には、Amazon Simple Notification Service の発行 1,000,000 件と Amazon Simple Queue Service のリクエスト 1,000,000 件が含まれます。

AWS 無料利用枠の詳細はこちら »

 

ここをクリックすると、AWS マネジメントコンソールが新しいブラウザウィンドウで開くため、この詳細手順のガイドを開いたままで操作できます。この画面が読み込まれたら、ユーザー名とパスワードを入力して、作業を開始します。次に、検索バーに notification と入力してから [Simple Notification Service] を選択し、サービスコンソールを開きます。

tmt_send-fanout-event-notifications_1a

(クリックして拡大)

tmt_send-fanout-event-notifications_1a

a. SNS コンソールのランディングページが表示されたら、[Get Started Now] をクリックします。

tmt_send-fanout-event-notifications_1b

(クリックして拡大)

tmt_send-fanout-event-notifications_1b

このステップでは、Amazon SNSトピックを作成します。トピックとは、メッセージを送信し、通知をサブスクライブするための通信チャネルです。この例では、オンラインストアで新しい注文が発生するたびに、サンプルの e コマースアプリケーションが Amazon SNS トピックにメッセージをプッシュします。 


a. [一般的なアクション] で [トピックの作成] をクリックします。

tmt_send-fanout-event-notifications_2a

(クリックして拡大)

tmt_send-fanout-event-notifications_2a

b. [新しいトピックの作成] ダイアログボックスが表示されます。[トピック名] ボックスに New-Orders と入力して、[トピックの作成] をクリックします。

tmt_send-fanout-event-notifications_2b

(クリックして拡大)

tmt_send-fanout-event-notifications_2b

c. [トピックの詳細] ページが表示されます。

tmt_send-fanout-event-notifications_2c

(クリックして拡大)

tmt_send-fanout-event-notifications_2c

Amazon SNS でトピックを作成したので、そのトピックにサブスクライブする Amazon SQS キューを作成します。

複数のキューをトピックにサブスクライブすると、メッセージがトピックにプッシュされるたびに各キューが同一の通知を受け取ります。その後、これらのキューにアタッチされているサービスが注文を非同期または並行的に処理できます。

例えば、キューの 1 つにアタッチされた Amazon EC2 サーバーインスタンスは、注文の処理や履行を処理することができ、もう一つのサーバーインスタンスは受け付けたすべての注文を分析するためにデータウェアハウスにアタッチできます。

わかりやすくするために、このチュートリアルでは実際に EC2 インスタンスをキューにアタッチしません。


a. ここをクリックして新しいブラウザウィンドウに Amazon SQS コンソールを開きます。SQS のランディングページが表示されたら、[今すぐ始める] をクリックします。それ以外の場合は、次のステップに進みます。

 

tmt_send-fanout-event-notifications_3a

(クリックして拡大)

tmt_send-fanout-event-notifications_3a

b. 最初のキューは、注文ごとに必要に応じてインベントリに対する製品の追加および削除を行って製品を管理する架空のインベントリサービスのために注文を保存します。 

[新しいキューの作成] ページで、[キュー名] フィールドに Orders-for-Inventory と入力します。[標準キュー] が選択されたまま [キューのクイック作成] をクリックします。

tmt_send-fanout-event-notifications_3b

(クリックして拡大)

tmt_send-fanout-event-notifications_3b

c. 新しいキューが作成され、キューの一覧で選択されます。次に、注文分析を処理するための 2 つ目のキューを作成します。

[新しいキューの作成] をクリックして、分析サービス用に注文を保存するための別のキューを作成します。

tmt_send-fanout-event-notifications_3c

(クリックして拡大)

tmt_send-fanout-event-notifications_3c

d. [キュー名] フィールドに Orders-for-Analytics と入力して、[キューのクイック作成] をクリックします。

tmt_send-fanout-event-notifications_3d

(クリックして拡大)

tmt_send-fanout-event-notifications_3d

e. これで新しいキューがキューの一覧に表示されます。

tmt_send-fanout-event-notifications_3e

(クリックして拡大)

tmt_send-fanout-event-notifications_3e

2 つの Amazon SQS キューを作成した後は、新規注文の通知をブロードキャストする Amazon SNS トピックにそれらをサブスクライブする必要があります。


a. キューの一覧から、Orders-for-InventoryOrders-for-Analytics キューを選択します。[キュー操作] から [SNS トピックへのキューのサブスクライブ] を選択します。

tmt_send-fanout-event-notifications_4a

(クリックして拡大)

tmt_send-fanout-event-notifications_4a

b. [トピックへのサブスクライブ] ダイアログボックスが表示されます。[トピックの選択] ドロップダウンリストから、New-Orders Amazon SNS トピックを選択します。

この SNS トピックは、Amazon SQS キューを作成するために使用したものと同じアカウントから作成されたため、一覧に表示されます。SNS トピックが別のアカウントによって作成された場合は、トピック ARN を使用してそのトピックにサブスクライブすることができます。詳細については、Amazon SNS ドキュメントを参照してください。

[トピックリージョン] は変更しないでそのままにしておき、[サブスクライブ] をクリックします。

tmt_send-fanout-event-notifications_4b

(クリックして拡大)

tmt_send-fanout-event-notifications_4b

c. [トピックのサブスクリプション結果] ダイアログボックスが表示されます。[OK] をクリックします。

tmt_send-fanout-event-notifications_4c

(クリックして拡大)

tmt_send-fanout-event-notifications_4c

前ステップでキューがトピックにサブスクライブされました。このステップでは、架空の e コマースアプリケーションに注文の詳細が含まれるメッセージをトピックにプッシュさせることによって、新規注文をシミュレートします。


a. Amazon SNS コンソールで [トピック] をクリックします。

 

tmt_send-fanout-event-notifications_5a

(クリックして拡大)

tmt_send-fanout-event-notifications_5a

b. New-Orders トピックを選択してから [トピックに発行] ボタンをクリックします。


tmt_send-fanout-event-notifications_5b

(クリックして拡大)

tmt_send-fanout-event-notifications_5b

c. [メッセージを発行] ページが表示されます。

[件名] ボックスに、Order 123-4567890-1234567 と入力します。

[メッセージ形式] で [Raw] を選択します。

[メッセージ] フィールドに、サンプルの注文を表す次のテキストを入力します。
1 x ウィジェット @ 29.99 USD
2 x ウィジェットケーブル @ 4.99 USD

[メッセージの発行] をクリックします。 確認ダイアログボックスが表示されます。

tmt_send-fanout-event-notifications_5c

(クリックして拡大)

tmt_send-fanout-event-notifications_5c

新しいメッセージが発行されると、Amazon SNS は、そのトピックにサブスクライブされているすべてのエンドポイントにそのメッセージを配信します。現在のシナリオのようなファンアウトシナリオでは、Amazon SQS キューがエンドポイントです。

このステップでは、トピックがキューに送信したメッセージを表示することによって、新規注文通知がキューに受信されたことを確認します。


a. Amazon SQS コンソールで、キューの一覧にある Orders-for-Inventory キューのボックスにチェックを入れます。[キュー操作] ドロップダウンから [メッセージの表示/削除] を選択します。

 

tmt_send-fanout-event-notifications_6a

(クリックして拡大)

tmt_send-fanout-event-notifications_6a

b. [メッセージのポーリングを開始] をクリックします。


tmt_send-fanout-event-notifications_6b

(クリックして拡大)

tmt_send-fanout-event-notifications_6b

c. [Orders-for-Inventory のメッセージの表示/削除] ダイアログボックスが表示されます。

tmt_send-fanout-event-notifications_6c

(クリックして拡大)

tmt_send-fanout-event-notifications_6c

d. [本文] 列で [詳細] をクリックします。[メッセージ詳細] ボックスに、トピックに発行した件名とメッセージが記載された JSON ドキュメントが含まれています。

これで Orders-for-Inventory キューが New-Orders トピックからの新規注文通知を受け取ったことを確認できました。

[閉じる] をクリックします。

 

tmt_send-fanout-event-notifications_6d

(クリックして拡大)

tmt_send-fanout-event-notifications_6d

e. 架空のインベントリサービスがメッセージの処理を完了し、キューからメッセージを安全に削除できるようになったと想定します。 

[1 件のメッセージの削除] をクリックします。[チェックが付いたメッセージを削除] をクリックして確認し、[閉じる] をクリックします。

 

tmt_send-fanout-event-notifications_6e

(クリックして拡大)

tmt_send-fanout-event-notifications_6e

f. ステップ 6a から 6e を繰り返して、Orders-for-Analytics キューも新規注文の通知を受け取ったことを確認します。

tmt_send-fanout-event-notifications_6f

(クリックして拡大)

tmt_send-fanout-event-notifications_6f

このステップでは、このチュートリアル用に作成したリソースを削除します。これには、トピックサブスクリプション、トピック、およびキューが含まれます。使用しなくなったリソースを削除して料金を発生させないことがベストプラクティスです。


a. Amazon SNS コンソールを開き、左にあるナビゲーションペインで [トピック] をクリックします。

New-Orders トピックを選択します。

[アクション] ドロップダウンリストをクリックして、[トピックの削除] を選択します。


tmt_send-fanout-event-notifications_7a

(クリックして拡大)

tmt_send-fanout-event-notifications_7a

b. [削除] 確認ダイアログボックスが表示されます。[削除] をクリックします。このトピックとそのサブスクリプションが削除されます。その後、SNS のブラウザウィンドウを閉じることができます (ただし、まだ SQS コンソールからキューを削除しなくてはならないため、サインアウトはしないでください)。

 

tmt_send-fanout-event-notifications_7b

(クリックして拡大)

tmt_send-fanout-event-notifications_7b

c. Amazon SQS コンソールで、Orders-for-InventoryOrders-for-Analytics キューを選択します。[キュー操作] から [キューの削除] を選択します。


tmt_send-fanout-event-notifications_7c

(クリックして拡大)

tmt_send-fanout-event-notifications_7c

d. [キューの削除] ダイアログボックスが表示されます。[2 個のキューを削除] をクリックします。キューが削除されます。

これで Amazon SQS コンソールからサインアウトすることができるようになりました。

tmt_send-fanout-event-notifications_7d

(クリックして拡大)

tmt_send-fanout-event-notifications_7d

ここでは Amazon SNS と Amazon SQS を使用してファンアウトシナリオを実装しました。これで、イベントの即時通知を必要とするアプリケーションにメッセージを配信する、または後で他のアプリケーションが処理できるように Amazon SQS キューでメッセージをバッファするために Amazon SNS と Amazon SQS を併用する準備が整いました。

 


Amazon Simple Notification Service と Amazon Simple Queue Service を使用してメッセージのファンアウト通知を実装する方法を学んだ後は、次のオプションのひとつを選択して、AWS でのクラウドメッセージングをさらに追及してください。

詳細

Amazon Web Services (AWS) のメッセージトピックに関する機能、コンポーネント、およびユースケースの概要を取得します。Amazon SNS ウェブページにアクセスする »

さらに追求

クラウドからの通知を瞬時に送受信するためにアプリケーション、エンドユーザー、およびデバイスを有効化する方法を探求します。ドキュメントを読む »

実用例

Capital One のようなお客様が、アプリケーションを分離させ、スケールするために Amazon SQS と Amazon SNS をどのように使用してしているかをご覧ください。オンラインセミナーを見る »

はい
いいえ