コードから Lambda 関数を直接実行およびデバッグ - AWS Toolkit for VS Code

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

コードから Lambda 関数を直接実行およびデバッグ

AWS SAM アプリケーションをテストするときは、Lambda 関数のみを実行してデバッグし、 AWS SAM テンプレートが定義する他のリソースを除外できます。このアプローチでは、 CodeLens機能を使用して、直接呼び出すことができるソースコード内の Lambda 関数ハンドラーを識別します。

によって検出される Lambda ハンドラーは、アプリケーションで使用している言語とランタイム CodeLens によって異なります。

言語/ランタイム インジケータによって CodeLens識別される Lambda 関数の基準

C# (dotnetcore2.1、3.1; 。NET 5.0)

関数には以下の特徴があります。
  • パブリッククラスのパブリック関数です。

  • 1 つまたは 2 つのパラメータがあります。2 つのパラメータを使用する場合、2 番目のパラメータは ILambdaContext インターフェイスを実装する必要があります。

  • VS Code ワークスペースフォルダー内の親フォルダーに *.csproj ファイルがあります。

ms-dotnettools.csharp 拡張機能 (または C# の言語シンボルを提供する拡張機能) がインストールされ、有効になっています。

JavaScript/ TypeScript (Node.js 12.x、14.x)

関数には以下の特徴があります。
  • 最大 3 つのパラメータがあるエクスポートされた関数です。

  • VS Code ワークスペースフォルダー内の親フォルダーに package.json ファイルがあります。

Python (3.7、3.8、3.9、3.10、3.11、3.12)

関数には以下の特徴があります。
  • 上位レベルの関数です。

  • VS Code ワークスペースフォルダー内の親フォルダーに requirements.txt ファイルがあります。

ms-python.python 拡張機能 (または Python の言語シンボルを提供する拡張機能) がインストールされ、有効になっています。

Java (8, 8.al2, 11)

関数には以下の特徴があります。
  • これは、パブリックで非抽象クラスのパブリック関数です。

  • 1 つ、2 つ、または 3 つのパラメータがあります。

    • 1 つのパラメータ: パラメータは何でもかまいません。

    • 2 つのパラメータ: パラメーターは java.io.InputStreamjava.io.OutputStream、または、最後のパラメータは com.amazonaws.services.lambda.runtime.Context である必要があります。

    • 3 つのパラメータ: パラメータは java.io.InputStreamで、java.io.OutputStreamAND最後のパラメータは である必要がありますcom.amazonaws.services.lambda.runtime.Context

  • VS Code ワークスペースフォルダー内の親フォルダーに build.gradle (Gradle) や pom.xml (Maven) ファイル があります。

redhat.java 拡張機能 (または Java の言語シンボルを提供する拡張機能) がインストールされ、有効になっています。この拡張機能には、どの Java ランタイムを使用していても Java 11 が必要です。

vscjava.vscode-java-debug 拡張機能 (または Java デバッガーを提供する拡張機能) がインストールされ、有効になっています。

Go (1.x)

関数には以下の特徴があります。
  • 上位レベルの関数です。

  • 0 から 2 までの引数を取ります。2 つの引数がある場合は、最初の引数が context.Context を実装する必要があります。

  • 0 から 2 までの引数を返します。0 以上の引数がある場合は、最後の引数が error を実装する必要があります。

  • VS Code ワークスペースフォルダー内に go.mod ファイルがあります。

golang.go 拡張機能 がインストールされ、構成され、有効になっています。

サーバーレスアプリケーションをアプリケーションコードから直接実行およびデバッグ

  1. VS Code のファイルエクスプローラでアプリケーションファイルを表示するには、[View] (表示)、[Explorer] (エクスプローラ) を選択します。

  2. アプリケーションフォルダ (例: my-sample-app) から関数フォルダ (この場合は hello-world ) を展開し、 app.js ファイルを開きます。

  3. 対象となる Lambda 関数ハンドラーを識別する CodeLens インジケータで、 を選択しますAdd Debug Configuration

    Lambda 関数ハンドラーの CodeLens インジケータでデバッグ設定の追加オプションにアクセスします。
  4. [Command Palette] (コマンドパレット) で、 AWS SAM アプリケーションが実行するランタイムを選択します。

  5. launch.json ファイルのエディタでは、次の設定プロパティの値を編集または確認します。

    • "name" – 読みやすい名前を入力して、[実行] ビューの [設定] ドロップダウンフィールドに表示します。

    • "target" – 値が "code" で、Lambda 関数ハンドラを直接呼び出せることを確認します。

    • "lambdaHandler" – 関数を呼び出すために Lambda が呼び出すコード内のメソッドの名前を入力します。例えば、 のアプリケーションの場合 JavaScript、デフォルトは ですapp.lambdaHandler

    • "projectRoot" – Lambda 関数を含むアプリケーションファイルにパスを入力します。

    • "runtime" – Lambda 実行環境の有効なランタイムを入力または確認します。例えば、"nodejs.12x"

    • "payload" – 以下のいずれかのオプションを選択して、Lambda 関数に入力として提供するイベントペイロードを定義します。

      • "json": イベントペイロードを定義するJSONフォーマットされたキーと値のペア。

      • "path": イベントペイロードとして使用されるファイルへのパス。

      以下の例では、"json" オプションは、ペイロードを定義します。

    Lambda 関数を直接呼び出す launch.json ファイルの設定。

    launch.json ファイル内のこれらと他の入力に関する詳細は、「サーバーレスアプリケーションのデバッグ用設定オプション」を参照してください。

  6. デバッグ設定に満足している場合、デバッグを開始するには、 の横にある緑色の再生矢印を選択しますRUN

    デバッグセッションが開始されると、DEBUGCONSOLEパネルにデバッグ出力が表示され、Lambda 関数が返す値が表示されます。( AWS SAM アプリケーションをデバッグする場合、AWS Toolkit出力パネルの出力チャネルとして選択されます。)