다운스트림 호출 구성을 위해 라이브러리 패치 - AWS X-Ray

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

다운스트림 호출 구성을 위해 라이브러리 패치

다운스트림 호출을 구성하려면 Python용 X-Ray SDK를 사용하여 애플리케이션이 사용하는 라이브러리를 패치합니다. Python용 X-Ray SDK는 다음 라이브러리를 패치할 수 있습니다.

지원되는 라이브러리
  • botocore, boto3 – AWS SDK for Python (Boto) 클라이언트를 구성합니다.

  • pynamodb – Amazon DynamoDB 클라이언트의 PynamoDB 버전을 구성합니다.

  • aiobotocore, aioboto3 — Python 클라이언트용 비동기 통합 SDK 버전을 구성합니다.

  • requests, aiohttp – 상위 HTTP 클라이언트를 구성합니다.

  • httplib, http.client – 하위 HTTP 클라이언트와 이러한 클라이언트를 사용하는 상위 라이브러리를 구성합니다.

  • sqlite3 – SQLite 클라이언트를 구성합니다.

  • mysql-connector-python – MySQL 클라이언트를 구성합니다.

  • pg8000 – 순수 Python을 구성합니다.

  • psycopg2 – PostgreSQL 데이터베이스 어댑터를 구성합니다.

  • pymongo – MongoDB 클라이언트를 구성합니다.

  • pymysql – MySQL 및 MariaDB 클라이언트에 기반한 PyMySQL을 구성합니다.

패치된 라이브러리를 사용하면 Python용 X-Ray SDK는 직접 호출에 대한 하위 세그먼트를 생성하고 요청 및 응답의 정보를 기록합니다. SDK가 SDK 미들웨어 또는 AWS Lambda에서 하위 세그먼트를 생성하려면 세그먼트를 사용할 수 있어야 합니다.

참고

SQLAlchemy ORM을 사용하는 경우, SQLAlchemy 세션의 SDK 버전과 쿼리 클래스를 가져와서 SQL 쿼리를 구성할 수 있습니다. 지침은 SQLAlchemy ORM 사용을 참조하십시오.

사용 가능한 모든 라이브러리를 패치하려면 aws_xray_sdk.core에서 patch_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)
참고

라이브러리를 패치하는 데 사용한 키가 라이브러리 이름과 맞지 않는 경우도 있습니다. 일부 키는 하나 이상의 라이브러리에 대해 별칭 역할을 합니다.

라이브러리 별칭

비동기 작업에 대한 컨텍스트 추적

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)