AWS Lambda および AWS X-Ray
AWS X-Ray を使用して AWS Lambda 関数をトレースできます。Lambda は X-Ray デーモンを実行し、関数の呼び出しと実行に関する詳細でセグメントを記録します。さらに計測するには、X-Ray SDK を関数にバンドルして送信呼び出しを記録し、注釈とメタデータを追加できます。
Lambda 関数が他の計測サービスより呼び出されると、Lambda は、追加の設定なしで、すでにサンプルを作成したリクエストをトレースします。アップストリームサービスは、計測されたウェブアプリケーションや別の Lambda 関数とすることができます。サービスでは、計測された AWS SDK クライアントで直接、または計測された HTTP クライアントで API Gateway API を呼び出して、関数を呼び出すことができます。
AWS X-Ray は AWS Lambda およびAmazon SQS を使用したイベント駆動型アプリケーションのトレースをサポートします。CloudWatch コンソールを使用すると、各リクエストが Amazon SQS のキューに入れられ、ダウンストリーム Lambda 関数によって処理される過程を各リクエストの接続されたビューで確認できます。アップストリームメッセージプロデューサーからのトレースは、ダウンストリーム Lambda コンシューマーノードからのトレースに自動的にリンクされるため、アプリケーションのエンドツーエンドのビューが作成されます。詳細については、「イベント駆動型アプリケーションのトレース」を参照してください。
注記
ダウンストリーム Lambda 関数でトレースを有効にした場合は、ダウンストリーム関数がトレースを生成するために、ダウンストリーム関数を呼び出すルート Lambda 関数でもトレースを有効にする必要があります。
Lambda 関数がスケジュールで実行される場合や、計測されていないサービスによって呼び出される場合は、アクティブトレースで呼び出しをサンプルおよび記録するように Lambda を設定できます。
AWS Lambda 関数で X-Ray 統合を設定するには
-
AWS Lambda コンソール
を開きます。 -
左のナビゲーションペインから [関数] を選択します。
-
関数を選択します。
-
[設定] タブで、[その他の監視ツール] カードが表示されるまで下へスクロールします。このカードは、左側のナビゲーションペインで [モニタリングおよび運用ツール] を選択して見つけることもできます。
-
[Edit] (編集) を選択します。
-
[AWS X-Ray] で、[アクティブトレース] を有効にします。
対応する X-Ray SDK、 Lambda があるランタイムでも、X-Ray デーモンが実行されます。
Lambda の X-Ray SDK
-
Go X-Ray SDK for Go – Go 1.7 以降のランタイム
-
X-Ray SDK for Java – Java 8 ランタイム
-
X-Ray SDK for Node.js – Node.js 4.3 以降のランタイム
-
X-Ray SDK for Python – Python 2.7、Python 3.6 以降のランタイム
-
X-Ray SDK for .NET – .NET Core 2.0 以降のランタイム
Lambda で X-Ray SDK を使用するには、新しいバージョンを作成するたびに、関数コードでバンドルします。Lambda 関数は、他のサービスで実行されているアプリケーションを計測する場合と同じメソッドを使用して計測することができます。主な違いは、SDK を使用して、受信リクエストの計測、サンプリングの決定、セグメントの作成を行わないことです。
Lambda 関数とウェブアプリケーションの計測のもう 1 つの違いは、Lambda が作成して X-Ray に送信するセグメントは、関数コードで変更できないことです。サブセグメントを作成し、そこに注釈とメタデータを記録できますが、親セグメントに注釈とメタデータを追加することはできません。
詳細については、AWS 開発者ガイドの「AWS Lambda X-Ray を使用する」を参照してください。