使用 本機偵錯函數 AWS SAM - AWS Serverless Application Model

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

使用 本機偵錯函數 AWS SAM

您可以使用 AWS SAM 搭配各種 AWS 工具組和偵錯工具,在本機測試和偵錯無伺服器應用程式。Lambda 函數的逐步偵錯可讓您在本機環境中一次識別和修正應用程式中的問題一行或指令。

您可以執行本機逐步偵錯的一些方式包括設定中斷點、檢查變數,以及一次一行執行函數程式碼。本機逐步偵錯可讓您尋找和故障診斷在雲端中可能遇到的問題,藉此加強回饋迴圈。

您可以使用 AWS Toolkits 進行偵錯,也可以 AWS SAM 在偵錯模式下執行。如需詳細資訊,請參閱本節中的主題。

使用 AWS 工具組

AWS 工具組是整合的開發環境 (IDE) 外掛程式,可讓您一次一行執行許多常見的偵錯任務,例如設定中斷點、檢查變數和執行函數程式碼。 AWS 工具組可讓您更輕鬆地開發、偵錯和部署使用 建置的無伺服器應用程式 AWS SAM。它們提供建置、測試、偵錯、部署和叫用整合到 IDE 的 Lambda 函數的體驗。

如需可與 搭配使用之 AWS Toolkit 的詳細資訊 AWS SAM,請參閱下列內容:

有各種 AWS Toolkit 可與不同的 IDEs 和執行時間組合搭配使用。下表列出支援 AWS SAM 應用程式逐步偵錯的常見 IDE/執行時間組合:

IDE 執行期 AWS 工具組 步驟式偵錯的指示
Visual Studio 程式碼
  • Node.js

  • Python

  • .NET

  • Java

  • Go

AWS Toolkit for Visual Studio Code 在 AWS 無伺服器應用程式 AWS Toolkit for Visual Studio Code 使用者指南中使用
AWS Cloud9
  • Node.js

  • Python

AWS Cloud9,啟用 AWS Toolkit1

使用 AWS Cloud9 AWS 使用者指南中的 Toolkit 使用無 AWS 伺服器應用程式

WebStorm Node.js AWS Toolkit for JetBrains2

在 中執行 (叫用) 或偵錯本機函數 AWS Toolkit for JetBrains

PyCharm Python AWS Toolkit for JetBrains2

在 中執行 (叫用) 或偵錯本機函數 AWS Toolkit for JetBrains

Rider .NET AWS Toolkit for JetBrains2

在 中執行 (叫用) 或偵錯本機函數 AWS Toolkit for JetBrains

IntelliJ Java AWS Toolkit for JetBrains2

在 中執行 (叫用) 或偵錯本機函數 AWS Toolkit for JetBrains

GoLand Go AWS Toolkit for JetBrains2

在 中執行 (叫用) 或偵錯本機函數 AWS Toolkit for JetBrains

備註

  1. 若要使用 AWS Cloud9 逐步偵錯 AWS SAM 應用程式,必須啟用 AWS Toolkit。如需詳細資訊,請參閱AWS Cloud9 《 使用者指南》中的啟用 AWS Toolkit

  2. 若要使用 AWS Toolkit for JetBrains 進行逐步偵錯 AWS SAM 應用程式,您必須先依照在 中安裝 中的指示進行安裝 AWS Toolkit for JetBrains和設定AWS Toolkit for JetBrains

在偵錯模式下於 AWS SAM 本機執行

除了與 AWS Toolkits 整合之外,您也可以 AWS SAM 在「偵錯模式」中執行,以連接至第三方偵錯工具,例如 ptvsddelve

若要 AWS SAM 在偵錯模式下執行,請使用 命令sam local invokesam local start-api搭配 --debug-port-d選項。

例如:

# Invoke a function locally in debug mode on port 5858 sam local invoke -d 5858 <function logical id> # Start local API Gateway in debug mode on port 5858 sam local start-api -d 5858
注意

如果您使用的是 sam local start-api,本機 API Gateway 執行個體會公開所有 Lambda 函數。不過,由於您可以指定單一偵錯連接埠,因此一次只能偵錯一個函數。您需要在 AWS SAMCLI繫結至連接埠之前呼叫您的 API,以允許偵錯器連線。