本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon SNS 和 Amazon X-Ray
可以将 Amazon X-Ray 与 Amazon Simple Notification Service (Amazon SNS) 一起使用来跟踪和分析通过 SNS 主题传输到 SNS 支持的订阅服务的请求。使用 X-Ray 跟踪与 Amazon SNS 分析消息及其后端服务的延迟(例如,请求在某个主题上花费了多长时间,以及将消息传送到该主题的每个订阅花费了多长时间)。Amazon SNS 对于标准主题和 FIFO 主题都支持 X-Ray 跟踪。
如果您从已经使用 X-Ray 检测过的服务发布到 Amazon SNS 主题,则 Amazon SNS 会将发布者的跟踪上下文传递给订阅用户。此外,还可以为从已检测 SNS 客户端发布的消息,打开活动跟踪将与 Amazon SNS 订阅相关的分段数据发送给 X-Ray。使用 Amazon SNS 控制台为某个 Amazon SNS 主题打开活动跟踪,或通过使用 Amazon SNS API 或 CLI。请参阅检测应用程序,详细了解如何检测 SNS 客户端。
配置 Amazon SNS 活动跟踪
您可以使用 Amazon SNS 控制台、Amazon CLI 或 SDK 配置 Amazon SNS 活动跟踪。
使用 Amazon SNS 控制台时,Amazon SNS 会尝试为 SNS 创建调用 X-Ray 所需的权限。如果您没有足够的权限修改 X-Ray 资源策略,则尝试可能会被拒绝。有关这些权限的更多信息,请参阅《Amazon Simple Notification Service 开发人员指南》中的 Amazon SNS 中的标识和访问管理和 Amazon SNS 访问控制示例。如需了解如何使用 Amazon SNS 控制台打开活动跟踪的更多信息,请参阅《Amazon Simple Notification Service 开发人员指南》中的在 Amazon SNS 主题上启用活动跟踪。
使用 Amazon CLI 或 SDK 打开活动跟踪时,必须使用基于资源的策略手动配置权限。使用 PutResourcePolicy 基于资源的必要策略配置 X-Ray,以允许 Amazon SNS 将跟踪发送给 X-Ray。
例 Amazon SNS 主动跟踪的 X-Ray 基于资源的策略示例
以下示例策略文档指定了 Amazon SNS 将跟踪数据发送给 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" } } } ] }
使用 CLI 创建基于资源的策略,赋予 Amazon SNS 将跟踪数据发送给 X-Ray 的权限:
aws xray put-resource-policy --policy-name MyResourcePolicy --policy-document '{ "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 主题名称。如需赋予所有 Amazon SNS 主题将跟踪数据发送给 X-Ray 的权限,请将主题名称替换为 topic-name*。
在 X-Ray 控制台中查看 Amazon SNS 发布者和订阅用户跟踪。
使用 X-Ray 控制台查看跟踪地图和跟踪详情,这些地图显示了 Amazon SNS 发布者和订阅用户的互联视图。为某个主题打开 Amazon SNS 活动跟踪后,X-Ray 跟踪地图和跟踪详情地图上会显示 Amazon SNS 发布者、Amazon SNS 主题和下游订阅用户的关联节点:
选择跨越 Amazon SNS 发布者和订阅用户的跟踪时,X-Ray 跟踪详情页面会显示跟踪详情地图和分段时间线。
例显示 Amazon SNS 发布者和订阅订阅用户的时间线示例
此示例显示的时间线中包含向某个 Amazon SNS 主题发送一条消息的 Amazon SNS 发布者,由 Amazon SNS 订阅用户处理。
上面的示例时间线提供有关 Amazon SNS 消息流的详细信息:
SNS 分段代表从客户端发出的
PublishAPI 调用的往返持续时间。myTopic 分段代表 Amazon SNS 响应发布请求的延迟。
SQS 子分段表示 Amazon SNS 将消息发布到 Amazon SQS 队列所花费的往返时间。
MyTopic 分段和 SQS 子分段之间的时间代表这条消息在 Amazon SNS 系统中花费的时间。
例包含批处理的 Amazon SNS 消息的时间线示例
如果在一个跟踪里批处理多条 Amazon SNS 消息,则分段时间线中会显示代表被处理的每条消息的分段。