

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用本地调试函数 AWS SAM
<a name="serverless-sam-cli-using-debugging"></a>

您可以 AWS SAM 与各种 AWS 工具包和调试器配合使用，在本地测试和调试您的无服务器应用程序。通过逐步调试 Lambda 函数，您可以在本地环境中逐行或逐条指令地识别和修复应用程序中的问题。

您可以执行本地逐步调试的一些方法包括设置断点、检查变量以及逐行执行函数代码。本地分步调试使您可以发现和解决可能在云中遇到的问题，从而缩短反馈循环。

您可以使用 AWS 工具包进行调试，也可以在调试模式 AWS SAM 下运行。有关详细信息，请参阅本节中的主题。

## 使用 AWS 工具包
<a name="serverless-sam-cli-using-aws-toolkits"></a>

AWS 工具包是集成开发环境 (IDE) 插件，可让您执行许多常见的调试任务，例如设置断点、检查变量和逐行执行函数代码。 AWS 工具包使您可以更轻松地开发、调试和部署使用构建的无服务器应用程序。 AWS SAM它们提供了构建、测试、调试、部署和调用集成到 IDE 中的 Lambda 函数的体验。

有关可与之配合使用的 AWS 工具包的更多信息 AWS SAM，请参阅以下内容：
+ [AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/)
+ [AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/)
+ [AWS Toolkit for JetBrains](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/)

有各种各样的 AWS 工具包适用于 IDEs 和运行时的不同组合。下表列出了支持 AWS SAM 应用程序分步调试的常用 IDE/runtime 组合：


| IDE | 运行时 | AWS 工具包 | 逐步调试说明 | 
| --- | --- | --- | --- | 
| Visual Studio Code |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/serverless-application-model/latest/developerguide/serverless-sam-cli-using-debugging.html)  | AWS Toolkit for Visual Studio Code | 《AWS Toolkit for Visual Studio Code 用户指南》中的[使用 AWS Serverless Application](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/serverless-apps.html)  | 
| AWS Cloud9 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/serverless-application-model/latest/developerguide/serverless-sam-cli-using-debugging.html)  | AWS Cloud9，启用 AWS 工具包后 1 |  [使用《*AWS Cloud9 用户指南*》中的 AWS Toolkit 使用 AWS 无服务器应用程序](https://docs.aws.amazon.com/cloud9/latest/user-guide/serverless-apps-toolkit.html)。  | 
| WebStorm | Node.js | AWS Toolkit for JetBrains2 |  在 *AWS Toolkit for JetBrains* 中[运行（调用）或调试本地函数](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/invoke-lambda.html)  | 
| PyCharm | Python | AWS Toolkit for JetBrains2 |  在 *AWS Toolkit for JetBrains* 中[运行（调用）或调试本地函数](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/invoke-lambda.html)  | 
| Rider | .NET | AWS Toolkit for JetBrains2 |  在 *AWS Toolkit for JetBrains* 中[运行（调用）或调试本地函数](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/invoke-lambda.html)  | 
| IntelliJ | Java | AWS Toolkit for JetBrains2 |  在 *AWS Toolkit for JetBrains* 中[运行（调用）或调试本地函数](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/invoke-lambda.html)  | 
| GoLand | Go | AWS Toolkit for JetBrains2 |  在 *AWS Toolkit for JetBrains* 中[运行（调用）或调试本地函数](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/invoke-lambda.html)  | 

**备注**：

1.  AWS Cloud9 要使用逐步调试 AWS SAM 应用程序，必须启用 AWS Toolkit。有关更多信息，请参阅[《*AWS Cloud9 用户指南》*中的 “启用 AWS 工具包](https://docs.aws.amazon.com/cloud9/latest/user-guide/toolkit-welcome.html#access-toolkit)”。

1. 要使用分步调试 AWS SAM 应用程序，必须先按照中安装中的说明进行[安装](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/setup-toolkit.html)和配置。 AWS Toolkit for JetBrains AWS Toolkit for JetBrains*AWS Toolkit for JetBrains*

## 在调试模式下在 AWS SAM 本地运行
<a name="serverless-sam-cli-running-locally"></a>

[除了与 T AWS oolkits 集成外，您还可以在调试模式下运行 AWS SAM 以连接到第三方调试器，例如 [pt](https://pypi.org/project/ptvsd/) vsd 或 delve。](https://github.com/go-delve/delve)

要 AWS SAM 在调试模式下运行，请使用命令[sam local invoke](sam-cli-command-reference-sam-local-invoke.md)或[sam local start-api](sam-cli-command-reference-sam-local-start-api.md)使用`--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 SAM CLI 绑定到端口之前调用 API，以允许调试器进行连接。