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 コール用の X-Ray SDK の使用が必要となります。