翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ダウンストリーム呼び出しを計測するためのライブラリへのパッチ適用
ダウンストリーム呼び出しを実装するには、X-Ray SDK for Python を使用して、アプリケーションが使用するライブラリにパッチを適用します。X-Ray SDK for Python では、次のライブラリにパッチを適用できます。
サポートされているライブラリ
-
pynamodb
— Amazon DynamoDB クライアントの PynamoDB のバージョンを実装します。 -
aiobotocore
,aioboto3
— 計測asyncio-実装された Python クライアント用 SDK のバージョン。 -
httplib
,http.client
— 実装された低レベルの HTTP クライアントおよびそれらを使用する高レベルのライブラリ。 -
sqlite3
— 実装された SQLite クライアント。 -
mysql-connector-python
— 実装された MySQL クライアント。 -
pg8000
— 実装された純粋な 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
統合ライブラリ、または非同期関数のサブセグメントを作成するでは、非同期コンテキストで Python 用 X-Ray SDK も設定する必要があります。をインポートします。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)