Amazon Simple Notification Service
开发人员指南 (API Version 2010-03-31)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

使用用于消息传输状态的 Amazon SNS 应用程序属性

Amazon Simple Notification Service (Amazon SNS) 支持记录推送通知消息的传输状态。配置应用程序属性以后,将针对从 Amazon SNS 发送到移动终端节点的消息向 CloudWatch Logs 发送日志条目。记录消息传输状态有助于提供更好的业务洞察力,例如以下方面:

  • 了解推送通知消息是否已从 Amazon SNS 传输到推送通知服务。

  • 识别从推送通知服务发送到 Amazon SNS 的响应。

  • 确定消息停留时间(发布时间戳与将消息转交给推送通知服务之间的时间差)。

要配置用于消息传输状态的应用程序属性,您可以使用 AWS 管理控制台、AWS 软件开发工具包 (SDK) 或查询 API。

使用 AWS 管理控制台配置消息传输状态属性

您可以使用 AWS 管理控制台配置消息传输状态属性。

  1. 通过以下网址登录 AWS 管理控制台 并打开 Amazon SNS 控制台:https://console.amazonaws.cn/sns/v2/home

  2. 在左侧的 Navigation 窗格中,单击 Apps,然后单击包含要接收其 CloudWatch Logs的终端节点的应用程序。

  3. 单击 Application Actions,然后单击 Delivery Status

  4. Delivery Status 对话框上,单击 Create IAM Roles

    随后您将被重定向至 IAM 控制台。

  5. 单击 Allow 给予 Amazon SNS 写入权限以代表您使用 CloudWatch Logs。

  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

Copy
{ "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

Copy
{ "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 软件开发工具包配置消息传输状态属性

AWS 软件开发工具包提供了多种语言的 API,以便将消息传输状态属性用于 Amazon SNS。

下面的 Java 示例显示了如何使用 SetPlatformApplicationAttributes API 为推送通知消息的消息传输状态配置应用程序属性。您可以对消息传输状态使用以下属性:SuccessFeedbackRoleArnFailureFeedbackRoleArnSuccessFeedbackSampleRateSuccessFeedbackRoleArnFailureFeedbackRoleArn 属性用于授予 Amazon SNS 写入权限,以代表您使用 CloudWatch Logs。SuccessFeedbackSampleRate 属性用于指定成功传输消息的采样率百分比 (0-100)。配置 FailureFeedbackRoleArn 属性以后,所有失败的消息传输都会生成 CloudWatch Logs。

Copy
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);

有关 适用于 Java 的开发工具包 的更多信息,请参阅 AWS SDK for Java 入门

平台响应代码

下面是推送通知服务响应代码链接列表:

推送通知服务 响应代码
Amazon Device Messaging (ADM) 请参阅 Sending a Message via Amazon Device Messaging (通过 Amazon 设备消息传送发送消息) 中的 Response Format (响应格式)
Apple Push Notification Service (APNS) 请参阅 Communicating with APNs (与 APN 通信) 中的 HTTP/2 Response from APNs (来自 APN 的 HTTP/2 响应)。
Google Cloud Messaging for Android (GCM) 请参阅 GCM 连接服务器参考中的下游信息错误响应代码
适用于 Windows Phone 的 Microsoft Push Notification Service (MPNS) 请参阅 Push Notification Service 响应代码
Windows Push Notification Services (WNS) 请参阅 Push Notification Service 请求和响应标头中的“响应代码”