

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

# 直接從程式碼執行和偵錯 Lambda 函數
<a name="serverless-apps-run-debug-no-template"></a>

測試 AWS SAM 應用程式時，您可以選擇僅執行 Lambda 函數並進行偵錯，並排除 AWS SAM 範本定義的其他資源。此方法涉及使用 [CodeLens](https://code.visualstudio.com/blogs/2017/02/12/code-lens-roundup) 功能，在您可以直接叫用的原始程式碼中識別 Lambda 函數處理常式。

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


|  語言/執行時間 | CodeLens 指標要識別的 Lambda 函數條件 | 
| --- | --- | 
| C\# (dotnetcore2.1、3.1；.NET 5.0) | 函式具備以下特性：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/toolkit-for-vscode/latest/userguide/serverless-apps-run-debug-no-template.html)安裝並啟用 [ms-dotnettools.csharp 延伸模組](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp) （或任何提供 C\# 語言符號的延伸模組）。 | 
| JavaScript/TypeScript (Node.js 12.x、14.x) |  函式具備以下特性：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/toolkit-for-vscode/latest/userguide/serverless-apps-run-debug-no-template.html)  | 
| Python (3.7、3.8、3.9、3.10、3.11、3.12) |  函式具備以下特性：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/toolkit-for-vscode/latest/userguide/serverless-apps-run-debug-no-template.html)安裝並啟用 [ms-python.python 延伸](http://marketplace.visualstudio.com/items?itemName=ms-python.python)模組 （或任何提供 Python 語言符號的延伸模組）。 | 
| Java (8、8.al2、11) |  函式具備以下特性：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/toolkit-for-vscode/latest/userguide/serverless-apps-run-debug-no-template.html)已安裝並啟用 [redhat.java 延伸](https://marketplace.visualstudio.com/items?itemName=redhat.java)模組 （或任何提供 Java 語言符號的延伸模組）。無論您使用哪個 Java 執行時間，此擴充功能都需要 Java 11。<br />已安裝並啟用 [vscjava.vscode-java-debug ](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-debug)延伸模組 （或任何提供 Java 除錯器的延伸模組）。 | 
| Go (1.x) |  函式具備以下特性：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/toolkit-for-vscode/latest/userguide/serverless-apps-run-debug-no-template.html)[golang.go 延伸](https://marketplace.visualstudio.com/items?itemName=golang.Go)模組已安裝、設定和啟用。 | 

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




1. 若要在 VS 程式碼檔案總管中檢視應用程式檔案，請選擇**檢視**、**總管**。

1. 從應用程式資料夾 （例如 *my-sample-app*)，展開函數資料夾 （在此案例中為 *hello-world*)，然後開啟 `app.js` 檔案。

1. 在識別合格 Lambda 函數處理常式的 CodeLens 指示器中，選擇 `Add Debug Configuration`。  
![存取 Lambda 函數處理常式 CodeLens 指示器中的新增偵錯組態選項。](http://docs.aws.amazon.com/zh_tw/toolkit-for-vscode/latest/userguide/images/sam-codelens-lambda.png)

1. 在**命令面板**中，選取 AWS SAM 應用程式將在其中執行的執行時間。

1. 在 `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 函數。](http://docs.aws.amazon.com/zh_tw/toolkit-for-vscode/latest/userguide/images/direct_invoke_config_updated_with_payload_field.png)

   如需詳細了解 `launch.json` 檔案中的上述與其他項目，請參閱 [除錯無伺服器應用程式的組態選項](serverless-apps-run-debug-config-ref.md)。

1. 

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

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