AWS Lambda
開発者ガイド

AWS X-Ray を使用した Lambda ベースのアプリケーションのトレース

AWS X-Ray は、AWS Lambda アプリケーションのパフォーマンスに関する問題を検出、分析、および最適化できる AWS のサービスです。X-Ray は、アプリケーションを構成する Lambda のサービスやアップストリームまたはダウンストリームサービスからメタデータを収集します。X-Ray はこのメタデータを使用して詳細なサービスグラフを生成します。これによりパフォーマンスのボトルネック、レイテンシーのスパイク、その他 Lambda アプリケーションに影響を及ぼす問題が図示されます。

AWS X-Ray サービスマップ上の Lambda 」を使用して問題のあるリソースやコンポーネントを識別したら、そのリクエストが視覚的に表現された部分を拡大して確認できます。この視覚化には、イベントソースが Lambda 関数をトリガーした時から関数の実行が完了されるまでが含まれます。X-Ray では、Lambda 関数が他のサービスに対して実行したダウンストリーム呼び出しに関する情報など、関数のオペレーションの内訳が提供されます。さらに、X-Ray を Lambda に統合することで、AWS Lambda サービスのオーバーヘッドが視認できるようになります。これは、リクエストのドウェル時間や呼び出し数などの詳細を表示することで行われます。

注記

現在 X-Ray と統合されているサービスのみが、Lambda トレースとは別にスタンドアロントレースとして表示されます。X-Ray を現在サポートしているサービスの一覧については、「AWS X-Ray を他の AWS のサービスと統合する」を参照してください。

AWS X-Ray サービスマップ上の Lambda

X-Ray では、Lambda で処理されるリクエストのサービスマップに 3 つのタイプのノードが表示されます。

  • Lambda サービス (AWS::Lambda) – このタイプのノードは、Lambda サービスでリクエストの処理にかかった時間を表します。時間は Lambda が最初にリクエストを受信したときに開始され、リクエストが Lambda サービスを離れたときに終了します。

  • Lambda 関数 (AWS::Lambda::Function) – このタイプのノードは Lambda 関数の実行時間を表します。

  • ダウンストリームサービス呼び出し – このタイプでは、Lambda 関数内からのお各ダウンストリームサービス呼び出が個別のノードで表されます。

次の図では、ノードは (左から右に) Lambda サービス、ユーザー関数、および Amazon S3 に対するダウンストリーム呼び出しを表します。

詳細については、サービスマップの表示を参照してください。

AWS X-Ray トレースとしての Lambda

サービスマップから拡大して Lambda 関数のトレースビューを表示できます。トレースには、関数呼び出しに関する詳細情報が、セグメントおよびサブセグメントとして表示されます。

  • Lambda サービスセグメント – このセグメントは、関数の呼び出しに使用されるイベントソースに応じて異なる情報を表します。

    • 同期とストリームイベントソース – サービスセグメントは Lambda サービスがリクエストやイベントを受信したときからリクエストが Lambda サービスを離脱したとき (リクエストの最後の呼び出しが完了した後) までを計測します。

    • 非同期 - サービスセグメントは応答時間を表します。つまり、Lambda サービスが 202 レスポンスをクライアントに返すまでにかかった時間です。

    Lambda サービスセグメントには、2 つのタイプのサブセグメントを含めることができます。

    • ドウェル時間 (非同期呼び出しのみ) – 関数が呼び出される前に Lambda サービス内で経過した時間を表します。このサブセグメントは Lambda サービスがリクエストやイベントを受信したときに開始され、Lambda 関数が最初に呼び出されたときに終了します。

    • 試行 – 単一の呼び出し試行を表します。Lambda サービスによって導入されたオーバーヘッドを含みます。オーバーヘッドの例としては、関数のコードの初期化にかかった時間や関数の実行時間があります。

  • Lambda 関数セグメント - 指定された呼び出し試行における関数の実行時間を表します。関数ハンドラが実行を開始したときから始まり、関数が終了すると終了します。このセグメントには 3 タイプのサブセグメントを含めることができます。

    • 初期化 - 関数の initialization コードの実行で経過した時間です。Lambda 関数ハンドラまたは静的イニシャライザ外部のコードとして定義されます。

    • ダウンストリーム呼び出し - Lambda 関数のコードから他の AWS のサービスに対する呼び出しです。

    • カスタムサブセグメント - X-Ray SDK を使用して Lambda 関数セグメントに追加できるカスタムサブセグメントまたはユーザーの注釈です。

注記

トレースされる各呼び出しについて、Lambda は Lambda サービスセグメントとそのすべてのサブセグメントを発行します。これらのセグメントはランタイムに関係なく出力され、AWS API 呼び出し用の XRay SDK の使用が必要となります。