本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
亚马逊 SNS 和 AWS X-Ray
您可以 AWS X-Ray 与亚马逊简单通知服务 (Amazon SNS) 配合使用,在请求通过您的 SNS 主题传送到您的SNS-supported订阅服务时跟踪和分析这些请求。使用 Amazon SNS X-Ray 跟踪来分析您的消息及其后端服务的延迟,例如请求在一个主题上花费了多长时间,以及将消息传送到每个主题的订阅所花费的时间。亚马逊 SNS 支持 X-Ray 跟踪标准和 FIFO 主题。
如果您通过已安装工具的服务向 Amazon SNS 主题发布内容,则 Amazon SNS 会将跟踪上下文从发布商传递给订阅者。 X-Ray此外,您可以开启主动跟踪,将有关您的 Amazon SNS 订阅的区段数据发送到 X-Ray 从装有工具的 SNS 客户端发布的消息。使用 Amazon SNS 控制台为某个 Amazon SNS 主题打开活动跟踪,或通过使用 Amazon SNS API 或 CLI。请参阅检测应用程序,详细了解如何检测 SNS 客户端。
配置 Amazon SNS 活动跟踪
您可以使用亚马逊 SNS 控制台或 AWS CLI 或 SDK 来配置 Amazon SNS 主动跟踪。
当您使用亚马逊 SNS 控制台时,亚马逊 SNS 会尝试为 SNS 的呼叫创建必要的权限。 X-Ray如果您没有足够的权限修改 X-Ray 资源策略,则该尝试可能会被拒绝。有关这些权限的更多信息,请参阅《Amazon Simple Notification Service 开发人员指南》中的 Amazon SNS 中的标识和访问管理和 Amazon SNS 访问控制示例。如需了解如何使用 Amazon SNS 控制台打开活动跟踪的更多信息,请参阅《Amazon Simple Notification Service 开发人员指南》中的在 Amazon SNS 主题上启用活动跟踪。
使用 AWS 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" } } } ] }'
要使用这些示例,请将partitionregion、和account-id替换为您的特定 AWS 分区、区域、账户 ID 和 Amazon SNS 主题名称。要向所有 Amazon SNS 主题授予向其发送跟踪数据的权限 X-Ray,请将主题名称替topic-name*换为。
在控制台中查看 Amazon SNS 发布商和订阅者的踪迹 X-Ray
使用 X-Ray 控制台查看跟踪地图和追踪详细信息,这些详细信息显示了 Amazon SNS 发布商和订阅者的关联视图。当为某个主题启用 Amazon SNS 主动跟踪时, X-Ray 跟踪映射和追踪详细信息地图会显示 Amazon SNS 发布者、亚马逊 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 消息,则分段时间线中会显示代表被处理的每条消息的分段。