如何访问 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。
有关推送通知服务响应代码的列表,请参阅平台响应代码。