

# 修改代码片段以配置 CloudWatch RUM Web 客户端（可选）
<a name="CloudWatch-RUM-modify-snippet"></a>

您可以在代码段插入应用程序之前对其进行修改，以激活或停用多个选项。有关更多信息，请参阅 [CloudWatch RUM Web 客户端文档](https://github.com/aws-observability/aws-rum-web/blob/main/docs/cdn_installation.md)。

正如这些章节中所述，您必须注意四个配置选项。

## 防止收集可能包含个人信息的资源 URL
<a name="CloudWatch-RUM-resourceURL"></a>

预设情况下，CloudWatch RUM Web 客户端配置为记录应用程序下载的资源的 URL。这些资源包括 HTML 文件、图像、CSS 文件、JavaScript 文件等。对于某些应用程序，URL 可能包含个人身份信息（PII）。

如果应用程序属于这种情况，则强烈建议您通过在代码段配置中设置 `recordResourceUrl: false` 以禁用收集资源 URL，然后再将其插入到应用程序中。

## 手动记录页面浏览次数
<a name="CloudWatch-RUM-pageload"></a>

默认情况下，Web 客户端会在页面首次加载以及调用浏览器的历史 API 时记录页面浏览次数。默认页面 ID 为 `window.location.pathname`。但在某些情况下，您可能需要覆盖此行为并利用应用程序以编程方式记录页面浏览量。这样您可以控制页面 ID 及其记录时间。例如，假设一个 Web 应用程序的 URI 带有变量标识符，例如 `/entity/123` 或 `/entity/456`。默认情况下，CloudWatch RUM 会为每个具有与路径名匹配的不同页面 ID 的 URI 生成页面浏览事件，但您可能希望改用相同的页面 ID 对它们进行分组。为此，请使用 `disableAutoPageView` 配置禁用 Web 客户端的页面浏览自动化，然后使用 `recordPageView` 命令设置所需的页面 ID。有关更多信息，请参阅 GitHub 上的[特定于应用程序的配置](https://github.com/aws-observability/aws-rum-web/blob/main/docs/configuration.md)。

**嵌入式脚本示例：**

```
cwr('recordPageView', { pageId: 'entityPageId' });
```

**JavaScript 模块示例：**

```
awsRum.recordPageView({ pageId: 'entityPageId' });
```

## 启用 X-Ray 端到端跟踪
<a name="CloudWatch-RUM-xraytraceheader"></a>

在创建应用程序监控时，选择 **Trace my service with AWS X-Ray**（使用跟踪我的服务）将启用跟踪在应用程序监控采样的用户会话期间发出的 `XMLHttpRequest` 和 `fetch` 请求。然后，您可在 CloudWatch RUM 控制面板、X-Ray 跟踪地图和跟踪详细信息页面查看来自这些 HTTP 请求的跟踪。

默认情况下，这些客户端跟踪未连接到下游服务器端跟踪。要将客户端跟踪连接到服务器端跟踪并启用端到端跟踪，请在 Web 客户端中将 `addXRayTraceIdHeader` 选项设置为 `true`。这将导致 CloudWatch RUM Web 客户端向 HTTP 请求添加 X-Ray 跟踪标头。

下面的代码块展示了添加客户端跟踪的示例。为提高可读性，此示例中省略了一些配置选项。

```
<script>
    (function(n,i,v,r,s,c,u,x,z){...})(
        'cwr',
        '00000000-0000-0000-0000-000000000000',
        '1.0.0',
        'us-west-2',
        'https://client.rum.us-east-1.amazonaws.com/1.0.2/cwr.js',
        {
            enableXRay: true,
            telemetries: [ 
                'errors', 
                'performance',
                [ 'http', { addXRayTraceIdHeader: true } ]
            ]
        }
    );
</script>
```

**警告**  
如果使用 SigV4 签署请求，则将 CloudWatch RUM Web 客户端配置为向 HTTP 请求添加 X-Ray 跟踪标头可能会导致跨源资源共享 (CORS) 失败或该请求的签名无效。有关更多信息，请参阅 [CloudWatch RUM Web 客户端文档](https://github.com/aws-observability/aws-rum-web/blob/main/docs/cdn_installation.md)。我们强烈建议您在生产环境中添加客户端 X-Ray 跟踪标头之前测试应用程序。

有关更多信息，请参阅 [CloudWatch RUM Web 客户端文档](https://github.com/aws-observability/aws-rum-web/blob/main/docs/cdn_installation.md#http)

## 向 CloudWatch RUM 发送未签名的请求
<a name="CloudWatch-RUM-unsigned"></a>

默认情况下，RUM Web 客户端会对发送到 RUM 的所有请求进行签名。如果您在客户端配置中设置了 `signing:false`，则请求在发送到 CloudWatch RUM 时将处于未签名状态。只有在应用程序监测仪上附加了基于公共资源的策略时，才会将数据摄取到 RUM。有关更多信息，请参阅 [将基于资源的策略与 CloudWatch RUM 结合使用](CloudWatch-RUM-resource-policies.md)。