使用 Amazon X-Ray 跟踪 Amazon AppSync 中的请求
您可以使用 Amazon X-Ray 跟踪在 Amazon AppSync 中执行的请求。在提供 X-Ray 的所有 Amazon 区域中,您可以将 X-Ray 与 Amazon AppSync 一起使用。X-Ray 为您提供整个 GraphQL 请求的详细概述。这使您能够分析 API 及其基础解析器和数据来源中的延迟。您可以使用 X-Ray 服务地图查看请求延迟,包括与 X-Ray 集成的任何 Amazon 服务。您也可以配置采样规则,以根据您指定的标准指示 X-Ray 记录哪些请求以及以哪种采样率进行记录。
有关 X-Ray 中的采样的更多信息,请参阅 Configuring Sampling Rules in the Amazon X-Ray Console。
设置和配置
您可以通过 Amazon AppSync 控制台为 GraphQL API 启用 X-Ray 跟踪。
-
登录到 Amazon AppSync 控制台。
-
从导航面板中选择 Settings (设置)。
-
在 X-Ray 下,开启 Enable X-Ray (启用 X-Ray)。
-
选择保存。您的 API 现已启用 X-Ray 跟踪。
如果使用 Amazon CLI 或 Amazon CloudFormation,您也可以在创建新的 Amazon AppSync API 或更新现有的 Amazon AppSync API 时启用 X-Ray 跟踪,方法是将 xrayEnabled
属性设置为 true
。
如果为 Amazon AppSync API 启用了 X-Ray 跟踪,则会在您的账户中自动创建一个具有相应权限的 Amazon Identity and Access Management 服务相关角色。这允许 Amazon AppSync 以安全方式将跟踪发送到 X-Ray。
使用 X-Ray 跟踪您的 API
采样
通过使用采样规则,您可以控制在 Amazon AppSync 中记录的数据量,并且可以动态修改采样行为,而无需修改或重新部署代码。例如,此规则对 API ID 为 3n572shhcpfokwhdnq1ogu59v6
的 GraphQL API 的请求进行采样。
-
规则名称 -
test-sample
-
优先级 -
10
-
容器大小 -
10
-
固定速率 -
10
-
服务名称 -
*
-
服务类型 -
AWS::AppSync::GraphQLAPI
-
HTTP 方法 -
*
-
资源 ARN -
arn:aws:appsync:us-west-2:123456789012:apis/3n572shhcpfokwhdnq1ogu59v6
-
主机 -
*
了解跟踪
在为 GraphQL API 启用 X-Ray 跟踪时,您可以使用 X-Ray 跟踪详细信息页面检查有关向您的 API 发出的请求的详细延迟信息。以下示例显示了此特定请求的跟踪视图以及服务地图。该请求是对名为 postAPI
且具有 Post 类型的 API 发出的,其数据包含在名为 PostTable-Example
的 Amazon DynamoDB 表中。
下面的跟踪映像对应于以下 GraphQL 查询:
query getPost { getPost(id: "1") { id title } }
getPost
查询的解析器使用底层 DynamoDB 数据来源。以下跟踪视图显示对 DynamoDB 的调用,以及查询执行的各个部分的延迟:

-
在上图中,
/getPost
表示指向正在解析的元素的完整路径。在这种情况下,由于getPost
是根Query
类型上的字段,因此它直接显示在路径的根目录之后。 -
requestMappingTemplateEvaluation
表示 Amazon AppSync 在查询中评估该元素的请求映射模板所花的时间。 -
Query.getPost
表示类型和字段(采用Type.field
格式)。它可以包含多个子段,具体取决于 API 的结构和被跟踪的请求。-
DynamoDB
表示附加到此解析器的数据来源。它包含对 DynamoDB 进行网络调用以解析该字段的延迟。 -
responseMappingTemplateEvaluation
表示 Amazon AppSync 在查询中评估该元素的响应映射模板所花的时间。
-
在 X-Ray 中查看跟踪时,您可以选择 Amazon AppSync 分段中的子段并浏览详细视图,以获取有关这些子段的其他上下文和元数据信息。
对于某些深度嵌套查询或复杂查询,请注意,Amazon AppSync 传送到 X-Ray 的分段可能超过分段文档允许的最大大小(在 Amazon X-Ray Segment Documents 中定义了该大小)。X-Ray 不会显示超过限制的分段。