Amazon SNS 中的主动跟踪
当用户请求经过您的 Amazon SNS 主题到达您的 Amazon Data Firehose、Amazon Lambda、Amazon SQS 和 HTTP/S 端点订阅时,您可以使用 Amazon X-Ray 跟踪和分析这些请求。因为 X-Ray 为您提供了整个请求的端到端视图,所以您可以查看是什么在调用 Amazon SNS 主题,以及主题订阅的下游是什么。您可以分析消息及其后端服务的延迟(例如,请求在某个主题上花费了多长时间,以及将消息传送到该主题的每个订阅花费了多长时间)。
重要
订阅数很多的 Amazon SNS 主题可能达到大小限制,无法完全跟踪。有关跟踪文档大小限制的信息,请参阅《Amazon 一般参考》中的 X-Ray 服务限额。
如果您从正在跟踪的服务中调用 Amazon SNS API,则 Amazon SNS 会传递跟踪,即使在 API 上未启用 X-Ray 跟踪也是如此。
Amazon SNS 对于标准主题和 FIFO 主题都支持 X-Ray 跟踪。您可以使用 Amazon SNS 控制台SetTopicAttributes
API、Amazon Simple Notification Service CLI 参考或 Amazon CloudFormation 为 Amazon SNS 主题启用 X-Ray。
要了解有关将 Amazon SNS 与 X-Ray 结合使用的更多信息,请参阅《Amazon X-Ray 开发人员指南》中的 Amazon SNS 和 Amazon X-Ray。
主题
主动跟踪权限
使用 Amazon SNS 控制台时,Amazon SNS 会尝试为 Amazon SNS 主题创建调用 X-Ray 所需的权限。如果您没有足够的权限使用 Amazon SNS 控制台,则尝试可能会被拒绝。有关更多信息,请参阅 Amazon SNS 中的 Identity and Access Management和 用于 Amazon SNS 访问控制的示例案例。
使用 CLI 时,必须手动配置权限。这些权限是使用资源策略配置的。有关在 X-Ray 中使用所需权限的更多信息,请参阅 Amazon SNS 和 Amazon X-Ray。
使用 Amazon 管理控制台对 Amazon SNS 主题启用主动跟踪
在 Amazon SNS 主题上启用主动跟踪后,它会读取跟踪 ID,根据跟踪 ID 向客户发送数据,并将跟踪 ID 传播到下游服务。
登录 Amazon SNS 控制台
。 -
选择一个主题或创建一个新主题。有关创建主题的详细信息,请参阅创建 Amazon SNS 主题。
-
在创建主题页面的详细信息部分,选择主题类型:FIFO或标准。
-
输入主题的名称。
-
(可选)输入主题的显示名称。
-
-
展开 Active tracing(主动跟踪),然后选择 Use active tracing(使用主动跟踪)。
一旦您已为 Amazon SNS 主题启用了 X-Ray,则可以使用 X-Ray 服务地图查看该主题的端到端跟踪和服务地图。
使用 Amazon SDK 对 Amazon SNS 主题启用主动跟踪
以下代码示例显示如何使用 Amazon SDK for Java 对 Amazon SNS 主题启用主动跟踪。
public static void enableActiveTracing(SnsClient snsClient, String topicArn) { try { SetTopicAttributesRequest request = SetTopicAttributesRequest.builder() .attributeName("TracingConfig") .attributeValue("Active") .topicArn(topicArn) .build(); SetTopicAttributesResponse result = snsClient.setTopicAttributes(request); System.out.println("\n\nStatus was " + result.sdkHttpResponse().statusCode() + "\n\nTopic " + request.topicArn() + " updated " + request.attributeName() + " to " + request.attributeValue()); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); } }
使用 Amazon CLI 对 Amazon SNS 主题启用主动跟踪
以下代码示例显示如何使用 Amazon CLI 对 Amazon SNS 主题启用主动跟踪。
aws sns set-topic-attributes \ --topic-arn arn:aws:sns:us-west-2:123456789012:MyTopic \ --attribute-name TracingConfig \ --attribute-value Active
使用 Amazon CloudFormation 对 Amazon SNS 主题启用主动跟踪
以下 Amazon CloudFormation 堆栈显示如何对 Amazon SNS 主题启用主动跟踪。
AWSTemplateFormatVersion: 2010-09-09 Resources: MyTopicResource: Type: 'AWS::SNS::Topic' Properties: TopicName: 'MyTopic' TracingConfig: 'Active'
验证为您的主题启用了主动跟踪
您可以使用 Amazon SNS 控制台来验证是否对您的主题启用了主动跟踪,或者资源策略是否添加失败。
登录 Amazon SNS 控制台
。 -
在左侧导航窗格中,选择主题。
-
在 Topics(主题)页上,选择一个主题。
-
请选择 Integrations(集成)选项卡。
启用主动跟踪后,会显示绿色的 Active(活动)图标。
-
如果您启用了主动跟踪但没有看到资源策略已添加,请选择 Create policy(创建策略)以添加所需的额外权限。
测试主动跟踪
登录 Amazon SNS 控制台
。 -
创建 Amazon SNS 主题。有关如何执行该操作的详细信息,请参阅 使用 Amazon Web Services Management Console创建主题。
-
展开 Active tracing(主动跟踪),然后选择 Use active tracing(使用主动跟踪)。
-
向 Amazon SNS 主题发布消息。有关如何执行该操作的详细信息,请参阅 要使用 Amazon Web Services Management Console 将消息发布到 Amazon SNS 主题。
-
使用 X-Ray 服务地图查看该主题的端到端跟踪和服务地图。