Amazon SNS 中的主动跟踪 - Amazon Simple Notification Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon SNS 中的主动跟踪

当用户通过您的亚马逊 SNS 主题传输Amazon X-Ray到您的亚马逊数据 Firehose、Amazon S Amazon LambdaQS 和 HTTP/S 终端节点订阅时,您可以使用来跟踪和分析他们的请求。由 end-to-end 于 X-Ray 为您提供整个请求的视图,因此您可以查看什么叫做 Amazon SNS 主题,以及主题订阅的下游内容。您可以分析消息及其后端服务的延迟(例如,请求在某个主题上花费了多长时间,以及将消息传送到该主题的每个订阅花费了多长时间)。

重要

订阅数很多的 Amazon SNS 主题可能达到大小限制,无法完全跟踪。有关跟踪文档大小限制的信息,请参阅《Amazon 一般参考》中的 X-Ray 服务限额

如果您从正在跟踪的服务中调用 Amazon SNS API,则 Amazon SNS 会传递跟踪,即使在 API 上未启用 X-Ray 跟踪也是如此。

Amazon SNS 对于标准主题和 FIFO 主题都支持 X-Ray 跟踪。您可以使用 Amazon SNS 控制台Amazon SNS SetTopicAttributes APIAmazon 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 SNS 主题启用主动跟踪(控制台)

在 Amazon SNS 主题上启用主动跟踪后,它会读取跟踪 ID,根据跟踪 ID 向客户发送数据,并将跟踪 ID 传播到下游服务。

  1. 登录 Amazon SNS 控制台

  2. 选择一个主题或创建一个新主题。有关创建主题的详细信息,请参阅创建 Amazon SNS 主题

  3. 创建主题页面的详细信息部分,选择主题类型:FIFO标准

    1. 输入主题的名称

    2. (可选)输入主题的显示名称

  4. 展开 Active tracing(主动跟踪),然后选择 Use active tracing(使用主动跟踪)。

为亚马逊 SNS 主题启用 X-Ray 后,您可以使用 X-Ray 服务地图查看该主题的 end-to-end 跟踪和服务地图。

对 Amazon SNS 主题启用主动跟踪(Amazon SDK)

以下代码示例显示如何使用 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 SNS 主题启用主动跟踪(Amazon CLI)

以下代码示例显示如何使用 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 SNS 主题启用主动跟踪(Amazon CloudFormation)

以下 Amazon CloudFormation 堆栈显示如何对 Amazon SNS 主题启用主动跟踪。

AWSTemplateFormatVersion: 2010-09-09 Resources: MyTopicResource: Type: 'AWS::SNS::Topic' Properties: TopicName: 'MyTopic' TracingConfig: 'Active'

验证为您的主题启用了主动跟踪

您可以使用 Amazon SNS 控制台来验证是否对您的主题启用了主动跟踪,或者资源策略是否添加失败。

  1. 登录 Amazon SNS 控制台

  2. 在左侧导航窗格中,选择主题

  3. Topics(主题)页上,选择一个主题。

  4. 请选择 Integrations(集成)选项卡。

    启用主动跟踪后,会显示绿色的 Active(活动)图标。

  5. 如果您启用了主动跟踪但没有看到资源策略已添加,请选择 Create policy(创建策略)以添加所需的额外权限。


				Active tracing integrations(主动跟踪集成)选项卡。

测试主动跟踪

  1. 登录 Amazon SNS 控制台

  2. 创建 Amazon SNS 主题。有关如何执行该操作的详细信息,请参阅 要使用创建主题 Amazon Web Services Management Console

  3. 展开 Active tracing(主动跟踪),然后选择 Use active tracing(使用主动跟踪)。

  4. 向 Amazon SNS 主题发布消息。有关如何执行该操作的详细信息,请参阅 要使用 Amazon Web Services Management Console将消息发布到 Amazon SNS 主题

  5. 使用 X-Ray 服务地图查看该主题的 end-to-end 跟踪和服务地图。


				带有 Amazon SNS 主题和多种订阅类型的 X-Ray 服务地图示例。