このページでは、開発中に 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 サーバレストレーサ API」を参照してください。

次のステップ

サーバーレス トレーサ インストゥルメンテーションの確認 の準備ができました。 

Node.js サーバレストレーサとエンドユーザモニタリングの統合」を行うことや、「Node.js サーバレストレーサ API」を使用することもできます。

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