AWS X-Ray
開発者ガイド

X-Ray SDK for Python を使用してカスタムサブセグメントを生成する

サブセグメントは、リクエストを処理するために行われた作業の詳細で、トレースのセグメントを拡張します。計測対象クライアントで呼び出しを行うたびに、X-Ray SDK は、サブセグメントで生成された情報を記録します。追加のサブセグメントを作成して、他のサブセグメントをグループ化したり、コードセクションのパフォーマンスを測定したり、注釈やメタデータを記録することができます。

サブセグメントを管理するには、begin_subsegment および end_subsegment メソッドを使用します。

例 main.py – カスタムサブセグメント

from aws_xray_sdk.core import xray_recorder subsegment = xray_recorder.begin_subsegment('annotations') subsegment.put_annotation('id', 12345) xray_recorder.end_subsegment()

同期関数のサブセグメントを作成するには、@xray_recorder.capture デコレータを使用します。サブセグメントの名前をキャプチャ関数に渡すことも、関数名を使用することもできます。

例 main.py – 関数サブセグメント

from aws_xray_sdk.core import xray_recorder @xray_recorder.capture('## create_user') def create_user(): ...

非同期関数の場合、@xray_recorder.capture_async デコレータを使用し、非同期コンテキストをレコーダーに渡します。

例 main.py – 非同期関数サブセグメント

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()) @xray_recorder.capture_async('## create_user') async def create_user(): ... async def main(): await myfunc()

セグメントまたは別のサブセグメント内にサブセグメントを作成する場合、X-Ray SDK for Python によってその ID が生成され、開始時刻と終了時刻が記録されます。

例 サブセグメントとメタデータ

"subsegments": [{ "id": "6f1605cd8a07cb70", "start_time": 1.480305974194E9, "end_time": 1.4803059742E9, "name": "Custom subsegment for UserModel.saveUser function", "metadata": { "debug": { "test": "Metadata string from UserModel.saveUser" } },