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

これを説明するために、ここでは、オンラインストアで注文が行われるたびに Amazon SNS メッセージをトピックに送信するクラウドネイティブのアプリケーションを開発していると仮定します。このトピックをサブスクライブしている各 Amazon 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 コンソールのランディングページが表示されたら、[次のステップ] をクリックします。

1a-sns-console-home

(クリックして拡大)

1a-sns-console-home

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


a.  [トピックを作成] ページで、トピック名のボックスに「New-Orders」と入力し、[トピックを作成] をクリックします。

2a-topic-create-wf

(クリックして拡大)

2a-topic-create-wf

b. [トピックの詳細] ページで、トピックが正常に作成されたことを確認します。

2b-topic-create-confirm

(クリックして拡大)

2b-topic-create-confirm

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 つ目のキューを作成します。

[新しいキューの作成] をクリックし、分析サービス用に注文を保存するもう 1 つのキューを作成します。

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 キューを作成したので、この 2 つのキューで新しい注文の通知をブロードキャストする Amazon SNS トピックをサブスクライブする必要があります。


a.キューのリストから、[Orders-for-Inventory] キューと [Orders-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 コンソールの New Orders トピックの詳細ページで、[メッセージの発行] をクリックします。

 

5a-topic-create-confirm

(クリックして拡大)

5a-topic-create-confirm

b. [Publish Message to topic (メッセージをトピックに発行)] ページが表示されます。[件名] ボックスに「Order 123-4567890-1234567」と入力します。[メッセージ] フィールドに、サンプル注文について説明する以下のテキストを入力します。

1 x Widget @ $29.99 USD

2 x Widget Cables @ $4.99

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

 

5b-sns-send-message-wf

(クリックして拡大)

5b-sns-send-message-wf

新しいメッセージが発行されると、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.架空の在庫サービスでこのメッセージの処理が終了したので、メッセージをキューから削除しても問題ないと仮定します。 

[Delete 1 Message (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] トピックを選択します。

[削除] をクリックしてトピックを削除します。

 

7a

(クリックして拡大)

7a

b. [削除] 確認ダイアログボックスが表示されます。ダイアログボックスに「delete me」と入力し、[削除] をクリックします。トピックとそのサブスクリプションが削除されます。これで、SNS ブラウザウィンドウを閉じることができます (ただし、まだサインアウトしないでください。SQS コンソールでキューを削除する必要があります)。

7b

(クリックして拡大)

7b

c.Amazon SQS コンソールで [Orders-for-Inventory] キューと [Orders-for-Analytics] キューを選択します。[キュー操作] ドロップダウンの一覧から [キューの削除] を選択します。


tmt_send-fanout-event-notifications_7c

(クリックして拡大)

tmt_send-fanout-event-notifications_7c

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

これで、Amazon SQS コンソールからサインアウトすることができます。

tmt_send-fanout-event-notifications_7d

(クリックして拡大)

tmt_send-fanout-event-notifications_7d

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

 


Amazon Simple Notification Service と Amazon Simple Queue Service を使用してメッセージファンアウト通知を実装する方法を習得したので、以下のいずれかをクリックして、AWS でのクラウドメッセージングについてさらに詳しく学習しましょう。

詳細を確認する

アマゾン ウェブ サービス (AWS) でのメッセージトピックの機能、コンポーネント、ユースケースに関する概要を確認しましょう。Amazon SNS ウェブページにアクセスする »

掘り下げる

クラウドからすぐに通知を送信し、アプリケーション、エンドユーザー、デバイスで通知を受信する方法を確認しましょう。ドキュメントを読む »

実際の事例を見る

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

はい
いいえ