開発者コンソール

リアルタイム通知(RTN)を使用する方法


リアルタイム通知(RTN)を使用する方法

このページでは、開発者コンソールでリアルタイム通知(RTN)をセットアップする方法について説明します。

RTNのセットアップ

Amazonアプリストア開発者コンソールでRTNをセットアップするには、次の手順に従います。

  1. 開発者コンソールにログインします。
  2. [Amazonアプリストア] セクションで、[アプリ一覧] をクリックします。
  3. [アプリ一覧] ページでアプリを選択します。
  4. サイドバーで [アプリサービス] をクリックし、[リアルタイム通知] セクションを探します。
  5. [エンドポイントの追加] をクリックします。
  6. [Amazonアプリストアの通知用URL] にアプリのHTTPSエンドポイントを入力します。
  7. [送信] をクリックします。

アプリのエンドポイントを送信すると、そのURLがAmazonで検証され、確認メッセージがアプリサーバーに送信されます。RTNを受信するには、その確認メッセージを処理する必要があります。詳細については、後述の通知メッセージの処理を参照してください。

RTNエンドポイントの変更

アプリがサブスクライブするRTNのエンドポイントは変更できます。開発者コンソールで、現在サブスクライブしているRTNを選択してください。[マイアプリ] をクリックし、目的のアプリを選択し、[アプリサービス] をクリックします。次の手順に従って、RTNを編集します。

  1. [リアルタイム通知] セクションで [エンドポイントの追加] をクリックし、[編集] をクリックします。
  2. [新規URLを追加] をクリックして入力するか、登録済みのエンドポイントを1つ選択します。
  3. [送信] をクリックします。

新しいエンドポイントが検証中となります。新しいエンドポイントの検証が完了するまでは、変更前のエンドポイントで引き続きRTNを受信します。Amazonで新しいURLの検証が完了すると、「サブスクリプション確認」メッセージがアプリサーバーに送信されます。RTNを受信するには、その確認メッセージを処理する必要があります。詳細については、後述の通知メッセージの処理を参照してください。

検証が完了すると、新しいエンドポイントで通知の受信が開始されます。

RTNの削除

アプリのRTNのエンドポイントは削除できます。開発者コンソールで、現在サブスクライブしているRTNを選択してください。[マイアプリ] をクリックし、目的のアプリを選択し、[アプリサービス] をクリックします。次の手順に従って、RTNを編集します。

  1. [リアルタイム通知] セクションで [エンドポイントの追加] をクリックし、[編集] をクリックします。
  2. 該当するURLを見つけ、[削除] をクリックします。
  3. [削除] をクリックします。

通知メッセージの処理

なりすまし攻撃を防ぐには、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秒のタイムアウト時間内に応答しなかった場合、または2004xx以外のレスポンスコードが返された場合、メッセージは送信失敗と見なされ、再試行されます。