

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

# AWS X-Ray 用于跟踪中的请求 AWS AppSync
<a name="x-ray-tracing"></a>

您可以使用跟踪[AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html)请求在中执行的过程 AWS AppSync。您可以在所有可用 X-Ray 的 AWS 区域 AWS AppSync 中使用 X-Ray。X-Ray 为您提供整个 GraphQL 请求的详细概述。这使您能够分析自己及其底层解析器和数据源中的延迟。 APIs 您可以使用 X-Ray 服务地图来查看请求的延迟，包括与 X-Ray 集成的任何 AWS 服务。您也可以配置采样规则，以根据您指定的标准指示 X-Ray 记录哪些请求以及以哪种采样率进行记录。

有关在 X-Ray 中采样的更多信息，请参阅在[AWS X-Ray 控制台中配置采样规则](https://docs.aws.amazon.com/xray/latest/devguide/xray-console-sampling.html)。

## 设置和配置
<a name="setup-and-configuration"></a>

您可以通过控制台为 GraphQL API 启用 X-Ray 跟踪。 AWS AppSync

1. 登录 AWS AppSync 控制台。

1. 从导航面板中选择 **Settings (设置)**。

1. 在 **X-Ray** 下，开启 **Enable X-Ray (启用 X-Ray)**。

1. 选择**保存**。您的 API 现已启用 X-Ray 跟踪。

如果您使用的是 AWS CLI 或 AWS CloudFormation，则还可以在创建新 AWS AppSync API 或更新现有 AWS AppSync API 时启用 X-Ray 跟踪，方法是将`xrayEnabled`属性设置为`true`。

为某 AWS AppSync 个 API 启用 X-Ray 跟踪后，系统会在您的账户中自动创建一个具有相应权限的 AWS Identity and Access Management [服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html)。这允许 AWS AppSync 以安全的方式向 X-Ray 发送跟踪。

## 使用 X-Ray 跟踪您的 API
<a name="tracing-your-api-with-xray"></a>

### 采样
<a name="sampling"></a>

通过使用采样规则，您可以控制您在 AWS 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` 
+  **主机** - `*` 

### 了解跟踪
<a name="understanding-traces"></a>

在为 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 的调用，以及查询执行的各个部分的延迟：

![\[Trace view showing client request, postAPI, and DynamoDB with durations and request details.\]](http://docs.aws.amazon.com/zh_cn/appsync/latest/devguide/images/xray-getpost-trace-view.png)

+ 在上图中，`/getPost` 表示指向正在解析的元素的完整路径。在这种情况下，由于 `getPost` 是根 `Query` 类型上的字段，因此它直接显示在路径的根目录之后。
+  `requestMappingTemplateEvaluation` 表示 AWS AppSync 在查询中评估此元素的请求映射模板所花的时间。
+  `Query.getPost` 表示类型和字段（采用 `Type.field` 格式）。它可以包含多个子段，具体取决于 API 的结构和被跟踪的请求。
  +  `DynamoDB` 表示附加到此解析器的数据来源。它包含对 DynamoDB 进行网络调用以解析该字段的延迟。
  +  `responseMappingTemplateEvaluation` 表示 AWS AppSync 在查询中评估此元素的响应映射模板所花的时间。

在 X-Ray 中查看轨迹时，您可以通过选择子分段并浏览详细视图，获得有关区 AWS AppSync 段中子分段的其他上下文和元数据信息。

对于某些深度嵌套或复杂的查询，请注意，传递给 X-Ray 的区段 AWS AppSync 可能大于区段文档所允许的最大大小，如[AWS X-Ray 区段文档](https://docs.aws.amazon.com/xray/latest/devguide/xray-api-segmentdocuments.html)中所定义。X-Ray 不会显示超过限制的分段。