メニュー
Amazon Simple Notification Service
開発者ガイド (API バージョン 2010-03-31)

メッセージの配信ステータスの Amazon SNS アプリケーション属性を使用する

Amazon Simple Notification Service (Amazon SNS) では、プッシュ通知メッセージの配信ステータスの記録がサポートされています。アプリケーション属性を設定した後、Amazon SNS からモバイルエンドポイントに送信されたメッセージのログエントリが CloudWatch Logs に送信されます。メッセージの配信ステータスを記録することは、以下のように運用をよりよく把握するために役立ちます。

  • プッシュ通知メッセージが Amazon SNS からプッシュ通知サービスに配信されたかどうかがわかります。

  • プッシュ通知サービスから Amazon SNS に送信されたレスポンスを特定します。

  • メッセージのドウェル時間 (発行のタイムスタンプからプッシュ通知サービスへの配信直前までの時間) を決定します。

メッセージの配信ステータスのアプリケーション属性を設定するには、AWS マネジメントコンソール、AWS Software Development Kit (SDK)、またはクエリ API を使用できます。

AWS マネジメントコンソール でメッセージの配信ステータスの属性を設定する

AWS マネジメントコンソール でメッセージの配信ステータスの属性を設定できます。

  1. AWS マネジメントコンソールにサインインした後、Amazon SNS コンソール (https://console.aws.amazon.com/sns/v2/home) を開きます。

  2. 左の [Navigation] ペインで、[Apps] をクリックし、CloudWatch Logs を受信するエンドポイントを含むアプリケーションをクリックします。

  3. [Application Actions] をクリックして、[Delivery Status] をクリックします。

  4. [Delivery Status] ダイアログボックスで、[Create IAM Roles] をクリックします。

    IAM コンソールにリダイレクトされます。

  5. [Allow] をクリックして、お客様に代わって CloudWatch Logs を使用できるように Amazon SNS に書き込みのアクセスを付与します。

  6. ここで、[Delivery Status] ダイアログボックスに戻り、[Percentage of Success to Sample (0-100)] フィールドに、CloudWatch Logs を受信するために送信される成功したメッセージの割合を数字で入力します。

    注記

    メッセージの配信ステータスのアプリケーション属性を設定した後は、メッセージの配信に失敗すると、必ず CloudWatch Logs が生成されます。

  7. 最後に、[Save Configuration] をクリックします。これで、メッセージの配信ステータスを含む CloudWatch Logs を参照して解析できます。CloudWatch の使用方法の詳細については、「CloudWatch のドキュメント」を参照してください。

Amazon SNS メッセージの配信ステータスの CloudWatch ログの例

アプリケーションエンドポイントのメッセージの配信ステータスの属性を設定した後は、CloudWatch Logs が生成されます。以下は、JSON 形式のログの例です。

SUCCESS

{ "status": "SUCCESS", "notification": { "timestamp": "2015-01-26 23:07:39.54", "messageId": "9655abe4-6ed6-5734-89f7-e6a6a42de02a" }, "delivery": { "statusCode": 200, "dwellTimeMs": 65, "token": "Examplei7fFachkJ1xjlqT64RaBkcGHochmf1VQAr9k-IBJtKjp7fedYPzEwT_Pq3Tu0lroqro1cwWJUvgkcPPYcaXCpPWmG3Bqn-wiqIEzp5zZ7y_jsM0PKPxKhddCzx6paEsyay9Zn3D4wNUJb8m6HXrBf9dqaEw", "attempts": 1, "providerResponse": "{\"multicast_id\":5138139752481671853,\"success\":1,\"failure\":0,\"canonical_ids\":0,\"results\":[{\"message_id\":\"0:1422313659698010%d6ba8edff9fd7ecd\"}]}", "destination": "arn:aws:sns:us-east-1:111122223333:endpoint/GCM/GCMPushApp/c23e42de-3699-3639-84dd-65f84474629d" } }

FAILURE

{ "status": "FAILURE", "notification": { "timestamp": "2015-01-26 23:29:35.678", "messageId": "c3ad79b0-8996-550a-8bfa-24f05989898f" }, "delivery": { "statusCode": 8, "dwellTimeMs": 1451, "token": "examp1e29z6j5c4df46f809505189c4c83fjcgf7f6257e98542d2jt3395kj73", "attempts": 1, "providerResponse": "NotificationErrorResponse(command=8, status=InvalidToken, id=1, cause=null)", "destination": "arn:aws:sns:us-east-1:111122223333:endpoint/APNS_SANDBOX/APNSPushApp/986cb8a1-4f6b-34b1-9a1b-d9e9cb553944" } }

プッシュ通知サービスのレスポンスコードの一覧は、「プラットフォームのレスポンスコード」を参照してください。

AWS SDK でメッセージの配信ステータスの属性を設定する

AWS SDK には、Amazon SNS でメッセージの配信ステータスの属性を使用するための API がいくつかの言語で用意されています。

次の Java の例は、SetPlatformApplicationAttributes API を使用して、プッシュ通知メッセージの配信ステータスのアプリケーション属性を設定する方法を示しています。メッセージの配信ステータスには、SuccessFeedbackRoleArnFailureFeedbackRoleArn、および SuccessFeedbackSampleRate の属性を使用できます。SuccessFeedbackRoleArn 属性と FailureFeedbackRoleArn 属性は、お客様に代わって CloudWatch Logs を使用できるように Amazon SNS に書き込みのアクセスを付与するために使用します。SuccessFeedbackSampleRate 属性は、成功した配信メッセージのサンプルレートの割合 (0-100) を指定するためのものです。FailureFeedbackRoleArn 属性を設定した後は、メッセージの配信に失敗すると、必ず CloudWatch Logs が生成されます。

SetPlatformApplicationAttributesRequest setPlatformApplicationAttributesRequest = new SetPlatformApplicationAttributesRequest(); Map<String, String> attributes = new HashMap<>(); attributes.put("SuccessFeedbackRoleArn", "arn:aws:iam::111122223333:role/SNS_CWlogs"); attributes.put("FailureFeedbackRoleArn", "arn:aws:iam::111122223333:role/SNS_CWlogs"); attributes.put("SuccessFeedbackSampleRate", "5"); setPlatformApplicationAttributesRequest.withAttributes(attributes); setPlatformApplicationAttributesRequest.setPlatformApplicationArn("arn:aws:sns:us-west-2:111122223333:app/GCM/GCMPushApp"); sns.setPlatformApplicationAttributes(setPlatformApplicationAttributesRequest);

SDK for Java の詳細については、「AWS SDK for Java の使用開始」を参照してください。

プラットフォームのレスポンスコード

以下は、プッシュ通知サービスのレスポンスコードへのリンクの一覧です。

プッシュ通知サービス 応答コード
Amazon Device Messaging (ADM) Amazon Device Messaging を使用してメッセージを送信する』の「レスポンスの形式」を参照してください。
Apple Push Notification Service (APNS) APN との通信』の「APN からの HTTP/2 レスポンス」を参照してください。
Android 用 Google クラウドメッセージング (GCM) GCM Connection Server Reference の「Downstream message error response codes」を参照してください。
Windows Phone 用 Microsoft プッシュ通知サービス (MPNS) プッシュ通知サービスのレスポンスコード」を参照してください。
Windows プッシュ通知サービス (WNS) プッシュ通知サービスのリクエストとレスポンスヘッダー」の「レスポンスコード」を参照してください。