

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用適用於 Python 的 X-Ray 開發套件追蹤對下游 HTTP Web 服務的呼叫
<a name="xray-sdk-python-httpclients"></a>

**注意**  
X-Ray 開發套件/協助程式維護通知 – 在 2026 年 2 月 25 日， AWS X-Ray SDKs/協助程式將進入維護模式，其中 AWS 將限制 X-Ray 開發套件和協助程式版本，以僅解決安全問題。如需支援時間表的詳細資訊，請參閱 [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)。

當您的應用程式呼叫微服務或公有 HTTP APIs，您可以使用適用於 Python 的 X-Ray 開發套件來檢測這些呼叫，並將 API 做為下游服務新增至服務圖表。

若要檢測 HTTP 用戶端，請[修補您用來進行傳出呼叫的程式庫](xray-sdk-python-patching.md)。若您使用 `requests` 或 Python 內建的 HTTP 用戶端，只需進行這些作業。針對 `aiohttp`，請同時使用[非同步內容](xray-sdk-python-patching.md#xray-sdk-python-patching-async)設定記錄器。

若您使用 `aiohttp` 3 的用戶端 API，您也需要使用軟體開發套件提供的追蹤組態執行個體設定 `ClientSession` 的部分。

**Example [`aiohttp` 3 用戶端 API](https://github.com/aws/aws-xray-sdk-python#trace-aiohttp-client-requests)**  

```
from aws_xray_sdk.ext.aiohttp.client import aws_xray_trace_config

async def foo():
    trace_config = aws_xray_trace_config()
    async with ClientSession(loop=loop, trace_configs=[trace_config]) as session:
        async with session.get(url) as resp
            await resp.read()
```

當您檢測對下游 Web API 的呼叫時，適用於 Python 的 X-Ray 開發套件會記錄子區段，其中包含 HTTP 請求和回應的相關資訊。X-Ray 使用子區段來產生遠端 API 的推斷區段。

**Example 下游 HTTP 呼叫的子區段**  

```
{
  "id": "004f72be19cddc2a",
  "start_time": 1484786387.131,
  "end_time": 1484786387.501,
  "name": "names.example.com",
  "namespace": "remote",
  "http": {
    "request": {
      "method": "GET",
      "url": "https://names.example.com/"
    },
    "response": {
      "content_length": -1,
      "status": 200
    }
  }
}
```

**Example 下游 HTTP 呼叫的推斷區段**  

```
{
  "id": "168416dc2ea97781",
  "name": "names.example.com",
  "trace_id": "1-62be1272-1b71c4274f39f122afa64eab",
  "start_time": 1484786387.131,
  "end_time": 1484786387.501,
  "parent_id": "004f72be19cddc2a",
  "http": {
    "request": {
      "method": "GET",
      "url": "https://names.example.com/"
    },
    "response": {
      "content_length": -1,
      "status": 200
    }
  },
  "inferred": true
}
```