リアルタイム通知(RTN)を使用する方法
このページでは、開発者コンソールでリアルタイム通知(RTN)をセットアップする方法について説明します。
RTNのセットアップ
Amazonアプリストア開発者コンソールでRTNをセットアップするには、次の手順に従います。
- 開発者コンソールにログインします。
- [Amazonアプリストア] セクションで、[アプリ一覧] をクリックします。
- [アプリ一覧] ページでアプリを選択します。
- サイドバーで [アプリサービス] をクリックし、[リアルタイム通知] セクションを探します。
- [エンドポイントの追加] をクリックします。
- [Amazonアプリストアの通知用URL] にアプリのHTTPSエンドポイントを入力します。
- [送信] をクリックします。
アプリのエンドポイントを送信すると、そのURLがAmazonで検証され、確認メッセージがアプリサーバーに送信されます。RTNを受信するには、その確認メッセージを処理する必要があります。詳細については、後述の通知メッセージの処理を参照してください。
RTNエンドポイントの変更
アプリがサブスクライブするRTNのエンドポイントは変更できます。開発者コンソールで、現在サブスクライブしているRTNを選択してください。[アプリ&サービス] から [マイアプリ] をクリックし、アプリを選択して、[アプリサービス] をクリックします。次の手順に従って、RTNを編集します。
- [リアルタイム通知] セクションで [エンドポイントの追加] をクリックし、[編集] をクリックします。
- [新規URLを追加] をクリックして入力するか、登録済みのエンドポイントを1つ選択します。
- [送信] をクリックします。
新しいエンドポイントが検証中となります。新しいエンドポイントの検証が完了するまでは、変更前のエンドポイントで引き続きRTNを受信します。Amazonで新しいURLの検証が完了すると、「サブスクリプション確認」メッセージがアプリサーバーに送信されます。RTNを受信するには、その確認メッセージを処理する必要があります。詳細については、後述の通知メッセージの処理を参照してください。
検証が完了すると、新しいエンドポイントで通知の受信が開始されます。
RTNの削除
アプリのRTNのエンドポイントは削除できます。開発者コンソールで、現在サブスクライブしているRTNを選択してください。[アプリ&サービス] から [マイアプリ] をクリックし、アプリを選択して、[アプリサービス] をクリックします。次の手順に従って、RTNを編集します。
- [リアルタイム通知] セクションで [エンドポイントの追加] をクリックし、[編集] をクリックします。
- 該当するURLを見つけ、[削除] をクリックします。
- 確認ダイアログで [削除] をクリックします。
通知メッセージの処理
なりすまし攻撃を防ぐには、Amazon署名を検証してメッセージの真正性を確認する必要があります。詳細については、Amazon SNSメッセージの署名の確認を参照してください。
Amazon AWS SDKを使用している場合は、HTTPS POSTの処理と署名の検証は自動的に行われます。詳細については、後述のコードスニペットを参照してください。
Amazon AWS SDKを使用しない場合は、HTTPS POSTリクエストを処理するためのガイドラインと、Amazon SNSメッセージの署名の確認に示されている署名の検証手順に従ってください。
RTN確認メッセージ
開発者コンソールでRTN用エンドポイントを追加すると、そのエンドポイントにAmazonから確認メッセージが送信されます。
確認メッセージを処理するには、SubscribeURL
値を見つけます。このURLに、HTTP GETリクエストを行うか、手動でブラウザからアクセスします。
Amazon SNSでは自動的にRTNを確認できます。DefaultSnsMessageHandler
を使用すると、SnsSubscriptionConfirmation
メッセージを受信した際に、RTNの確認が自動的に行われます。DefaultSnsMessageHandler
には、SnsNotification
以外のすべてのメッセージタイプが実装されています。SNSメッセージの詳細については、Amazon Simple Notification Serviceのドキュメントを参照してください。
通知
エンドポイントは、POSTリクエストに対してレスポンスステータスコード200
を返す必要があります。サーバーにアクセスできなかった場合、または4xx
のコードが返された場合、メッセージは再試行されません。
エンドポイントが15秒のタイムアウト時間内に応答しなかった場合、または200
~4xx
以外のレスポンスコードが返された場合、メッセージは送信失敗と見なされ、再試行されます。
Last updated: 2021年11月13日