本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon SNS 和Amazon X-Ray
您可以Amazon X-Ray使用亚马逊Simple Notification Service (Amazon SNS) 来跟踪和分析请求通过您的 SNS 主题传送到支持 SNS 的订阅服务。使用 Amazon SNS 的 X-Ray acing 来分析您的消息及其后端服务的延迟,例如请求在某个主题上花费了多长时间,以及将消息传送到该主题的每个订阅需要多长时间。
如果您从已使用 X-Ray 检测的服务发布到 Amazon SNS 主题,Amazon SNS 会将跟踪上下文从发布者传递给订阅者。此外,您还可以开启主动追踪,将有关您的 Amazon SNS 订阅的区段数据发送到 X-Ray,以获取从仪器化 SNS 客户端发布的消息。使用 Amazon SNS 主题或 Amazon SNS API 或 CLI 开启对Amazon SNS 主题的信息。有关检测您的 SNS 客户端的更多信息,请参阅检测您的应用程序。
配置 Amazon SNS 主动跟踪
您可以使用 Amazon SNS 主动跟踪配置 Amazon SNS 主动跟踪。Amazon
当您使用 Amazon SNS 控制台时,Amazon SNS 会尝试为 SNS 调用 X-Ray 创建必要的权限。如果您没有足够的权限修改 X-Ray 资源策略,则尝试可能会被拒绝。有关这些权限的信息,请参阅 Amazon Simple N otificati on Service 开发人员指南的 Amazon SNS 访问控制示例案例 有关使用 Amazon SNS 主题的信息,请参阅 Amazon Simple Notificati on Service 开发人员指南的 Amazon SNS 主题的信息。
使用Amazon CLI 或 SDK 开启主动跟踪时,必须使用基于资源的策略手动配置权限。用于PutResourcePolicy
为 X-Ray 配置必要的基于资源的策略,以允许 Amazon SNS 向 X-Ray 发送跟踪信息。
例 基于 Amazon SNS 主动追踪的 X-Ray 资源策略示例
此示例政策文档指定了 Amazon SNS 向 X-Ray 发送向 X-Ray 发送向 X-Ray 发送跟踪数据所需的权限:
{ Version: "2012-10-17", Statement: [ { Sid: "SNSAccess", Effect: Allow, Principal: { Service: "sns.amazonaws.com", }, Action: [ "xray:PutTraceSegments", "xray:GetSamplingRules", "xray:GetSamplingTargets" ], Resource: "*", Condition: { StringEquals: { "aws:SourceAccount":
account-id
}, StringLike: { "aws:SourceArn": "arn:$partition
:sns:$region
:$account-id
:topic-name
" } } } ] }
要使用此示例政策文档,请将
、和partition
region
account-id
替换为您的特定Amazon分区、区域、账户 ID 和 Amazon SNS 主题名称。要向XAmazon SNS 主题发送向 X-Ray 发送向 X-Ray 发送向 X-Ray 发送跟踪数据,请将主题名称替topic-name
*
换
在 XAmazon SNS 发布商和订阅者跟踪 X-Ray azon S
使用 X-Ray 控制台查看服务地图、跟踪地图和追踪详情,这些信息显示 Amazon SNS 发布者和订阅者的关联视图。为某个主题开启 Amazon SNS 活动跟踪时,X-Ray 服务地图和跟踪地图会显示 Amazon SNS 发布者、Amazon SNS 主题和下游订阅者的连接节点:

选择跨越 Amazon SNS 发布商和订阅者的跟踪后,X-Ray 跟踪详情页面将显示跟踪地图和分段时间表。
例 Amazon SNS 发布商和订阅者的时间表示例
此示例显示了一个时间表,其中包括向 Amazon SNS 主题发送消息的 Amazon SNS 发布者,该消息由 Amazon SQS 订阅者处理。

上面的示例时间轴提供了有关 Amazon SNS 消息流的详细信息:
SNS 分段表示来自客户端
Publish
API 调用的往返持续时间。MyTo pic 区段代表Amazon SNS 响应发布请求的延迟。
S QS 子分段表示 Amazon SNS 将消息发布到 Amazon SQS 队列所花费的往返时间。
MyTopic 区段与 SQS 子分段之间的时间代表消息在 Amazon SNS 系统中花费的时间。
例 包含批量Amazon SNS 消息的时间表示例
如果在单个跟踪中批处理多条 Amazon SNS 消息,则区段时间表会显示代表已处理的每条消息的分段。
