如何排查失败的 Amazon SNS 推送通知传输问题?

上次更新时间:2019 年 3 月 19 日

如何确认 Amazon Simple Notification Service (Amazon SNS) 推送通知的传输状态?如何确定某些通知传输失败的原因?

简短描述

当您为平台应用程序启用 Amazon SNS 传输状态日志记录后,Amazon CloudWatch Logs 将记录您的推送通知事务,包括成功和失败的传输。

解决方案

打开传输状态日志记录

  1. 打开 Amazon SNS 控制台
  2. 打开左侧导航菜单,展开移动应用程序,然后选择推送通知
  3. 平台应用程序中,选择要为其启用传输状态的平台应用程序,然后选择编辑
  4. 展开 Delivery status logging – optional(传输状态日志记录 – 可选),然后选择 Create new service role(创建新服务角色)。
  5. 选择创建新角色。这时将在新的选项卡或窗口中打开 AWS Identity and Access Management (IAM) 控制台。
  6. 在 IAM 控制台权限请求页面上,选择允许
  7. 选择保存更改

注意:您也可以通过使用 AWS 开发工具包AWS 命令行界面 (AWS CLI) 启用传输状态。

查看传输状态日志

  1. 打开 CloudWatch 控制台
  2. 从左侧导航窗格中选择日志
  3. 日志组下,找到您的应用程序的传输状态日志。

在消息发布到终端节点之前,传输状态日志不可用。对于推送通知,在 Amazon SNS 将消息传递给提供商时,即认为发布成功。但是,将消息传递给提供商不能保证通知已传输到设备。

根据应用程序类型,您可能会看到两个日志组:一个用于记录成功的通知,一个用于记录失败的通知。Firebase Cloud Messaging (FCM) 和 Apple Push Notification service (APNs) 日志存在于类似如下名称的日志组中:

sns/us-east-1/123456789012/app/platform_name/application_name/

如果传输不成功,日志条目中会附加“Failure”。例如:

sns/us-east-1/123456789012/app/platform_name/application_name/Failure

有些日志详细信息包括 messageId、statusCode、所用时间 (dwellTimeMs)、目标终端节点 (destination) 和 providerResponse。有关示例日志,请参阅 Amazon SNS 消息传输状态 CloudWatch 日志示例

通知失败问题排查

在提供商服务中查找 statusCode,如 FCM 或 APNs。有关提供商的确切响应消息,请参见 providerResponse


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?