

# コードスニペットを変更して CloudWatch RUM ウェブクライアントを構成する (オプション)
<a name="CloudWatch-RUM-modify-snippet"></a>

アプリケーションに挿入する前のコードスニペットを変更して、いくつかのオプションを有効または無効にすることができます。詳細については、「[CloudWatch RUM web client documentation](https://github.com/aws-observability/aws-rum-web/blob/main/docs/cdn_installation.md)」を参照してください。

次のセクションで説明するように、配慮しておくべき設定オプションが 4 つ存在します。

## 個人情報を含む可能性のあるリソース URL の収集を防止する
<a name="CloudWatch-RUM-resourceURL"></a>

デフォルトでは、CloudWatch RUM ウェブクライアントは、アプリケーションによってダウンロードされたリソースの URL を記録するように設定されています。これらのリソースには、HTML ファイル、画像、CSS ファイル、JavaScript ファイルなどが含まれます。アプリケーションによって、URL には個人を特定できる情報 (PII) が含まれている可能性があります。

アプリケーションがこのような構成の場合には、アプリケーションに挿入する前のコードスニペット内で `recordResourceUrl: false` を設定し、リソース URL のコレクションを無効にしておくことを強くお勧めします。

## ページビューを手動で記録する
<a name="CloudWatch-RUM-pageload"></a>

ウェブクライアントのデフォルト設定では、ページが最初にロードされた時点、ならびにブラウザの履歴 API が呼び出され時点でページビューが記録されます。デフォルトのページ ID は `window.location.pathname` です。ただし、場合によってはこの動作をオーバーライドしてアプリケーションを計測し、ページビューをプログラムで記録します。これにより、ページ ID とそれを記録するタイミングを管理できます。例えば、`/entity/123` または `/entity/456` などの変数識別子を持つ URI のウェブアプリケーションを考えてみましょう。デフォルトでは、CloudWatch RUM はパス名と一致する個別のページ ID を持つページビューイベントを URI ごとに生成しますが、代わりに同じページ ID でグループ化することもできます。これを実行するには、`disableAutoPageView` 設定を使用してウェブクライアントのページビュー自動化を無効にし、`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>

アプリケーションモニターを作成する際に、[**AWS X-Ray でサービスをトレースする**] を選択します。これにより、アプリケーションモニターがサンプリングするユーザーセッション中に発行された `XMLHttpRequest` および `fetch` リクエストのトレースを有効化します。その後、これらの HTTP リクエストについてのトレースを、CloudWatch RUM ダッシュボード、X-Ray トレースマップページ、X-Ray トレースの詳細ページ上に表示できるようになります。

デフォルトでは、これらのクライアント側トレースは、サーバー側のダウンストリームトレースとは接続されません。クライアント側のトレースをサーバー側トレースに接続し、エンドツーエンドのトレースを有効にするには、ウェブクライアントの `addXRayTraceIdHeader` オプションで `true` を設定します。これにより、CloudWatch RUM ウェブクライアントは、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>
```

**警告**  
HTTP リクエストに X-Ray トレースヘッダーを追加するための設定を、CloudWatch RUM のウェブクライアントで行うことで、クロスオリジンリソース共有 (CORS) の失敗を引き起こしたり、Sigv4 で署名されているリクエスト署名が無効化されたりする場合があります。詳細については、「[CloudWatch RUM web client documentation](https://github.com/aws-observability/aws-rum-web/blob/main/docs/cdn_installation.md)」を参照してください。本番環境でクライアント側の X-Ray トレースヘッダーの追加を行う前に、アプリケーションのテストを実施することを強くお勧めします。

詳細については、「[CloudWatch RUM web client documentation](https://github.com/aws-observability/aws-rum-web/blob/main/docs/cdn_installation.md#http)」を参照してください。

## CloudWatch RUM への署名なしリクエストの送信
<a name="CloudWatch-RUM-unsigned"></a>

既定では、RUM ウェブクライアントは RUM に送信されたすべてのリクエストに署名します。クライアント設定で `signing:false` を設定した場合、リクエストは CloudWatch RUM に送信されると署名されません。アプリケーションモニターにアタッチされたパブリックリソースベースのポリシーがある場合にのみ、データは RUM に取り込まれます。詳細については、「[CloudWatch RUM でのリソースベースのポリシーの使用](CloudWatch-RUM-resource-policies.md)」を参照してください。