翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ダウンストリームコールを実装するためのライブラリへのパッチ適用
ダウンストリーム呼び出しを測定するには、X-Ray SDK for Python を使用して、アプリケーションが使用するライブラリにパッチを適用します。X-Ray SDK for Python では、以下のライブラリにパッチを適用できます。
サポートされているライブラリ
-
pynamodb
– 測定された Amazon DynamoDB クライアントの PynamoDB のバージョン。 -
aiobotocore
、aioboto3
- 測定された asyncio統合バージョンの SDK for Python クライアント。 -
httplib
、http.client
- 測定された低レベルの HTTP クライアントおよびそれらを使用する高レベルのライブラリ。 -
sqlite3
- SQLite クライアントを測定します。 -
mysql-connector-python
- MySQL クライアントを測定します。 -
pg8000
- Pure-Python PostgreSQL インターフェイスを測定します。 -
psycopg2
- PostgreSQL データベースアダプターを測定します。 -
pymongo
- MongoDB クライアントを測定します。 -
pymysql
- MySQL と MariaDB 用 PyMySQL ベースクライアントを測定します。
パッチ適用されたライブラリを使用すると、X-Ray SDK for Python は呼び出しのサブセグメントが作成され、リクエストとレスポンスの情報を記録します。SDK ミドルウェアまたは AWS Lambdaのいずれかから、サブセグメントを作成するためにSDK でセグメントを使用できる必要があります。
注記
SQLAlchemy ORM を使用する場合は、SQLAlchemy のセッションクラスとクエリクラスの SDK のバージョンをインポートして、SQL クエリを追加できます。手順については、Use SQLAlchemy ORM
使用可能なすべてのライブラリにパッチを適用するには、aws_xray_sdk.core
の patch_all
関数を使用します。httplib
や urllib
などの一部のライブラリでは、patch_all(double_patch=True)
を呼び出して二重パッチ適用を有効にすることが必要な場合があります。
例 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
を呼び出します。これを行うには、単一の要素リストを用意する必要があります。
例 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
およびhttp.client
-
mysql
–mysql-connector-python
非同期作業のコンテキストのトレース
asyncio
によって統合されたライブラリの場合や、非同期関数用のサブセグメントを作成する場合は、非同期コンテキストで X-Ray SDK for Python も設定する必要があります。AsyncContext
クラスをインポートし、そのインスタンスを X-Ray レコーダーに渡します。
注記
ウェブフレームワークサポートライブラリ (例: AIOHTTP) は、aws_xray_sdk.core.patcher
モジュールで処理することはできません。これらのライブラリは、サポートされているライブラリの patcher
カタログに表示されません。
例 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)