直接從程式碼執行和偵錯 Lambda 函數 - AWS VS 程式碼工具組

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

直接從程式碼執行和偵錯 Lambda 函數

測試 AWS SAM 應用程式時,您可以選擇僅執行 Lambda 函數並除錯,並排除 AWS SAM 範本定義的其他資源。此方法涉及使用 CodeLens功能,在您可以直接叫用的原始程式碼中識別 Lambda 函數處理常式。

由 偵測到的 Lambda 處理常式 CodeLens 取決於您用於應用程式的語言和執行時間。

語言/執行時間 指標 CodeLens識別 Lambda 函數的條件

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

函式具備以下特性:
  • 這是公有類別的公有函數。

  • 它有一個或兩個參數。使用兩個參數時,第二個參數必須實作ILambdaContext介面。

  • 它在 VS Code 工作區資料夾中的父資料夾中有一個*.csproj檔案。

安裝並啟用 ms-dotnettools.csharp 延伸模組 (或任何為 C# 提供語言符號的延伸模組)。

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

函式具備以下特性:
  • 它是經過匯出的函式,最多有三個參數。

  • 它在 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)

函式具備以下特性:
  • 這是公有、非抽象類別的公有函數。

  • 它有一個、兩個或三個參數:

    • 一個參數:參數可以是任何項目。

    • 兩個參數:參數必須是 ,java.io.InputStreamjava.io.OutputStream OR 最後一個參數必須是 com.amazonaws.services.lambda.runtime.Context

    • 三個參數:參數必須是 java.io.InputStreamjava.io.OutputStreamAND,最後一個參數必須是 com.amazonaws.services.lambda.runtime.Context

  • 它在 VS Code 工作區資料夾中的父資料夾中具有 build.gradle(梯度) 或 pom.xml(麥文) 檔案。

已安裝並啟用 redhat.java 延伸模組 (或任何提供 Java 語言符號的延伸模組)。無論您使用哪個 Java 執行期,此延伸模組都需要 Java 11。

已安裝並啟用 vscjava.vscode-java-debug 延伸模組 (或任何提供 Java 偵錯工具的延伸模組)。

Go (1.x)

函式具備以下特性:
  • 它是最上層函數。

  • 它需要 0 到 2 個引數。如果有兩個引數,第一個引數必須實作 context.Context

  • 它傳回 0 到 2 個引數。如果超過 0 個引數,最後一個引數必須實作 error

  • 它在 VS Code 工作區資料夾中有一個go.mod檔案。

golang.go 延伸模組已安裝、設定和啟用。

如何從應用程式程式碼直接執行與除錯無伺服器應用程式

  1. 若要在 VS Code File Explorer 中檢視應用程式檔案,請選擇檢視 Explorer

  2. 從應用程式資料夾 (例如 my-sample-app),展開函數資料夾 (在此情況下為 hello-world ) 並開啟app.js檔案。

  3. 在識別合格 Lambda 函數處理常式的 CodeLens 指示器中,選擇 Add Debug Configuration

    存取 Lambda 函數處理常式 CodeLens 指示器中的新增偵錯組態選項。
  4. 命令面板 中,選取 AWS SAM 應用程式將在其中執行的執行時間。

  5. launch.json 檔案的編輯器中編輯或確認下列組態屬性的值:

    • "name" – 輸入方便識讀的名稱,讓它顯示在 Run (執行) 檢視的 Configuration (組態) 下拉式欄位中。

    • "target" – 確認值為 "code",以便直接叫用 Lambda 函式處理常式。

    • "lambdaHandler" – 輸入程式碼中所用方法的名稱,Lambda 會呼叫此程式碼來叫用您的函數。例如,對於 中的應用程式 JavaScript,預設值為 app.lambdaHandler

    • "projectRoot" – 為包含 Lambda 函式的應用程式輸入檔案路徑。

    • "runtime" – 輸入或確認 Lambda 執行環境的有效執行時間,例如 "nodejs.12x"

    • "payload" – 選擇下列其中一個選項來定義您想要提供給 Lambda 函式作為輸入的事件酬載:

      • "json":定義事件承載的JSON格式化鍵值對。

      • "path":作為事件酬載的檔案的路徑。

      在下面的範例中, "json"選項會定義承載。

    設定 launch.json 檔案以直接叫用 Lambda 函數。

    如需詳細了解 launch.json 檔案中的上述與其他項目,請參閱 除錯無伺服器應用程式的組態選項

  6. 如果您對偵錯組態感到滿意,若要開始偵錯,請選擇 旁邊的綠色播放箭頭RUN

    當偵錯工作階段開始時,DEBUGCONSOLE面板會顯示偵錯輸出,並顯示 Lambda 函數傳回的任何值。(偵錯 AWS SAM 應用程式時,會在輸出面板中選取 AWS Toolkit 作為輸出頻道。)