

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# X-Ray AWS SDK for Node.js を使用した SDK 呼び出しのトレース
<a name="xray-sdk-nodejs-awssdkclients"></a>

**注記**  
X-Ray SDK/デーモンメンテナンス通知 – 2026 年 2 月 25 日、 AWS X-Ray SDKsデーモンはメンテナンスモードに移行します。 AWS では、X-Ray SDK とデーモンのリリースがセキュリティの問題にのみ対処するように制限されます。サポートタイムラインの詳細については、「[X-Ray SDK とデーモンのサポートタイムライン](xray-sdk-daemon-timeline.md)」を参照してください。OpenTelemetry に移行することをお勧めします。OpenTelemetry への移行の詳細については、「[X-Ray による計装から OpenTelemetry による計装への移行](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-migration.html)」を参照してください。

アプリケーションが AWS のサービス を呼び出してデータの保存、キューへの書き込み、または通知の送信を行うと、X-Ray SDK for Node.js は[サブセグメントのダウンストリームの呼び出しを追跡します](xray-sdk-nodejs-subsegments.md)。トレースされた AWS のサービスおよびこれらのサービス内でアクセスするリソース (Amazon S3 バケットや Amazon SQS キューなど) は、X-Ray コンソールのトレースマップにダウンストリームノードとして表示されます。

V[AWS SDK for JavaScript V2](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/welcome.html)[AWS SDK for JavaScript V3](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/welcome.html) を介して作成する AWS SDK クライアントを計測します。 AWS SDK バージョンごとに、 AWS SDK クライアントを計測するためのさまざまな方法が用意されています。

**注記**  
現在、 AWS X-Ray SDK for Node.js は、 AWS SDK for JavaScript V3 V2クライアントの計測時に返されるセグメント情報が少なくなります。例えば、DynamoDB への呼び出しを表すサブセグメントはテーブル名を返しません。トレースでこのセグメント情報が必要な場合は、 AWS SDK for JavaScript V2 の使用を検討してください。

------
#### [ AWS SDK for JavaScript V2 ]

への呼び出しで `aws-sdk` require ステートメントをラップすることで、すべての AWS SDK V2 クライアントを計測できます`AWSXRay.captureAWS`。

**Example app.js - AWS SDK 計測**  

```
const AWS = AWSXRay.captureAWS(require('aws-sdk'));
```

個々のクライアントを計測するには、 AWS SDK クライアントを への呼び出しでラップします`AWSXRay.captureAWSClient`。たとえば、`AmazonDynamoDB` クライアントを計測するには:

**Example app.js - DynamoDB クライアント計測**  

```
    const AWSXRay = require('aws-xray-sdk');
...
    const ddb = AWSXRay.captureAWSClient(new AWS.DynamoDB());
```

**警告**  
`captureAWS` と `captureAWSClient` との両方を使用しないでください。これにより、サブセグメントが重複します。

[ECMAScript モジュール](https://nodejs.org/api/esm.html) (ESM) で [TypeScript](https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html) を使用して JavaScript コードをロードする場合は、次の例を使用してライブラリをインポートします。

**Example app.js - AWS SDK 計測**  

```
import * as AWS from 'aws-sdk';
import * as AWSXRay from 'aws-xray-sdk';
```

ESM を使用してすべての AWS クライアントを計測するには、次のコードを使用します。

**Example app.js - AWS SDK 計測**  

```
import * as AWS from 'aws-sdk';
import * as AWSXRay from 'aws-xray-sdk';
const XRAY_AWS = AWSXRay.captureAWS(AWS);
const ddb = new XRAY_AWS.DynamoDB();
```

すべてのサービスにおいて、X-Ray コンソールでコールされた API の名前を確認できます。サービスのサブセットの場合、X-Ray SDK はセグメントに情報を追加して、サービスマップでより細かく指定します。

たとえば、実装された DynamoDB クライアントでコールすると、SDK はテーブルをターゲットとするコールのセグメントにテーブル名を追加します。コンソールで、各テーブルはサービスマップ内に個別のノードとして表示され、テーブルをターゲットにしないコール用の汎用の DynamoDB ノードが表示されます。

**Example 項目を保存するための DynamoDB に対するコールのサブセグメント**  

```
{
  "id": "24756640c0d0978a",
  "start_time": 1.480305974194E9,
  "end_time": 1.4803059742E9,
  "name": "DynamoDB",
  "namespace": "aws",
  "http": {
    "response": {
      "content_length": 60,
      "status": 200
    }
  },
  "aws": {
    "table_name": "scorekeep-user",
    "operation": "UpdateItem",
    "request_id": "UBQNSO5AEM8T4FDA4RQDEB94OVTDRVV4K4HIRGVJF66Q9ASUAAJG",
  }
}
```

名前付きリソースにアクセスしたとき、次のサービスをコールすると、サービスマップに追加のノードが作成されます。特定のリソースをターゲットとしないコールでは、サービスの汎用ノードが作成されます。
+ **Amazon DynamoDB** – テーブル名
+ **Amazon Simple Storage Service** – バケットとキー名
+ **Amazon Simple Queue Service** – キュー名

------
#### [ AWS SDK for JavaScript V3 ]

 AWS SDK for JavaScript V3 はモジュール式であるため、コードは必要なモジュールのみをロードします。このため、V3 は `captureAWS`メソッドをサポートしていないため、すべての AWS SDK クライアントを計測することはできません。

ECMAScript Modules (ESM) で TypeScript を使用して JavaScript コードをロードする場合は、次の例を使用してライブラリをインポートできます。

```
import * as AWS from 'aws-sdk';
import * as AWSXRay from 'aws-xray-sdk';
```

`AWSXRay.captureAWSv3Client` メソッドを使用して各 AWS SDK クライアントを計測します。たとえば、`AmazonDynamoDB` クライアントを計測するには:

**Example app.js - JavaScript V3 用 SDK を使用した DynamoDB クライアント計測**  

```
    const AWSXRay = require('aws-xray-sdk');
    const { DynamoDBClient } = require("@aws-sdk/client-dynamodb");
...
    const ddb = AWSXRay.captureAWSv3Client(new DynamoDBClient({ region: "region" }));
```

 AWS SDK for JavaScript V3 を使用する場合、テーブル名、バケット名、キー名、キュー名などのメタデータは現在返されません。したがって、トレースマップには AWS SDK for JavaScript V2 を使用して AWS SDK クライアントを計測する場合と同様に、名前付きリソースごとに個別のノードは含まれません。

**Example AWS SDK for JavaScript V3 を使用する場合に項目を保存するための DynamoDB への呼び出しのサブセグメント**  

```
{
  "id": "24756640c0d0978a",
  "start_time": 1.480305974194E9,
  "end_time": 1.4803059742E9,
  "name": "DynamoDB",
  "namespace": "aws",
  "http": {
    "response": {
      "content_length": 60,
      "status": 200
    }
  },
  "aws": {
    "operation": "UpdateItem",
    "request_id": "UBQNSO5AEM8T4FDA4RQDEB94OVTDRVV4K4HIRGVJF66Q9ASUAAJG",
  }
}
```

------