ダウンストリームコールを実装するためのライブラリへのパッチ適用 - AWS X-Ray

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

ダウンストリームコールを実装するためのライブラリへのパッチ適用

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

サポートされているライブラリ
  • botocoreboto3 - 測定された AWS SDK for Python (Boto) クライアント。

  • pynamodb – 測定された Amazon DynamoDB クライアントの PynamoDB のバージョン。

  • aiobotocoreaioboto3 - 測定された asyncio統合バージョンの SDK for Python クライアント。

  • requestsaiohttp - 測定された高レベルの HTTP クライアント。

  • httplibhttp.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.corepatch_all 関数を使用します。httpliburllib などの一部のライブラリでは、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 つまたは複数のライブラリのエイリアスとして機能します。

ライブラリエイリアス

非同期作業のコンテキストのトレース

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)