如何访问 Amazon SNS 主题传输日志以查看推送消息?

上次更新时间:2021 年 6 月 28 日

我想访问 Amazon Simple Notification Service (Amazon SNS) 主题传输日志以查看推送消息。

简短描述

完成以下步骤之前,请确认您使用的 Amazon SNS 支持通过通知消息提供日志传输状态的 SNS 终端节点:

  • HTTP 和 HTTPS
  • Amazon Kinesis Data Firehose
  • AWS Lambda
  • 平台应用程序端点
  • Amazon Simple Queue Service (Amazon SQS)
  • SMS

注意:如果您在运行 AWS 命令行界面 (AWS CLI) 命令时遇到错误,请确保您使用的是最新版的 AWS CLI

解决方法

配置 Amazon CloudWatch Logs 的推送通知传输状态属性

注意:作为以下控制台步骤的替代方法,您可以使用 AWS 开发工具包AWS CLI 配置消息传输状态。

1.    打开 Amazon SNS 控制台

2.    打开导航菜单,展开 Mobile(移动),然后选择 Push notifications(推送通知)。

3.    在 Platform applications(平台应用程序)部分,选择要为其传输状态的平台应用程序。

4.    选择编辑

5.    展开 Delivery status logging - optional(传输状态日志记录 – 可选)。

6.    对于 Success sample rate(成功采样率),请在 % 文本框中输入 100

7.    在 IAM roles(IAM 角色)部分,对于 Service role(服务角色),选择 Create new service role(创建新的服务角色),然后选择 Create new roles(创建新角色)。AWS Identity and Access Management (IAM) 控制台将打开。

注意:如果您已经拥有具有适当权限的 IAM 角色,则可以通过选择 Use existing service role(使用现有服务角色)来使用该服务角色。

8.    在 IAM 控制台权限请求页面上,选择 Allow(允许)。

9.    返回到 Amazon SNS 控制台后,选择 Save changes(保存更改)。

现在,通过以下针对 Amazon SNS 的策略和信任关系,创建 IAM 角色以实现成功和失败传输。请参阅以下示例:

成功传输的 IAM 角色:

arn:aws:iam::1111111111:role/SNSSuccessFeedback

失败传输的 IAM 角色:

arn:aws:iam::1111111111:role/SNSFailureFeedback

策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:PutMetricFilter",
                "logs:PutRetentionPolicy"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

Trust relationships (信任关系):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "sns.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

查看传输状态日志

1.    打开 Amazon CloudWatch console (Amazon CloudWatch 控制台)

2.    在导航窗格上,展开 Logs (日志),然后选择 Log groups (日志组)

3.    在 Filter(筛选条件)搜索框中,输入 sns 以仅查找 Amazon SNS 的日志组。

sns/your-AWS-region/your-account_ID/app/platform_name/application_name 日志组包含成功传输日志。

sns/us-east-1/1111111111/app/GCM/Test1
sns/us-east-1/1111111111/app/APNS_SANDBOX/Test2
sns/us-east-1/1111111111/app/APNS/Test3

sns/your-AWS-region/your-account_ID/app/platform_name/application_name/Failure 日志组包含失败传输日志:

sns/us-east-1/1111111111/app/GCM/Test1/Failure
sns/us-east-1/1111111111/app/APNS_SANDBOX/Test2/Failure
sns/us-east-1/1111111111/app/APNS/Test3/Failure

4.    选择要查看的 Amazon SNS 日志组。

5.    在 Log streams(日志流)选项卡上,选择特定日志流以查看应用程序终端节点传输日志。

请考虑以下事项:

  • 您无法为 CloudWatch Logs 中的流式传输添加前缀。
  • 您无法直接更改 Amazon SNS 的默认日志组名称。
  • 通知内容不会写入您的 CloudWatch 日志中。也就是说,SNS 主题传输日志不会将通知内容记录到 CloudWatch,而是将元数据写入 CloudWatch。
  • 如果您使用具有 SMS 和平台应用程序终端节点的 SNS 主题发布内容,则这些终端节点的传输状态日志仍会写入各自的日志组中。

通知失败问题排查

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

有关推送通知服务响应代码的列表,请参阅平台响应代码


这篇文章对您有帮助吗?


您是否需要账单或技术支持?