Amazon Simple Notification Service
开发人员指南 (API Version 2010-03-31)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

使用用于消息传输状态的 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. 在左侧导航窗格中,单击 Topics,然后单击您希望接收消息传输状态信息的主题。

  3. 单击 Actions,然后单击 Delivery status

  4. 单击 Lambda 复选框。

  5. Delivery Status 对话框上,单击 Create IAM Roles

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

  6. 单击 Allow 给予 Amazon SNS 写入权限以代表您使用 CloudWatch Logs。

  7. 切换回 Delivery Status 对话框,在 Percentage of Success to Sample (0-100) 字段中输入一个数字作为要接收 CloudWatch Logs 的已发送成功消息百分比。

    注意

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

  8. 最后,单击 Save Configuration

    现在您就可以查看和分析包含消息传输状态的 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。

用于配置主题属性的 Java 示例

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

Copy
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");
Copy
SetTopicAttributesRequest setTopicAttributesRequest = new SetTopicAttributesRequest(); setTopicAttributesRequest.withTopicArn(topicArn); setTopicAttributesRequest.setAttributeName(attribName); setTopicAttributesRequest.setAttributeValue(attribValue);

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