本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon Simple Notification Service (Amazon SNS) 支持记录推送通知消息的传输状态。配置应用程序属性后,从 Amazon SNS 发送到移动终端节点的消息的 CloudWatch 日志条目将发送到日志。记录消息传输状态有助于提供更好的业务洞察力,例如以下方面:
-
了解推送通知消息是否已从 Amazon SNS 传输到推送通知服务。
-
识别从推送通知服务发送到 Amazon SNS 的响应。
-
确定消息停留时间(发布时间戳与将消息转交给推送通知服务之间的时间差)。
要为消息传送状态配置应用程序属性,您可以使用 AWS 软件开发套件 (SDKs) 或查询 API。 AWS Management Console
使用配置邮件传送状态属性 AWS Management Console
-
登录 Amazon SNS 控制台
。 -
在导航面板中,指向移动,并选择推送通知。
-
从平台应用程序部分,选择包含要接收 CloudWatch 日志的终端节点的应用程序。
-
选择 Application Actions (应用程序操作),然后选择 Delivery Status (传输状态)。
-
在传输状态对话框中,选择创建 IAM 角色。
随后您将被重定向至 IAM 控制台。
-
选择 “允许”,授予 Amazon SNS 写入权限,让您可以代表您使用 CloudWatch 日志。
-
现在,返回 “传送状态” 对话框中,在 “成功样本百分比 (0-100)” 字段中输入一个数字,表示要接收 CloudWatch 日志的成功发送邮件的百分比。
注意
为消息传送状态配置应用程序属性后,所有失败的消息传送都会生成 CloudWatch 日志。
-
最后,选择保存配置。现在,您将能够查看和解析包含消息传送状态的 CloudWatch 日志。有关使用的更多信息 CloudWatch,请参阅CloudWatch文档
。
Amazon SNS 消息传输状态日志示例 CloudWatch
为应用程序终端节点配置消息传送状态属性后,将生成 CloudWatch 日志。示例日志采用 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-2:111122223333:endpoint/FCM/FCMPushApp/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": "examp1e29z6j5c4df46f80189c4c83fjcgf7f6257e98542d2jt3395kj73",
"attempts": 1,
"providerResponse": "NotificationErrorResponse(command=8, status=InvalidToken, id=1, cause=null)",
"destination": "arn:aws:sns:us-east-2:111122223333:endpoint/APNS_SANDBOX/APNSPushApp/986cb8a1-4f6b-34b1-9a1b-d9e9cb553944"
}
}
有关推送通知服务响应代码的列表,请参阅平台响应代码。
使用配置消息传送状态属性 AWS SDKs
AWS SDKs
下面的 Java 示例显示了如何使用 SetPlatformApplicationAttributes
API 为推送通知消息的消息传输状态配置应用程序属性。您可以对消息传输状态使用以下属性:SuccessFeedbackRoleArn
、FailureFeedbackRoleArn
和 SuccessFeedbackSampleRate
。SuccessFeedbackRoleArn
和FailureFeedbackRoleArn
属性用于向 Amazon SNS 授予代表您使用 CloudWatch 日志的写入权限。SuccessFeedbackSampleRate
属性用于指定成功传输消息的采样率百分比 (0-100)。配置该FailureFeedbackRoleArn
属性后,所有失败的消息传送都会生成 CloudWatch 日志。
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/FCM/FCMPushApp");
sns.setPlatformApplicationAttributes(setPlatformApplicationAttributesRequest);
有关适用于 Java 的开发工具包的更多信息,请参阅 AWS SDK for Java入门指南。
平台响应代码
下面是推送通知服务响应代码链接列表:
推送通知服务 | 响应代码 |
---|---|
Amazon Device Messaging(ADM) | 请参阅 ADM 文档中的响应格式 |
苹果推送通知服务 (APNs) | 请参阅《本地和远程通知编程指南》 APNs中的 “与之通信 |
Firebase Cloud Messaging (FCM) | 请参阅 Firebase Cloud Messaging 文档中的下游消息错误响应代码 |
适用于 Windows Phone 的 Microsoft 推送通知服务 (MPNS) | 请参阅 Windows 8 开发文档中的 Windows Phone 8 的推送通知服务响应代码 |
Windows 推送通知服务 (WNS) | 请参阅 Windows 8 开发文档中推送通知服务请求和响应标头(Windows 运行时应用程序) |