

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

# ダウンストリームコールを実装するためのライブラリへのパッチ適用
<a name="xray-sdk-python-patching"></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)」を参照してください。

ダウンストリーム呼び出しを測定するには、X-Ray SDK for Python を使用して、アプリケーションが使用するライブラリにパッチを適用します。X-Ray SDK for Python では、以下のライブラリにパッチを適用できます。

**サポートされているライブラリ**
+ `[botocore](https://pypi.python.org/pypi/botocore)`、 `[boto3](https://pypi.python.org/pypi/boto3)` – 計測 AWS SDK for Python (Boto) クライアント。
+ `[pynamodb](https://pypi.python.org/pypi/pynamodb/)` – 測定された Amazon DynamoDB クライアントの PynamoDB のバージョン。
+ `[aiobotocore](https://pypi.python.org/pypi/aiobotocore)`、`[aioboto3](https://pypi.python.org/pypi/aioboto3)` - 測定された [asyncio](https://docs.python.org/3/library/asyncio.html)統合バージョンの SDK for Python クライアント。
+ `[requests](https://pypi.python.org/pypi/requests)`、`[aiohttp](https://pypi.python.org/pypi/aiohttp)` - 測定された高レベルの HTTP クライアント。
+ `[httplib](https://docs.python.org/2/library/httplib.html)`、[https://docs.python.org/3/library/http.client.html](https://docs.python.org/3/library/http.client.html) – 測定された低レベルの HTTP クライアントおよびそれらを使用する高レベルのライブラリ。
+ `[sqlite3](https://docs.python.org/3/library/sqlite3.html)` - SQLite クライアントを測定します。
+ `[mysql-connector-python](https://pypi.python.org/pypi/mysql-connector-python)` - MySQL クライアントを測定します。
+ `[pg8000](https://pypi.org/project/pg8000/)` - Pure-Python PostgreSQL インターフェイスを測定します。
+ `[psycopg2](https://pypi.org/project/psycopg2/)` - PostgreSQL データベースアダプターを測定します。
+ `[pymongo](https://pypi.org/project/pymongo/)` - MongoDB クライアントを測定します。
+ `[pymysql](https://pypi.org/project/PyMySQL/)` - MySQL と MariaDB 用 PyMySQL ベースクライアントを測定します。

パッチ適用されたライブラリを使用すると、X-Ray SDK for Python は呼び出しのサブセグメントが作成され、リクエストとレスポンスの情報を記録します。SDK ミドルウェアまたは AWS Lambdaのいずれかから、サブセグメントを作成するためにSDK でセグメントを使用できる必要があります。

**注記**  
SQLAlchemy ORM を使用する場合は、SQLAlchemy のセッションクラスとクエリクラスの SDK のバージョンをインポートして、SQL クエリを追加できます。手順については、[Use SQLAlchemy ORM](https://github.com/aws/aws-xray-sdk-python/blob/master/README.md#use-sqlalchemy-orm) を参照してください。

使用可能なすべてのライブラリにパッチを適用するには、`aws_xray_sdk.core` の `patch_all` 関数を使用します。`httplib` や `urllib` などの一部のライブラリでは、`patch_all(double_patch=True)` を呼び出して二重パッチ適用を有効にすることが必要な場合があります。

**Example main.py - サポートされているすべてのライブラリにパッチを適用**  

```
import boto3
import botocore
import requests
import sqlite3

from aws_xray_sdk.core import xray_recorder
from aws_xray_sdk.core import patch_all

patch_all()
```

単一のライブラリにパッチを適用するには、ライブラリ名のタプルを使用して `patch` を呼び出します。これを行うには、単一の要素リストを用意する必要があります。

**Example main.py - 特定のライブラリにパッチを適用**  

```
import boto3
import botocore
import requests
import mysql-connector-python

from aws_xray_sdk.core import xray_recorder
from aws_xray_sdk.core import patch

libraries = (['botocore'])
patch(libraries)
```

**注記**  
場合によっては、ライブラリにパッチを適用するために使用するキーがライブラリ名と一致しない場合があります。一部のキーは、1 つまたは複数のライブラリのエイリアスとして機能します。  
`httplib` – `[httplib](https://docs.python.org/2/library/httplib.html)` および [https://docs.python.org/3/library/http.client.html](https://docs.python.org/3/library/http.client.html)
`mysql` – `[mysql-connector-python](https://pypi.python.org/pypi/mysql-connector-python)`

## 非同期作業のコンテキストのトレース
<a name="xray-sdk-python-patching-async"></a>

`asyncio` によって統合されたライブラリの場合や、[非同期関数用のサブセグメントを作成](xray-sdk-python-subsegments.md)する場合は、非同期コンテキストで X-Ray SDK for Python も設定する必要があります。`AsyncContext` クラスをインポートし、そのインスタンスを X-Ray レコーダーに渡します。

**注記**  
ウェブフレームワークサポートライブラリ (例: AIOHTTP) は、`aws_xray_sdk.core.patcher` モジュールで処理することはできません。これらのライブラリは、サポートされているライブラリの `patcher` カタログに表示されません。

**Example main.py - aioboto3 にパッチを適用**  

```
import asyncio
import aioboto3
import requests

from aws_xray_sdk.core.async_context import AsyncContext
from aws_xray_sdk.core import xray_recorder
xray_recorder.configure(service='my_service', context=AsyncContext())
from aws_xray_sdk.core import patch

libraries = (['aioboto3'])
patch(libraries)
```