Amazon Simple Notification Service
开发人员指南 (API 版本 2010-03-31)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Amazon SNS 消息传输状态

对于使用下列 Amazon SNS 终端节点的主题,Amazon SNS 支持记录发送到这些主题的通知消息的传输状态:

  • 应用程序

  • HTTP

  • Lambda

  • SQS

配置消息传输状态属性以后,将针对发送到订阅 Amazon SNS 终端节点的主题的消息向 CloudWatch Logs 发送日志条目。记录消息传输状态有助于提供更好的业务洞察力,例如以下方面:

  • 了解消息是否已传输到 Amazon SNS 终端节点。

  • 识别从 Amazon SNS 终端节点发送到 Amazon SNS 的响应。

  • 确定消息停留时间(发布时间戳与将消息转交给 Amazon SNS 终端节点之间的时间差)。

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

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

以下步骤介绍如何使用控制台为从 Amazon SNS 发送到 AWS Lambda 终端节点的通知配置消息传输状态属性。

要为从 Amazon SNS 发送到 Lambda 终端节点的通知配置消息传输状态,请执行以下操作:

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

  2. 在左侧导航窗格中,选择主题,然后选择您希望接收消息传输状态信息的主题。

  3. 选择操作,然后选择传输状态

  4. 选中 Lambda 复选框。

  5. 传输状态对话框中,选择创建 IAM 角色

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

  6. 选择允许 给予 Amazon SNS 写入权限以代表您使用 CloudWatch Logs。

  7. 切换回传输状态对话框,在采样成功百分比 (0-100) 字段中输入一个数字作为要接收 CloudWatch Logs 的已发送成功消息的百分比。

    注意

    配置用于消息传输状态的应用程序属性以后,所有失败的消息传输都会生成 CloudWatch Logs。

  8. 最后,选择保存配置

    现在您就可以查看和分析包含消息传输状态的 CloudWatch Logs了。有关如何使用 CloudWatch 的更多信息,请参阅 CloudWatch 文档

使用 AWS 开发工具包为订阅 Amazon SNS 终端节点的主题配置消息传输状态属性

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

主题属性

您可以对消息传输状态使用下列主题属性名称值:

应用程序

  • ApplicationSuccessFeedbackRoleArn

  • ApplicationSuccessFeedbackSampleRate

  • ApplicationFailureFeedbackRoleArn

    注意

    除了能够为发送到 Amazon SNS 应用程序终端节点的通知消息的消息传输状态配置主题属性,您还可以为发送到推送通知服务的推送通知消息的传输状态配置应用程序属性。有关更多信息,请参阅使用用于消息传输状态的 Amazon SNS 应用程序属性

HTTP

  • HTTPSuccessFeedbackRoleArn

  • HTTPSuccessFeedbackSampleRate

  • HTTPFailureFeedbackRoleArn

Lambda

  • LambdaSuccessFeedbackRoleArn

  • LambdaSuccessFeedbackSampleRate

  • LambdaFailureFeedbackRoleArn

SQS

  • SQSSuccessFeedbackRoleArn

  • SQSSuccessFeedbackSampleRate

  • SQSFailureFeedbackRoleArn

<ENDPOINT>SuccessFeedbackRoleArn<ENDPOINT>FailureFeedbackRoleArn 属性用于授予 Amazon SNS 写入权限,以代表您使用 CloudWatch Logs。<ENDPOINT>SuccessFeedbackSampleRate 属性用于指定成功传输消息的采样率百分比 (0-100)。配置 <ENDPOINT>FailureFeedbackRoleArn 属性以后,所有失败的消息传输都会生成 CloudWatch Logs。

用于配置主题属性的 AWS 开发工具包示例

以下示例说明如何使用 AWS 开发工具包提供的 Amazon SNS 客户端配置主题属性。

AWS SDK for Java适用于 .NET 的 AWS 开发工具包
AWS SDK for Java

以下 Java 示例显示对于订阅 Amazon SNS终端节点的主题,如何使用 SetTopicAttributes API 为发送到这些主题的通知消息的消息传输状态配置主题属性。在此示例中,假设已为 topicArnattribNameattribValue 设置字符串值。

final static String topicArn = ("arn:aws:sns:us-west-2:123456789012:MyTopic"); final static String attribName = ("LambdaSuccessFeedbackRoleArn"); final static String attribValue = ("arn:aws:iam::123456789012:role/SNSSuccessFeedback");
SetTopicAttributesRequest setTopicAttributesRequest = new SetTopicAttributesRequest(); setTopicAttributesRequest.withTopicArn(topicArn); setTopicAttributesRequest.setAttributeName(attribName); setTopicAttributesRequest.setAttributeValue(attribValue);

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

适用于 .NET 的 AWS 开发工具包

以下 .NET 示例显示对于订阅 Amazon SNS 终端节点的主题,如何使用 SetTopicAttributes API 为发送到这些主题的通知消息的消息传输状态配置主题属性。在此示例中,假设已为 topicArnattribNameattribValue 设置字符串值。

static String topicArn = "arn:aws:sns:us-west-2:123456789012:MyTopic"; static String attribName = "LambdaSuccessFeedbackRoleArn"; String attribValue = "arn:aws:iam::123456789012:role/SNSSuccessFeedback";
SetTopicAttributesRequest setTopicAttributesRequest = new SetTopicAttributesRequest { TopicArn = topicArn, AttributeName = attribName, AttributeValue = attribValue };

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