このページでは、開発中に AWS Lambda 関数を使用して Node.js サーバーレストレーサを使用する方法について説明します。推奨される方法は、AppDynamics AWS Lambda Extension を使用することです。「AppDynamics AWS Lambda Extension を使用して、実行時にサーバレス APM をインストゥルメントする」を参照してください。

始める前に

AWS Lambda 向けサーバーレス APM に登録し、環境変数を設定すると、インストゥルメンテーションを開始できます。セットアップが次の要件を満たしていることを確認します。

このマニュアルには、Amazon Web Services(AWS)のマニュアルへのリンクが記載されています。Amazon は自身のマニュアルを管理しているため、AppDynamics は Amazon のマニュアルの精度については一切保証しません。

ES6 の開発時に npm を使用した Node.js サーバーレストレーサのインストール

ES6 ラムダをインストゥルメント化するために、次の手順を使用して、Node.js サーバーレストレーサをインストールすることができます。

  1. 次のコマンドを実行して、トレーサをインポートします。

    import tracer from "appdynamics-lambda-tracer";
    
    tracer.init();
    JS
  2. アプリケーションにトレーサを追加するには、Lambda handler 関数が含まれているアプリケーションコードのプライマリファイルに require ステートメントを追加します。

    const tracer = require('appdynamics-lambda-tracer');
    JS
  3. Node.js サーバーレストレーサを使用した関数のインストゥルメント化次のコードスニペットは、トレーサを使用してサーバーレス関数をインストゥルメント化する方法を示しています。

    export const handler = tracer.functionWrapper(async (event) => {
      // YOUR CODE HERE
      return "Hello World";
    });
    JS

CommonJS の開発時に npm を使用した Node.js サーバーレストレーサのインストール

CommonJS ラムダをインストゥルメント化するには、AWS Lambda Extension を推奨します。次の手順を使用して、Node.js サーバーレストレーサをインストールすることもできます。

  1. Node.js サーバレストレーサのダウンロード
  2. Requireステートメントの追加
  3. Node.js サーバレストレーサを使用した関数のインストゥルメント化

Node.js サーバレストレーサのダウンロード

トレーサをインストールするには、package.json ファイルが存在するディレクトリに移動します。次の npm コマンドを実行します。

npm install appdynamics-lambda-tracer --save
JS

コマンドは、トレーサの依存関係を node_modules/ フォルダにダウンロードします。

Requireステートメントの追加

アプリケーションにトレーサを追加するには、AWS Lambda handler 関数が含まれているアプリケーションコードのプライマリファイルに require ステートメントを追加します。

const tracer = require('appdynamics-lambda-tracer');
JS

他の require ステートメントの前にトレーサの require ステートメントを追加することを忘れないでください。 

Node.js サーバレストレーサを使用した関数のインストゥルメント化

tracer.init メソッドを呼び出して、require ステートメント内の Node.js サーバレストレーサを初期化します。

インストゥルメンテーションを完了するには、コードの最後の行として tracer.mainModule(module) を呼び出します。 

次のコードスニペットは、トレーサを使用してサーバレス関数をインストゥルメント化する方法を示しています。

const tracer = require('appdynamics-lambda-tracer'); 
//Initialize the tracer
tracer.init();
 
// Your AWS Lambda handler function code here, for example:
exports.handler = async (event) => {
    // TODO implement
    const response = {
        statusCode: 200,
        body: JSON.stringify('Hello from Lambda!'),
    };
    return response;
};
//Complete the instrumentation
tracer.mainModule(module);
JS

デフォルトでは、Node.js サーバレストレーサは、HTTP または AWS Lambda 間のコールを介して渡された終了コールを自動的に検出します。関数がこれらのプロトコルを使用しない場合は、終了コールを作成する必要があります。「Node.js Serverless Tracer API」を参照してください。

次のステップ

Verify the Serverless Tracer Instrumentation の準備ができました。 

Integrate the Node.js Serverless Tracer with End User Monitoring」を行うことや、「Node.js Serverless Tracer API」を使用することもできます。

これらのマニュアルで使用されている Amazon Web サービス、AWS ロゴ、AWS、およびその他の AWS マークは、米国およびその他の国における Amazon.com, Inc. またはその関連会社の商標です。